{"version":3,"file":"static/js/main.b74133a8.js","mappings":"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,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,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CAC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U,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,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,SAA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iBACP,IAAO,SACP,IAAO,iBACP,IAAO,iBACP,IAAO,KACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,IACP,IAAO,OACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,IACP,IAAO,SACP,IAAO,MACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,KACP,IAAO,IACP,IAAO,gBACP,IAAO,SACP,IAAO,MACP,IAAO,SACP,IAAO,OACP,IAAO,eACP,IAAO,MACP,IAAO,IACP,IAAO,UACP,IAAO,OACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,UACP,IAAO,MACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,OACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,SACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,OACP,IAAO,KACP,IAAO,OACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,SACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,KACP,IAAO,SACP,IAAO,IACP,IAAO,OACP,IAAO,2BACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,SACP,IAAO,KACP,IAAO,OACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,qBACP,IAAO,KACP,IAAO,SACP,IAAO,MACP,IAAO,qBACP,IAAO,SACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,eACP,IAAO,OACP,IAAO,IACP,IAAO,UACP,IAAO,SACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,SACP,IAAO,gBACP,IAAO,UACP,IAAO,sBACP,IAAO,qBACP,IAAO,SACP,IAAO,KACP,IAAO,SACP,IAAO,qBACP,IAAO,SACP,IAAO,QCpWX,SAAWtC,GACP,IAAIuC,EAAiB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAC7G,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MA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SG,EAAMpH,WAAY,KAAKgvE,YAAYirN,EAAY5uK,WAAW,IAClF/rH,EAAIy6R,EAAev6R,OAOnC,CAER,CA4BO,SAAS06R,GAAsBv7P,EAAU6tP,GAC5C,IAAI2N,EASJ,OARAx7P,EAASz+B,UAAUk6R,aAAc,EAC5BroN,GAAkBy6M,GAKnB2N,EAAYx7P,GAJZw7P,EAAYx7P,EAASqpD,KAAKwkM,IAChBtsR,UAAYD,OAAOuqB,OAAOmU,EAASz+B,WAK1Ci6R,CACX,CAEA,ICpKIE,GACAC,GACAlyH,GACAmyH,GCFAA,GACAC,GF4KAlB,GAAY,CAAE1pK,SAAS,IAVC,WACxB,SAAS6qK,IACT,CAMA,OAJAA,EAAOv6R,UAAU0vH,QAAU,SAAUwpK,EAAgB5M,EAAQ4K,GAEzD,YADe,IAAX5K,IAAqBA,EAAS,CAAC,GAC5BrkP,GAAOixP,EAAgB5M,EAClC,EACOiO,CACX,CAT4B,KAUY7qK,SG9KpC2kI,GAAa,CACb,SACA,QACA,cACA,4BACA,kCACA,wCACA,oCACA,uBACA,0BACA,0BACA,2CAEAmmC,GAAc,CACd,CAAErnL,UAAW,OAAQoS,SAAU,yBAC/B,CAAEpS,UAAW,aAAcoS,SAAU,+BACrC,CAAEpS,UAAW,QAASoS,SAAU,0BAChC,CAAEpS,UAAW,QAASoS,SAAU,0BAChC,CAAEpS,UAAW,OAAQoS,SAAU,qCAE/Bk1K,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,qBA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CN,KAAM,WACN,SAAY,WACZ,WAAc,aACd,SAAY,WACZ,eAAkB,eAClB,iBAAoB,iBACpB,eAAkB,eAClB,SAAY,WACZ,KAAQ,QAEZxG,EAASgS,WAAa,CAClB,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,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV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C,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SA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KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,OAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,OAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,OAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,OAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,OAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAE7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,KAAM,MAC7CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,MAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,MAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,MAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,MAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,MAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,MAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,MAC9CV,KAAK4lb,yBAAyBllb,SAAS,KAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yBAAyBllb,SAAS,MAAO,OAC9CV,KAAK4lb,yB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C3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAM/E7B,EAA8BsD,gBAAkB,CAC5C,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK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IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,GAMxC1D,EAA8B8D,kBAAoB,CAC9C,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,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,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e,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,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,GAAOrjoB,GAA6D,OAAOA,EAAI/uG,KAAI,SAASjC,GAAK,MAAO,CAAEA,GAAG,GAAI,IAAKA,GAAG,EAAG,IAAM,IAAFA,EAAQ,GAAI,CAIrJ,IA4FIs0uB,GAAsB5grB,GA5FE2grB,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,4EAA6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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,IAAK,qBACL,IAAK,gBACL,IAAK,aACL,IAAK,YACL,IAAK,cACL,IAAK,mBACL,IAAK,gBACL,IAAK,wBACL,IAAK,qBACL,IAAK,SACL,IAAK,kBACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,mBACL,IAAK,mBACL,IAAK,oBACL,IAAK,eACL,IAAK,oBACL,IAAK,uBACL,IAAK,cACL,IAAK,WACL,IAAK,WACL,IAAK,aACL,IAAK,aACL,IAAK,eACL,IAAK,eACL,IAAK,cACL,IAAK,qBACL,IAAK,yBACL,IAAK,mBACL,IAAK,WACL,IAAK,iBACL,IAAK,iBACL,IAAK,eACL,IAAK,YACL,IAAK,mBACL,IAAK,mBACL,IAAK,iBACL,IAAK,kBACL,IAAK,oBACL,IAAK,mBACL,IAAK,cACL,IAAK,gBACL,IAAK,WACL,IAAK,YACL,IAAK,cACL,IAAK,cACL,IAAK,mBACL,IAAK,oBACL,IAAK,iBACL,IAAK,YACL,IAAK,SACL,IAAK,SACL,IAAK,gBACL,IAAK,mBACL,IAAK,iBACL,IAAK,WACL,IAAK,gBACL,IAAK,gBACL,IAAK,cACL,IAAK,iBACL,IAAK,iBACL,IAAK,oBACL,IAAK,sBACL,IAAK,aACL,IAAK,cACL,IAAK,cACL,IAAK,oBACL,IAAK,eACL,IAAK,gBACL,IAAK,qBAEHH,GAAO,CACT,EAAG,QACH,EAAG,KACH,EAAG,OACH,EAAG,UACH,EAAG,MACH,EAAG,UACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,SACH,GAAI,KACJ,GAAI,MACJ,GAAI,QACJ,GAAI,SACJ,GAAI,QACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,OACJ,GAAI,KACJ,GAAI,OACJ,GAAI,MACJ,GAAI,KACJ,GAAI,QACJ,GAAI,MACJ,GAAI,MACJ,GAAI,OACJ,GAAI,QACJ,GAAI,SACJ,GAAI,QACJ,GAAI,OACJ,GAAI,MACJ,GAAI,MACJ,GAAI,QACJ,GAAI,OACJ,GAAI,QACJ,GAAI,MACJ,GAAI,KACJ,GAAI,MACJ,GAAI,MACJ,GAAI,SACJ,GAAI,OACJ,GAAI,WACJ,GAAI,OACJ,GAAI,OACJ,GAAI,SACJ,GAAI,MACJ,GAAI,OACJ,GAAI,OACJ,GAAI,SACJ,GAAI,QACJ,GAAI,SACJ,GAAI,SACJ,GAAI,OACJ,GAAI,OACJ,GAAI,SACJ,GAAI,KACJ,GAAI,KACJ,GAAI,OACJ,GAAI,MACJ,GAAI,OACJ,GAAI,OACJ,GAAI,MACJ,GAAI,OACJ,GAAI,QACJ,GAAI,OACJ,GAAI,OACJ,GAAI,MACJ,GAAI,QACJ,GAAI,OACJ,GAAI,UACJ,GAAI,OACJ,GAAI,SACJ,GAAI,SACJ,GAAI,MACJ,GAAI,QACJ,GAAI,OACJ,GAAI,UACJ,GAAI,SACJ,GAAI,SACJ,GAAI,SACJ,GAAI,WACJ,GAAI,SACJ,GAAI,YACJ,GAAI,QACJ,GAAI,OACJ,GAAI,OACJ,GAAI,OACJ,GAAI,WACJ,GAAI,SACJ,GAAI,QACJ,GAAI,UACJ,GAAI,SACJ,GAAI,YACJ,GAAI,cACJ,GAAI,YACJ,GAAI,SACJ,GAAI,QACJ,GAAI,OACJ,GAAI,OACJ,IAAK,SACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,cACL,IAAK,WACL,IAAK,YACL,IAAK,MACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,UACL,IAAK,aACL,IAAK,OACL,IAAK,QACL,IAAK,YACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,SACL,IAAK,WACL,IAAK,UACL,IAAK,IACL,IAAK,IACL,IAAK,QACL,IAAK,SACL,IAAK,QACL,IAAK,UACL,IAAK,QACL,IAAK,WACL,IAAK,SACL,IAAK,OACL,IAAK,YACL,IAAK,YACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,WACL,IAAK,OACL,IAAK,UACL,IAAK,WACL,IAAK,cACL,IAAK,iBACL,IAAK,gBACL,IAAK,iBACL,IAAK,WACL,IAAK,cACL,IAAK,iBACL,IAAK,iBACL,IAAK,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,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,EA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","sources":["../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/en-US/_lib/localize/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/_lib/defaultLocale/index.js","../node_modules/date-fns/esm/locale/en-US/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/date-fns/esm/_lib/assign/index.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/popperOffsets.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/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/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/@remix-run/router/router.ts","../node_modules/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/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../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/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.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","../node_modules/@syncfusion/ej2-notifications/src/toast/toast.js","helpers/authentication.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","components/admin/AdminDashboard.js","components/admin/AdminLanding.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/Transition.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-transition-group/esm/utils/reflow.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","../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-grids/src/grid/renderer/command-column-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/command-column.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/@syncfusion/ej2-react-inputs/src/textbox/textbox.component.js","helpers/validation.js","components/BannerThumbnails.js","helpers/Select2.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/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","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","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":["/*!\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}","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;","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 defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","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;","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 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}","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;","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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","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}","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?.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 const data = await response.json();\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 //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 }\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 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 if (index !== -1) {\r\n if (type === \"inc\") {\r\n if (updatedCart.cartItems[index].quantity < updatedCart.cartItems[index].product.stock)\r\n updatedCart.cartItems[index].quantity += 1;\r\n else\r\n updatedCart.cartItems[index].quantity = updatedCart.cartItems[index].product.stock;\r\n } else if (type === \"dec\" && updatedCart.cartItems[index].quantity > 1) {\r\n updatedCart.cartItems[index].quantity -= 1;\r\n }\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","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\n\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 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\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 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","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);","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 var forceReflow = function forceReflow(node) {\n return node.scrollTop;\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;","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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})();\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 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 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 { 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 Select2 from '../../helpers/Select2';\r\nimport '../../css/Select2.css';\r\nimport { getCurrentDomain } from '../../helpers/Lookup';\r\nimport { capitalizeObjectKeys } from '../../helpers/Global';\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: '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 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\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 = \"Banners :: 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 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 }\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 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\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 {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 })} />\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 this.setState({ ProductId: e.itemData ? e.itemData.id : 0 })} />\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 async loadData() {\r\n const { getProducts } = this.context;\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/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 }\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/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.firstName} ${item.lastName}` }));\r\n //console.log(data)\r\n this.setState({ UserList: 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/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(), 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 this.setState({ loading: false });\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 { 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 { 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, });\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 });\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
      \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, }\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 { 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 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 {/*

      {description}

      */}\r\n
      \r\n \r\n
      \r\n
      \r\n {prevPrice && prevPrice > currPrice ? R {prevPrice.toLocaleString('en-ZA')}.00 : \"\"}  R {currPrice.toLocaleString('en-ZA')}.00\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(cartItems)\r\n\r\n\r\n return (\r\n
      \r\n {cartItems?.map((item) => (\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 R\r\n {item.price * item.quantity}\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 } from \"../helpers/authentication\";\r\nimport { Context } from \"../helpers/Context\";\r\nimport { getCurrentDomain } 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, cart } = 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 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 {/*

      Discount: R {appliedCoupon.amount}

      */}\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 ? new Intl.NumberFormat('en-ZA', { style: 'currency', currency: 'ZAR' }).format(appliedCoupon.amount)\r\n : appliedCoupon.type === 2\r\n ? `${appliedCoupon.amount} %`\r\n : new Intl.NumberFormat('en-ZA', { style: 'currency', currency: 'ZAR' }).format(0)\r\n ) : (\r\n new Intl.NumberFormat('en-ZA', { style: 'currency', currency: 'ZAR' }).format(0)\r\n )}\r\n \r\n
      \r\n
      \r\n Delivery Fee: \r\n \r\n {new Intl.NumberFormat('en-ZA', { style: 'currency', currency: 'ZAR', }).format(65)}\r\n \r\n
      \r\n
      \r\n
      \r\n Subtotal:\r\n \r\n {new Intl.NumberFormat('en-ZA', { style: 'currency', currency: 'ZAR', }).format(cartSubTotal)}\r\n \r\n
      \r\n
      \r\n Total:\r\n \r\n {new Intl.NumberFormat('en-ZA', { style: 'currency', currency: 'ZAR', }).format(calculateTotal(cartSubTotal, 65, appliedCoupon))}\r\n \r\n
      \r\n
      \r\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=${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 { Button } from 'reactstrap';\r\nimport { fieldRequired } from \"../helpers/validation\";\r\nimport { set } from \"date-fns\";\r\nimport { getAuthToken } from \"../helpers/authentication\";\r\n\r\nconst OrderCompletion = () => {\r\n const navigate = useNavigate();\r\n const { getUserAddress, userAddresses, postNewAddress, processPayment } = useContext(Context);\r\n const [formData, setFormData] = useState({\r\n company: '',\r\n address: '',\r\n apartment: '',\r\n suburb: '',\r\n city: '',\r\n country: '',\r\n province: '',\r\n postalCode: '',\r\n mobileNumber: '',\r\n instructions: '',\r\n });\r\n const [selectedAddress, setSelectedAddress] = useState(null);\r\n const [addNewAddress, setAddNewAddress] = useState(true);\r\n const [isButtonDisabled, setIsButtonDisabled] = useState(false);\r\n const [loading, setLoading] = useState(true);\r\n // const [IsCompleting, setIsCompleting]= useState(false)\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 nearSouthAfricaCountries = [\r\n { id: 0, abbreviation: '', name: '-SELECT-' },\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 const handleAddressChange = (address) => {\r\n\r\n // var selectedAddressData = address;\r\n\r\n setFormData({ ...address });\r\n setSelectedAddress(address);\r\n setAddNewAddress(false);\r\n };\r\n\r\n const handleNewAddressChange = (e) => {\r\n const { name, value } = e.target;\r\n setFormData({ ...formData, [name]: value });\r\n };\r\n\r\n const handleAddNewAddressChange = () => {\r\n setFormData({\r\n company: '',\r\n address: '',\r\n apartment: '',\r\n suburb: '',\r\n city: '',\r\n country: '',\r\n province: '',\r\n postalCode: '',\r\n mobileNumber: '',\r\n })\r\n setSelectedAddress('');\r\n setAddNewAddress(true);\r\n };\r\n\r\n //const handleChange = (e) => {\r\n // const { name, value, type, checked } = e.target;\r\n // setFormData((prevData) => ({\r\n // ...prevData,\r\n // [name]: type === 'checkbox' ? checked : value,\r\n // }));\r\n //};\r\n\r\n const handleSubmit = async (e) => {\r\n e.preventDefault();\r\n if (getAuthToken()) {\r\n setIsButtonDisabled(true);\r\n let addressId;\r\n let cartId = JSON.parse(localStorage.getItem('cart')).cartId;\r\n console.log(cartId)\r\n if (addNewAddress) {\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\r\n console.log(formData);\r\n if (valid) {\r\n addressId = await postNewAddress(formData);\r\n await processPayment(cartId, addressId, formData.instructions);\r\n //setIsButtonDisabled(false);\r\n }\r\n } else {\r\n console.log(selectedAddress, cartId, formData.instructions);\r\n addressId = selectedAddress.id;\r\n await processPayment(cartId, addressId, formData.instructions);\r\n //setIsButtonDisabled(false);\r\n\r\n }\r\n } else {\r\n alert(\"Please login or register to complete order\");\r\n }\r\n setTimeout(() => {\r\n setIsButtonDisabled(false);\r\n }, 5000);\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 //console.log(userAddresses, formData)\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 return (\r\n <>\r\n \r\n\r\n
      \r\n

      Previous Delivery Address

      \r\n\r\n\r\n {!loading ? userAddresses && userAddresses.map((item, index) => (\r\n
      \r\n \r\n
      \r\n )) : <>Loading Address...}\r\n
      \r\n \r\n
      \r\n
      \r\n

      New Delivery Address

      \r\n
      \r\n
      \r\n\r\n\r\n
      \r\n <>\r\n
      \r\n \r\n \r\n
      \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 <>\r\n
      \r\n \r\n \r\n
      \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, 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 {/* {addNewAddress && (*/}\r\n {/* )}*/}\r\n {/*
      */}\r\n
      \r\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 //for (let i = 1; i <= oldCartItems.length; i++) {\r\n // const item = oldCartItems[i];\r\n\r\n // //if (item) {\r\n // // const data = item.split('|');\r\n // // const extractedData = {};\r\n\r\n // // data.forEach(pair => {\r\n // // const [key, value] = pair.split(':');\r\n // // extractedData[key] = value;\r\n // // });\r\n\r\n // allExtractedData.push(item);\r\n // //}\r\n //}\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 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 //getOldCartItems(items.id);\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}
      \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 }

      \r\n

      Total: R {data.totalCharged}

      \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

      There seems to be an error with your payment!
      \r\n Please try again later or contact us.

      \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 ? R {prevProductPrice}.00 : \"\"}\r\n R {productPrice}.00\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","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\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];\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 R{cartSubTotal}\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 && (*/}\r\n {/*
      */}\r\n {/*

      Coupon applied: {appliedCoupon.code}

      */}\r\n {/*

      Discount: R {appliedCoupon.amount}

      */}\r\n {/*
      */}\r\n {/* )}*/}\r\n {/*
      */}\r\n
      \r\n {/*
      */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/*
      */}\r\n\r\n {/*
      */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n\r\n {/* */}\r\n {/*
      */}\r\n {/*https://payfast.io/wp-content/themes/payfast/assets/images/logo-light.svg*/}\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 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\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\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":["hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","argType","push","Array","isArray","inner","apply","toString","Object","prototype","includes","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","options","result","tokenValue","replace","addSuffix","comparison","buildFormatLongFn","args","undefined","width","String","defaultWidth","formats","date","full","long","medium","short","time","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","_date","_baseDate","_options","buildLocalizeFn","dirtyIndex","valuesArray","context","formattingValues","defaultFormattingWidth","_defaultWidth","_width","values","argumentCallback","ordinalNumber","dirtyNumber","number","Number","rem100","era","narrow","abbreviated","wide","quarter","month","day","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","buildMatchFn","string","matchPattern","matchPatterns","defaultMatchWidth","matchResult","match","value","matchedString","parsePatterns","defaultParseWidth","array","predicate","findIndex","pattern","test","object","findKey","valueCallback","rest","slice","parsePattern","parseInt","parseResult","any","index","code","formatDistance","formatLong","formatRelative","localize","weekStartsOn","firstWeekContainsDate","defaultOptions","getDefaultOptions","dateLongFormatter","timeLongFormatter","longFormatters","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","Math","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","format","input","concat","required","TypeError","getUTCDay","setUTCDate","getUTCDate","_options$weekStartsOn","NaN","isNaN","ceil","floor","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","formatters","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","hours","B","K","k","X","_localize","timezoneOffset","_originalDate","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","x","O","formatTimezoneShort","z","t","originalDate","T","offset","dirtyDelimiter","absOffset","minutes","delimiter","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","matched","cleanEscapedString","formatter","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","assign","target","property","Setter","_classCallCheck","this","_defineProperty","_createClass","_utcDate","ValueSetter","_Setter","_inherits","_super","_createSuper","validateValue","setValue","priority","subPriority","_this","flags","DateToSystemTimezoneSetter","_Setter2","_super2","_this2","_len","_key","_assertThisInitialized","timestampIsSet","convertedDate","Parser","parse","setter","validate","set","_value","EraParser","_Parser","numericPatterns","timezonePatterns","mapValue","parseFnResult","mapFn","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","n","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","_createForOfIteratorHelper","_loop","parser","incompatibleTokens","incompatibleToken","find","usedToken","fullToken","run","v","done","_ret","err","f","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","console","warn","Error","stack","r","o","Symbol","iterator","constructor","Promise","resolve","then","enumerable","configurable","writable","defineProperty","l","extend","fs","exists","true","false","error","workbook","worksheet","_regeneratorRuntime","mark","wrap","prev","next","sent","createReadStream","read","close","abrupt","stop","addWorksheet","sheetName","dateFormats","reduce","valueOf","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","create","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","name","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","_","Boolean","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","from","_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","self","window","timers","_xml","_stack","_rollbacks","tos","open","leaf","openNode","writeText","closeNode","xml","cursor","closeAll","StdDocAttributes","version","standalone","setPrototypeOf","__proto__","Reflect","construct","sham","Proxy","ReferenceError","getPrototypeOf","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","toFixed","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","F","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","trim","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","obj","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","it","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","toPrimitive","INSPECT_MAX_BYTES","kMaxLength","TYPED_ARRAY_SUPPORT","foo","byteOffset","species","poolSize","_isBuffer","compare","swap16","swap32","swap64","toLocaleString","_arr","subarray","readUIntLE","readUIntBE","readUInt16LE","readUInt32LE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUInt16LE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","copyWithin","ieee754","hashMode","_finalOrDigest","__final","_decoder","_toString","_transform","ACCESSORS","callee","IteratorPrototype","BUGGY_SAFARI_ITERATORS","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","step","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","log","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","bind","_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","_e","kStringMaxLength","MAX_LENGTH","MAX_STRING_LENGTH","isS","isChar","isNameStartChar","isNameChar","S_LIST","NAME_RE","isNCNameStartChar","isNCNameChar","NC_NAME_RE","amp","quot","apos","EVENTS","xmldecl","processinginstruction","doctype","opentagstart","attribute","opentag","closetag","cdata","ready","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","descriptor","factory","noGlobal","arr","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","len","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","props","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","suffix","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","res","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","arr2","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","instance","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","_arrayLikeToArray","_arrayWithoutHoles","iter","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","enumerableOnly","sym","_objectSpread","_slicedToArray","_arrayWithHoles","_s","_x","_n","_iterableToArrayLimit","_nonIterableRest","minLen","_defineProperties","_toPropertyKey","hint","prim","_toPrimitive","Constructor","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","protoProps","staticProps","_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","subClass","superClass","__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","allowArrayLike","normalCompletion","didErr","_e2","Derived","hasNativeReflectConstruct","isNativeReflectConstruct","Super","NewTarget","assertThisInitialized","_getPrototypeOf","_isNativeReflectConstruct","__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","runtime","chunkLoadingGlobal","unsupportedIterableToArray","arrayLikeToArray","_construct","Parent","Class","_wrapNativeSuper","Wrapper","Action","ResultType","PopStateEventType","invariant","cond","getHistoryState","usr","createLocation","_extends","pathname","createPath","_ref$pathname","_ref$search","_ref$hash","parsedPath","hashIndex","searchIndex","getUrlBasedHistory","getLocation","createHref","validateLocation","_options2","_options2$window","_options2$v5Compat","v5Compat","globalHistory","history","Pop","getIndex","handlePop","createURL","replaceState","listen","encodeLocation","Push","historyState","pushState","DOMException","Replace","go","matchRoutes","routes","locationArg","basename","stripBasename","branches","flattenRoutes","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","matchRouteBranch","safelyDecodeURI","parentsMeta","parentPath","flattenRoute","route","relativePath","caseSensitive","joinPaths","computeScore","_route$path","explodeOptionalSegments","exploded","segments","_segments","isOptional","endsWith","restExploded","subpath","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","initialScore","segment","branch","matchedParams","matchedPathname","remainingPathname","matchPath","pathnameBase","normalizePathname","_compilePath","paramNames","regexpSource","paramName","compilePath","_compilePath2","captureGroups","splatValue","decodeURIComponent","safelyDecodeURIComponent","decodeURI","startIndex","nextChar","getInvalidPathError","getPathContributingMatches","resolveTo","toArg","routePathnames","locationPathname","isPathRelative","isEmptyPath","toPathname","routePathnameIndex","toSegments","fromPathname","_ref4$search","_ref4$hash","resolvePathname","normalizeSearch","normalizeHash","resolvePath","hasExplicitTrailingSlash","hasCurrentTrailingSlash","AbortedDeferredError","_Error","isRouteErrorResponse","internal","validMutationMethodsArr","validRequestMethodsArr","DataRouterContext","DataRouterStateContext","AwaitContext","NavigationContext","LocationContext","RouteContext","outlet","isDataRoute","RouteErrorContext","useInRouterContext","useLocation","UNSAFE_invariant","static","useNavigate","router","useDataRouterContext","DataRouterHook","UseNavigateStable","useCurrentRouteId","DataRouterStateHook","activeRef","navigate","fromRouteId","useNavigateStable","dataRouterContext","_React$useContext3","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","_React$Component","revalidation","errorInfo","routeContext","RenderedRoute","staticContext","errorElement","ErrorBoundary","_deepestRenderedBoundaryId","_dataRouterState2","_dataRouterState","errorIndex","reduceRight","getChildren","hookName","ctx","useRouteContext","thisRoute","Navigate","jsonPath","Route","_props","Router","_ref5$basename","basenameProp","_ref5$children","locationProp","_ref5$navigationType","_ref5$static","staticProp","navigationContext","_locationProp","_locationProp$pathnam","_locationProp$search","_locationProp$hash","_locationProp$state","_locationProp$key","locationContext","trailingPathname","Routes","createRoutesFromChildren","AwaitRenderStatus","neverSettledPromise","treePath","loader","hasErrorBoundary","shouldRevalidate","startTransitionImpl","BrowserRouter","historyRef","_window$location","setStateImpl","v7_startTransition","newState","isBrowser","ABSOLUTE_URL_REGEX","Link","absoluteHref","reloadDocument","preventScrollReset","UNSAFE_NavigationContext","isExternal","currentUrl","targetUrl","_React$useContext","_useResolvedPath","joinedPathname","useHref","internalOnClick","_ref12","replaceProp","isModifiedEvent","shouldProcessLinkClick","useLinkClickHandler","getFromWindow","varName","GoogleApiContext","gapi","GoogleApiProvider","_useLibrary","library","_useState2","setStatus","tryAgain","useLibrary","requested","modules","discoveryDocs","scopes","configure","_options$modules","_options$discoveryDoc","_options$scopes","options1","state1","_options$modules2","missingModules","_loading$modules","loadModules","_gapi$auth","_options$scopes2","_options$discoveryDoc2","auth","auth2","getAuthInstance","missingScopes","_auth$currentUser$get","_auth$currentUser$get2","grantedScopes","currentUser","getGrantedScopes","missingDiscoveryDocs","missingScopesNotDone","_requested$scopes","requestScopes","doInitScopes","_requested$discoveryD","requestDiscoveryDocs","doInitDiscoveryDocs","loadScopes","_loading$scopes","_gapi$auth2$getAuthIn","_done$scopes","client_id","isSignedIn","grant","signIn","_done$scopes2","_done$scopes3","_loading$discoveryDoc","loadDiscoveryDocs","client","_done$discoveryDocs","doConfigure","GoogleOAuthContext","GoogleOAuthProvider","onScriptLoadSuccess","onScriptLoadError","scriptLoadedSuccessfully","setScriptLoadedSuccessfully","onScriptLoadSuccessRef","onScriptLoadErrorRef","scriptTag","useLoadGsiScript","contextValue","asyncGeneratorStep","_next","_throw","info","factoryWithThrowingShims","isValidString","TawkMessenger","propertyId","widgetId","Tawk_API","Tawk_LoadStart","_ref$propertyId","_ref$widgetId","_ref$embedId","embedId","_ref$basePath","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","_jsx","TawkMessengerReact","getIsAdmin","getItem","setIsAdmin","setItem","setAddingActivity","AboutUs","PageContent","Banners","loadData","_loadData","_asyncToGenerator","_callee","withCredentials","credentials","Content","_jsxs","banners","RenderPageContent","_Fragment","FixedMessenger","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","maximumFractionDigits","minimumFractionDigits","fractionDigits","useGrouping","defaultCurrency","nData","pData","replaceBlazorCurrency","getFormatData","groupSeparator","groupData","getGroupingDetails","minimumFraction","mval","maximumFraction","mfrac","lfrac","intNumberFormatter","negativeDataRegex","secondary","val1","val2","checkbothExist","isFraction","decide","dint","str1","str2","checkRange","curData","zeroData","fValue","processSignificantDigits","processFraction","minimumIntegerDigits","processMinimumIntegers","isCustomFormat","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","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","ToastUtility","getAuthToken","authToken","setAuthToken","expiry","authExpires","getUserDetails","setUserDetails","clearUserDetails","sessionStorage","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","_useState4","allProducts","setAllProducts","_useState6","categories","setCategories","_useState8","subcategories","setSubcategories","_useState10","setBrands","_useState12","orders","setOrders","_useState14","oldItems","setOldItems","_useState16","userAddress","setUserAddress","_useState18","userAddresses","setUserAddresses","_useState20","currentPromotions","setCurrentPromotions","_useState22","heroData","setHeroData","_useState24","reviews","setReviews","_useState26","setPromoCode","_useState28","showCart","setShowCart","_useState30","appliedCoupon","setAppliedCoupon","_useState32","couponError","setCouponError","_useState34","adminAppliedCoupon","setAdminAppliedCoupon","_useState36","adminCouponError","setAdminCouponError","_useState38","cart","setCart","_useState40","setCartItems","_useState42","cartCount","setCartCount","_useState44","cartSubTotal","setCartSubTotal","_useState46","cartTotal","_useState48","setDiscountAmount","_useState50","wishlistItems","setWishlistItems","_useState52","selectedBrands","setSelectedBrands","_useState54","wishCount","setWishCount","storedCart","quantity","subTotal","price","applyDiscount","discountAmount","getProducts","getAllProducts","_callee2","bearer","_context2","AddProductActivity","_callee3","ProductId","_getUserDetails2","_context3","ActivityBy","_x2","getUserAddress","_callee4","_context4","_x3","getUserAddressAdmin","_callee5","_context5","_x4","getUpcomingPromotions","_callee6","_context6","getHomeBanners","_ref8","_callee7","_context7","getAllOrders","_ref9","_callee8","customerId","_context8","_x5","getOldCartItems","_ref10","_callee9","_context9","_x6","_x7","processPayment","_ref11","_callee10","addressId","_getUserDetails3","_args10","_context10","postToCart","sendCustomEvent","emailAddress","redirect","_x8","getPromoCode","_callee11","_context11","getCartItems","_ref13","_callee12","productData","filteredCartItems","updatedCartItems","_context12","cartItem","matchingProduct","product","productId","totalCharged","qty","_x9","getCart","_ref14","_callee13","newCartItems","_context13","_x10","_ref17","_callee16","_console","newCartObject","cartItemsData","updatedItems","currentCart","updatedCart","_updatedCart","localCartItems","responseCartItem","responseData","updatedItem","_context16","item1","item2","BuyType","Qty","PriceCharged","TotalCharged","Status","ProductImage","_x14","adminPostToCart","_ref18","_callee17","_console2","_updatedCart2","_updatedCart3","_context17","_x15","deleteFromCart","_ref19","_callee18","removeId","_response","_args18","_context18","_excluded4","_x16","_x17","CheckPaymentStatus","_ref20","_callee19","_getUserDetails4","_context19","postNewAddress","_ref21","_callee20","formData","_data2","_context20","Address","Apartment","apartment","City","city","Country","country","MobileNumber","mobileNumber","PostalCode","postalCode","Province","province","Suburb","suburb","DateAdded","DateModified","OldId","oldId","UserId","_x18","getReviews","_ref22","_callee21","_context21","_x19","getCategories","_ref23","_callee22","_context22","getSubcategories","_ref24","_callee23","_context23","getBrands","_ref25","_callee24","_context24","applyCoupon","_ref26","_callee25","couponCode","_getUserDetails5","discount","_context25","_x20","applyAdminCoupon","_ref27","_callee26","_context26","_x21","_x22","ReactGA","handleAddToCart","_items","_items2","updatedNumItems","updatedAmount","handleRemoveFromCart","_items3","_items4","removedItem","prevCart","handleCartProductQuantity","stock","prevCartItems","handleAddToWishlist","wishItem","updatedWishlist","handleRemoveFromWishlist","itemId","isItemInWishlist","storedWishlist","getRandomObjectsFromArray","numObjects","ProductData","Products","ProductTags","ProductCats","FilteredProducts","selectedCategories","ItemTags","ItemCats","productBrandId","GetFilterRelatedProducts","randomObjects","usedIndices","randomIndex","handleNavigate","ResetUserCart","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","_this$state","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","filterName","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","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","AdminDashboard","ManageDateRange","reportStartDate","reportEndDate","renderDashboard","RevenueSaleData","RevenueSourceData","SocialMediaData","SearchData","SalePerformanceData","fProductId","ddProducts","_this$context","ProductDropdownList","filtering","item3","item4","item5","item6","AdminLanding","editData","_possibleConstructorReturn","defaultNode","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","initialStatus","appear","isMounting","appearStatus","in","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","onMouseDown","onKeyUp","hasTransition","Backdrop","renderModalDialog","closeAriaLabel","wrapTag","ModalHeader","closeButton","_props$wrapTag","WrapTag","_props$closeAriaLabel","ModalBody","ModalFooter","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","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","CommandColumnRenderer","buttonElement","unbounDiv","childRefs","destroyButtons","isVirtualEdit","renderButton","commandType","initiateRender","commandClickHandler","commandColumn","commandCols","typeInString","commandclickargs","commandCol","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","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","TextBoxComponent","fieldRequired","BannerThumbnails","handleBannerUpload","newImageUrl","BannerUrls","onUpdateBannerUrls","openImageUploader","uploadInputRef","deleteImage","updatedImageUrls","bannerUrls","isSingleBanner","forceUpdateValue","initSelect2","updSelect2","destroySelect2","updateSelect2Value","prepareOptions","attachEventHandlers","detachEventHandlers","prepareValue","fuzzyValuesEqual","dropdownParent","itemParams","onOpen","onClose","onUnselect","makeOption","AdminOrders","editItem","Title","ProductList","CustomerCart","CustomerOrders","SiteSection","editId","editModal","reducePrice","originalPrice","saveItem","_this$context2","valid","deleteItem","confirmStyles","deleteData","onGridCommand","handleCouponChange","addProductModal","gridCommands","gridToolbar","ProductQuantity","BrandList","CategoryList","SubCategoryList","fProductBrandId","fSubcategoryId","toggleAddProduct","selectedValue","selectedOptions","CartId","Sku","orderData","currentPrice","sPrice","dateSPriceEnds","existingItem","newItem","_removeFromCart","database","_args3","_data$cartItems","pic","parsedImage","removeFromCart","_this$context3","categoryId","renderDataTable","mapedData","FullName","UserList","renderProductsTable","sendEmail","handleFilterSelectChange","handleFilterUnSelectChange","addToCart","_data3","_response2","_data4","_response3","_data6","_data5","_response4","_data7","firstName","lastName","toDateString","t5","t6","t7","t8","_saveData","showError","showSuccess","_deleteData","dataId","commandClick","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","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","siteSection","Filename","StartDate","EndDate","ActionType","actionType","ActionData","DisplayOrder","displayOrder","ModifiedBy","modifiedBy","dateModified","CategoryLink","categoryLink","handleUpdatedBannerUrls","onItemDrop","capitalizeKeys","orderModal","LinkTypes","toggleOrderModal","banner","slug","saveOrder","_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","fullName","adminNotes","notes","Description","MaxUses","NumUses","AdminNote","orderBy","notesModal","viewNotesModal","transactionHistory","reportRange","ReportData","toggleNotesEdit","toggleNotesView","_this$state$adminNote","_this$state$adminNote2","_this$state2","totalItems","storeLoader","channelLoader","saveNote","UserName","_saveNote","userData","_updateStaus","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","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","PreviewCards","isQuickViewOpen","quickViewProduct","discountedPrice","prevPrice","currPrice","calculateSavingsPercentage","$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","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","sku","Published","published","Featured","featured","About","about","AdditionalInfo","additionalInfo","RelatedProducts","relatedProducts","MetaData","ExternalURL","externalURL","DisplayType","displayType","OutOfStock","outOfStock","Ongoing","ongoing","StockCount","stockCount","LowStockAmount","lowStockAmount","fProductTypeId","fCategoryId","previewItem","brandId","PreviewProduct","PrevId","previewModal","RenderBrands","RenderCategories","selectedCategoryIds","categoryTitles","filterProductsByCategories","productCategories","subCategoryIds","_productCategories$i$","filteredProducts","_selectedCategories","uploadModal","fProductName","SelectedSubCategories","excelData","previewToggle","uploadToggle","handleSelectChange","handleUnSelectChange","uploadExcelData","_uploadExcelData","dataToUpload","_dataToUpload$i","_dataToUpload$i2","_dataToUpload$i3","_dataToUpload$i4","_dataToUpload$i5","selectedCategory","Subcategories","saveBulkData","selectedValues","_item$title","_item$sku","newSub","newBrands","listsWorksheet","BrandName","SubcategoryName","handleExportClick","exportProducts","readAsBinaryString","uploadExcel","_saveBulkData","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","_saveBulk","_useContext","goToCategory","categoriesWithSubcategories","ProductCard","toggleQuickView","handleShare","productLink","share","savingsAmount","QuickViewModal","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","handleBrandChange","objectFit","prevShowOutOfStock","getImage","setCouponCode","CartItem","coupon","calculateTotal","Spinner","_props$type","_props$children","ThrobbleHelper","throbbleMessage","showThrobble","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","_saveContact","seLoading","handleDelete","setFormData","handleSubmit","_e$target","realValue","maxLength100","maxlength","maxLength250","abbreviation","toggleAnswer","updatedFAQItems","faqItems","RenderFAQs","HeadingId","HeadingQuestion","RenderFAQHeadings","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","setActiveIndex","animating","setAnimating","slides","newIndex","Home","randomNewProducts","randomDealProducts","randomTopProducts","randomBestProducts","newProducts","dateA","deals","noPriceDeals","topRated","avgRating","Hero","ShopFor","handleNavigation","Login","Checked","_Login","loadCart","setSelectedAddress","addNewAddress","setAddNewAddress","isButtonDisabled","setIsButtonDisabled","handleNewAddressChange","onSubmit","setIsOpen","selectedProduct","paymentMethodTitle","priceCharged","OrderHistoryItem","PayFastCancelled","paymentStatus","setPaymentStatus","floating","FormGroup","switchProp","formCheck","PersonalInformation","passwordFieldRequired","errorId","Checked2","setIsHovered","selectedBrand","beforePseudoStyle","borderRadius","setSelectedCategories","collapsedCategories","setCollapsedCategories","handleCategoryChange","setKeyword","inputRef","regPattern","lowerCaseKeyword","filterByKeyword","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","setQuantity","setActiveTab","setRelatedProducts","rating","newReview","setNewReview","currentImage","setCurrentImage","setProductData","handleTabClick","behavior","scrollToSection","addReview","Rating","relatedProductList","productImage","productPrice","prevProductPrice","currentBrand","GetCategorySlug","cat","newImage","CategoryIDs","_CategoryIDs","RenderCategoryLink","TagLink","tagArr","RenderTagLink","classnames","star","currentRating","review","stars","starIndex","promo","promoCodeItem","FormText","Register","setPassword","passwordError","setPasswordError","confirmPasswordError","setConfirmPasswordError","setError","errorState","handleResetPassword","isMatch","FilterTagName","TagProducts","TestPayments","submitCart","_submitCart","WishListItem","RazerBanners","setEditData","setEditId","setFilename","setEndDate","setActionType","setActionData","setDisplayOrder","setAddedBy","setDateAdded","setModifiedBy","setDateModified","setEditModal","setOrderModal","toggleOrder","validateForm","AppRoutes","ProductView","WishList","ProductPage","IsTagFilter","BrandPage","Categories","ProductBrandPage","CategoryPage","ProductSearch","OrderHistory","DeliveryDetails","CustomerDeliveryAddresses","PromotionPage","CheckoutPage","PayFastComplete","OrderCompletion","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","currentScope","$e42e1063c40fb3ef$export$b9ecd428b558ff10","originalEventHandler","ourEventHandler","_ref$checkForDefaultP","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","slotPropValue","childPropValue","$5e63c961fc1ce211$var$mergeProps","$9IrjX$composeRefs","$5e63c961fc1ce211$export$d9f1ccf0bdb05d45","$9IrjX$Fragment","$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$current2","_callbackRef$current","$71cd76cc60e0454e$export$6f32135080cb4c3","defaultProp","_ref$onChange","_$71cd76cc60e0454e$va","uncontrolledState","$bnPw9$useState","prevValueRef","$bnPw9$useRef","$bnPw9$useCallbackRef","$bnPw9$useEffect","$71cd76cc60e0454e$var$useUncontrolledState","_$71cd76cc60e0454e$va2","uncontrolledProp","setUncontrolledProp","isControlled","$bnPw9$useCallback","nextValue","$f631663db3294ace$var$DirectionContext","$7Gjcd$createContext","$9f79659886946c16$export$e5c5a5f917a5871c","$dxlwH$useLayoutEffect","$921a889cee6df7e8$export$99c2b779aa4e8b8b","presence","_$iqq3r$useState2","$iqq3r$useState","node1","setNode","stylesRef","$iqq3r$useRef","prevPresentRef","prevAnimationNameRef","initialState","_$fe963b355347cc68$ex2","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$react$useStat2","$2AODx$useLayoutEffect","reactId","$e02a7d9cb1dc128c$export$c74125a8e3af6bb2","PROVIDER_NAME","_$6vYhU$createContext2","$6vYhU$createContextScope","createCollectionContext","createCollectionScope","_createCollectionCont2","collectionRef","itemMap","CollectionProviderImpl","useCollectionContext","CollectionProvider","$6vYhU$react","COLLECTION_SLOT_NAME","CollectionSlot","composedRefs","$6vYhU$useComposedRefs","$6vYhU$Slot","ITEM_SLOT_NAME","ITEM_DATA_ATTR","CollectionItemSlot","_$6vYhU$react$createE","Slot","ItemSlot","collectionNode","orderedNodes","$5cb92bef7577960e$var$originalBodyPointerEvents","$5cb92bef7577960e$var$CONTEXT_UPDATE","$5cb92bef7577960e$var$POINTER_DOWN_OUTSIDE","$5cb92bef7577960e$var$FOCUS_OUTSIDE","$5cb92bef7577960e$var$DismissableLayerContext","$kqwpH$createContext","layersWithOutsidePointerEventsDisabled","$5cb92bef7577960e$export$177fb62ff3ec1f22","$kqwpH$forwardRef","_node$ownerDocument","_props$disableOutside","disableOutsidePointerEvents","onEscapeKeyDown","onPointerDownOutside","onFocusOutside","onInteractOutside","onDismiss","layerProps","$kqwpH$useContext","_$kqwpH$useState2","$kqwpH$useState","$kqwpH$useComposedRefs","highestLayerWithOutsidePointerEventsDisabled","highestLayerWithOutsidePointerEventsDisabledIndex","isBodyPointerEventsDisabled","isPointerEventsEnabled","pointerDownOutside","handlePointerDownOutside","$kqwpH$useCallbackRef","isPointerInsideReactTreeRef","$kqwpH$useRef","handleClickRef","$kqwpH$useEffect","handlePointerDown","handleAndDispatchPointerDownOutsideEvent","$5cb92bef7577960e$var$handleAndDispatchCustomEvent","eventDetail","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","_$yHMN2$createCollect2","$yHMN2$createCollection","$322c88a641701f3b$var$Collection","$322c88a641701f3b$var$useCollection","$322c88a641701f3b$var$createCollectionScope","_$yHMN2$createCollect4","$322c88a641701f3b$var$FocusGroupCollection","$322c88a641701f3b$var$useFocusGroupCollection","_$yHMN2$createContext2","$yHMN2$createContextScope","$322c88a641701f3b$var$createNavigationMenuContext","_$322c88a641701f3b$va2","$322c88a641701f3b$var$NavigationMenuProviderImpl","$322c88a641701f3b$var$useNavigationMenuContext","_$322c88a641701f3b$va4","$322c88a641701f3b$var$ViewportContentProvider","$322c88a641701f3b$var$useViewportContentContext","$322c88a641701f3b$export$5b2278cf1e8bcae2","$yHMN2$forwardRef","__scopeNavigationMenu","valueProp","onValueChange","delayDuration","_props$delayDuration","_props$skipDelayDurat","skipDelayDuration","_props$orientation","NavigationMenuProps","_$yHMN2$useState2","$yHMN2$useState","navigationMenu","setNavigationMenu","composedRef","$yHMN2$useComposedRefs","localDir","globalDir","$7Gjcd$useContext","$yHMN2$useDirection","openTimerRef","$yHMN2$useRef","closeTimerRef","skipDelayTimerRef","_$yHMN2$useState4","isOpenDelayed","setIsOpenDelayed","_$yHMN2$useControllab2","$yHMN2$useControllableState","hasSkipDelayDuration","_$yHMN2$useControllab3","startCloseTimer","$yHMN2$useCallback","handleOpen","handleDelayedOpen","$yHMN2$useEffect","$yHMN2$createElement","$322c88a641701f3b$var$NavigationMenuProvider","isRootMenu","rootNavigationMenu","onTriggerEnter","onTriggerLeave","onContentEnter","onContentLeave","onItemSelect","onItemDismiss","$yHMN2$Primitive","$yHMN2$babelruntimehelpersesmextends","_$yHMN2$useState6","setViewport","_$yHMN2$useState8","viewportContent","setViewportContent","_$yHMN2$useState10","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$va6","$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","_excluded5","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","_excluded7","$yHMN2$reactdom","$yHMN2$Presence","$322c88a641701f3b$var$NavigationMenuIndicatorImpl","_excluded8","_$yHMN2$useState12","activeTrigger","setActiveTrigger","_$yHMN2$useState14","_items$find","triggerNode","handlePositionChange","$322c88a641701f3b$var$useResizeObserver","$322c88a641701f3b$var$CONTENT_NAME","$322c88a641701f3b$export$38e00e996c2f93f7","contentProps","_excluded9","commonProps","$322c88a641701f3b$var$ViewportContentMounter","$322c88a641701f3b$var$NavigationMenuContentImpl","$yHMN2$useLayoutEffect","$322c88a641701f3b$var$ROOT_CONTENT_DISMISS","_excluded10","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","_excluded11","$322c88a641701f3b$var$NavigationMenuViewportImpl","props1","_objectSpread2","viewportImplProps","_excluded12","viewportContentContext","_$yHMN2$useState16","_$yHMN2$useState18","viewportWidth","viewportHeight","activeContentValue","_ref2$","_excluded13","$yHMN2$composeRefs","groupProps","_excluded14","$322c88a641701f3b$var$ARROW_KEYS","_excluded15","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","NavMenu","menuToggleHandler","menuOpen","handleScroll","SubcategoryList","isLoggedIn","dropdownOpen","_handleLogout","renderedCategories","matchingSubcategories","NavigationMenu","navigationContent","handleLogout","Cart","Footer","subSubscribeEmail","handleSubscribe","IsValid","setIsVisible","BrandNavMenu","BrandFooter","BrandLayout","ScrollToTopButton","ProductBrandCard","accentColour","cardColour","mainColour","brandSlug","first20Items","dynamicGridStyleNew","gridTemplateColumns","dynamicGridStyle","initSlider","imageListNew","imageList","slideButtonsNew","slideButtons","maxScrollLeft","scrollAmount","scrollBy","Layout","isAdmin","scategory","_filteredProducts","fetchData","razerProducts","App","ProtectedRoute","BrandSpecificPage","RazerCategoryPage","RazerProductView","onPerfEntry","getCLS","getFID","getFCP","getLCP","getTTFB","baseUrl","AppContext","serviceWorker","registration","unregister","reportWebVitals"],"sourceRoot":""}