{"version":3,"file":"static/js/main.52182729.js","mappings":"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AU,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,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,S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AyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,OAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,OAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,OAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,OAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,OAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,OAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAE7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,KAAM,MAC7CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,MAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,MAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,MAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,MAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,MAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,MAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,MAC9CzE,KAAKo+O,yBAAyB35O,SAAS,KAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBAAyB35O,SAAS,MAAO,OAC9CzE,KAAKo+O,yBA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AAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,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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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,IAAM,IAAK,IAClE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,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,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IAAkB/7D,KAAKsja,SAAU,CAAE,OAAUtja,KAAKqM,IAAMrM,KAAKsM,IAAMtM,KAAKona,WAAapna,KAAKsta,WAAa,KAAOtta,KAAKsta,WAAatta,KAAKona,WAAa,SAGtJpna,KAAKila,OAAO13Z,SACZvN,KAAKyla,cAEoB,SAAzBzla,KAAK41S,MAAM8vH,WAAwB1la,KAAK+3I,KACxC/3I,KAAKu1U,cAAcv1U,KAAK+3I,IACxB/3I,KAAK+3I,QAAKh6I,EACViC,KAAK2la,eAET3la,KAAKmna,cACAnna,KAAK7D,QAAQgiJ,WACd7xG,YAAW,YACFrnC,EAAAA,EAAAA,IAAkBlD,EAAMwka,eACzBxka,EAAMwka,YAAY3qa,MAAMm0V,WAAahuV,EAAM82P,gBAC5B,UAAf92P,EAAMzE,OAAqB2H,EAAAA,EAAAA,IAAkBlD,EAAMyka,gBACnDzka,EAAMyka,aAAa5qa,MAAMm0V,WAAahuV,EAAM82P,eAEpD,IAEJ74P,KAAKupa,eAAevpa,KAAK0pa,eACzB1pa,KAAK8na,aACT,EACA5E,EAAOhja,UAAU0qa,kBAAoB,SAAUzla,GAC3C,IAAI+mB,EAAW,KACW,IAAtBlsB,KAAK6sa,cACC7sa,KAAKila,OAAO13Z,SAAWvN,KAAKila,OAAOyJ,mBACrC1ua,KAAKuoa,WAAavoa,KAAKula,iBAAiBpga,GACxCnF,KAAKona,WAAapna,KAAKwta,oBAAoBxta,KAAKuoa,YAC9B,UAAdvoa,KAAK1C,OAAsB0C,KAAKona,WAAapna,KAAKsta,YAActta,KAAKqM,IAAMrM,KAAKsM,KAAStM,KAAKona,WAAapna,KAAKsta,YAActta,KAAKqM,IAAMrM,KAAKsM,OAC9ItM,KAAKona,WAAapna,KAAKsta,WACvBtta,KAAKuoa,WAAavoa,KAAKyoa,YAEvBzoa,KAAKona,aAAepna,KAAKiua,gBACzB/hZ,EAAWlsB,KAAKiua,cAAgBjua,KAAKona,aAG7Cpna,KAAKqua,iBAGCrua,KAAKila,OAAO13Z,SAAWvN,KAAKila,OAAO0J,iBACrC3ua,KAAKyoa,WAAazoa,KAAKula,iBAAi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,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MA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,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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","sources":["components/dApp/DApp.tsx","components/dButton/DButton.tsx","components/dButton/SpecialButtons.tsx","components/dCard/DCard.tsx","../node_modules/@syncfusion/ej2-buttons/src/check-box/check-box.js","../node_modules/@syncfusion/ej2-react-buttons/src/check-box/checkbox.component.js","components/dCheckBox/DCheckBox.tsx","../node_modules/@syncfusion/ej2-calendars/src/calendar/calendar.js","../node_modules/@syncfusion/ej2-calendars/src/datepicker/datepicker.js","../node_modules/@syncfusion/ej2-react-calendars/src/datepicker/datepicker.component.js","components/dDatePicker/DDatePicker.tsx","components/dDialog/DSpecialDialog.tsx","../node_modules/@syncfusion/ej2-dropdowns/src/common/highlight-search.js","components/dDropDownBox/DDropDownBox.tsx","../node_modules/@syncfusion/ej2-grids/src/grid/base/enum.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/value-formatter.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/constant.js","../node_modules/@syncfusion/ej2-grids/src/grid/common/checkbox-filter-base.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/data.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/util.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/row.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/cell.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-merge-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/string-literals.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/row-model-generator.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/summary-model-generator.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/group-model-generator.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/content-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/aria-service.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/stacked-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/indent-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/caption-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/expand-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-indent-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-header-indent-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-expand-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-drop-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-header-indent-render.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/render.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/cell-render-factory.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/responsive-dialog-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/service-locator.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/renderer-factory.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/width-controller.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/focus-strategy.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/page-settings.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/column-chooser-settings.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/selection.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/search.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/show-hide.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/scroll.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/aggregate.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/clipboard.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/logger.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/grid.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/print.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/column.js","components/dGrid/components/DGridColumn.tsx","components/dGrid/components/DGridFormatting.ts","components/dGrid/components/DGridFormattingLegend.tsx","components/dGrid/components/DGridToolbarItem.ts","../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/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/actions/group.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/sort.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/auto-complete/auto-complete.js","../node_modules/@syncfusion/ej2-calendars/src/timepicker/timepicker.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/string-filter-ui.js","../node_modules/@syncfusion/ej2-inputs/src/numerictextbox/numerictextbox.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-calendars/src/datetimepicker/datetimepicker.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-grids/src/grid/common/excel-filter-base.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/excel-filter.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/filter.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/resize.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/column-menu.js","../node_modules/@syncfusion/ej2-grids/src/pager/numeric-container.js","../node_modules/@syncfusion/ej2-grids/src/pager/pager-message.js","../node_modules/@syncfusion/ej2-grids/src/pager/pager.js","../node_modules/@syncfusion/ej2-grids/src/pager/pager-dropdown.js","../node_modules/@syncfusion/ej2-grids/src/pager/external-message.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/page.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-writer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/utils.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/dictionary.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-main-object-collection.js","../node_modules/@syncfusion/ej2-file-utils/src/encoding.js","../node_modules/@syncfusion/ej2-file-utils/src/save.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-string.js","../node_modules/@syncfusion/ej2-file-utils/src/stream-writer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document-base.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-name.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-operators.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-dictionary-properties.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-dictionary.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-number.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-array.js","../node_modules/@syncfusion/ej2-compression/src/compression-writer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-stream.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/cross-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-reference.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-boolean.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-viewer-preferences.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-catalog.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-cross-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/drawing/pdf-drawing.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-size.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-margins.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-settings.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-stream-writer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/string-layouter.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-color.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-brush.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-solid-brush.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-pen.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-string-format.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/string-tokenizer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-font.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-transformation-matrix.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/constants.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/object-object-pair/dictionary.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-transparency.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field-info-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/base/graphics-element.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field-info.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/byte-array.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-table-info.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-name-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-name-record.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-head-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-metrics.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-horizontal-header-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-OS2-Table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-post-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-long-hor-metric.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-cmap-sub-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-cmap-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-glyph-info.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-loca-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-apple-cmap-sub-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-microsoft-cmap-sub-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-trimmed-cmap-sub-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-glyph-header.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/big-endian-writer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-reader.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-font-metrics.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/unicode-true-type-font.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl/rtl-text-shape.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl/rtl-bidirectional.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl-renderer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-gradient-brush.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/image-decoder.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/pdf-template.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/tables/light-tables/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/unit-convertor.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/pdf-image.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/pdf-bitmap.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-resources.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-tiling-brush.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-graphics.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-layer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/general/pdf-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-layer-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-base.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/annotation-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/page-added-event-arguments.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-page-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document-template.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-templates.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-document-page-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/general/pdf-cache-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-standard-font-metrics-factory.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-standard-font.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/styles/pdf-borders.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/styles/style.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/base/element-layouter.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/layout-element.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/base/text-layouter.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/text-element.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/annotation.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/link-annotation.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/action-link-annotation.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/actions/action.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/actions/uri-action.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/uri-annotation.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/pdf-text-web-link.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid-cell.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid-column.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid-row.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/layout/grid-layouter.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-template-element.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/pdf-numbers-convertor.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/pdf-template-value-pair.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/multiple-value-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/pdf-page-number-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/composite-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/single-value-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/page-count-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-true-type-font.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/export-helper.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/pdf-export.js","../node_modules/@syncfusion/ej2-excel-export/src/worksheets.js","../node_modules/@syncfusion/ej2-excel-export/src/worksheet.js","../node_modules/@syncfusion/ej2-excel-export/src/cell-style.js","../node_modules/@syncfusion/ej2-excel-export/src/column.js","../node_modules/@syncfusion/ej2-excel-export/src/row.js","../node_modules/@syncfusion/ej2-excel-export/src/image.js","../node_modules/@syncfusion/ej2-excel-export/src/cell.js","../node_modules/@syncfusion/ej2-compression/src/utils.js","../node_modules/@syncfusion/ej2-compression/src/decompressor-huffman-tree.js","../node_modules/@syncfusion/ej2-compression/src/checksum-calculator.js","../node_modules/@syncfusion/ej2-compression/src/compression-reader.js","../node_modules/@syncfusion/ej2-compression/src/zip-archive.js","../node_modules/@syncfusion/ej2-excel-export/src/value-formatter.js","../node_modules/@syncfusion/ej2-excel-export/src/csv-helper.js","../node_modules/@syncfusion/ej2-excel-export/src/blob-helper.js","../node_modules/@syncfusion/ej2-excel-export/src/auto-filters.js","../node_modules/@syncfusion/ej2-excel-export/src/workbook.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/excel-export.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/context-menu.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/reorder.js","../node_modules/@syncfusion/ej2-navigations/src/toolbar/toolbar.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/toolbar.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-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-grids/src/grid/renderer/numeric-edit-cell.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/maskbase/masked-date-time.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/footer-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/summary-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/aggregate.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/foreign-key.js","../node_modules/@syncfusion/ej2-react-grids/src/grid/grid.component.js","components/dGrid/events/actionBegin.ts","components/dGrid/events/properties/excelExportProperties.ts","components/dGrid/events/properties/pdfExportProperties.ts","components/dGrid/_helpers/formattingHelper.ts","components/dGrid/_helpers/toolbarHelper.ts","components/dGrid/events/rowDataBound.ts","components/dGrid/events/rowSelected.ts","components/dGrid/DGrid.tsx","components/dGrid/settings/contextMenuSettings.ts","components/dGrid/settings/editSettings.ts","components/dGrid/settings/filterSettings.ts","components/dGrid/settings/groupSettings.ts","components/dGrid/settings/pageSettings.ts","components/dGrid/settings/sortSettings.ts","components/dGrid/settings/textWrapSettings.ts","components/dGrid/settings/toolbarSettings.ts","components/dGrid/events/actionComplete.ts","components/dGrid/events/actionFailure.ts","components/dGrid/events/contextMenuClick.ts","components/dGrid/events/contextMenuOpen.ts","components/dGrid/events/created.ts","components/dGrid/events/dataBound.ts","components/dGrid/events/exportComplete.ts","components/dGrid/events/headerCellInfo.ts","components/dGrid/events/recordDoubleClick.ts","components/dGrid/events/toolbarClick.ts","../node_modules/@syncfusion/ej2-lists/src/list-view/list-view.js","../node_modules/@syncfusion/ej2-react-lists/src/list-view/listview.component.js","components/dSymbol/DSymbol.tsx","components/dSymbol/DSpecialSymbols.tsx","components/dList/DList.tsx","../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-progressbar/src/progressbar/utils/helper.js","../node_modules/@syncfusion/ej2-progressbar/src/progressbar/model/progress-base.js","../node_modules/@syncfusion/ej2-progressbar/src/progressbar/model/constant.js","../node_modules/@syncfusion/ej2-progressbar/src/progressbar/model/progress-tooltip.js","../node_modules/@syncfusion/ej2-progressbar/src/progressbar/utils/progress-animation.js","../node_modules/@syncfusion/ej2-progressbar/src/progressbar/types/segment-progress.js","../node_modules/@syncfusion/ej2-progressbar/src/progressbar/types/linear-progress.js","../node_modules/@syncfusion/ej2-progressbar/src/progressbar/types/circular-progress.js","../node_modules/@syncfusion/ej2-progressbar/src/progressbar/progressbar.js","../node_modules/@syncfusion/ej2-progressbar/src/progressbar/utils/theme.js","../node_modules/@syncfusion/ej2-react-progressbar/src/progressbar/progressbar.component.js","components/dLoadingSpinner/DLoadingSpinner.tsx","../node_modules/@syncfusion/ej2-react-inputs/src/numerictextbox/numerictextbox.component.js","components/dNumericBox/DNumericBox.tsx","components/dProgressBar/DProgressBar.tsx","../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/actions/count.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/models/items.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/models/default-locale.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/util.js","../node_modules/@syncfusion/ej2-richtexteditor/src/common/constant.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/renderer/link-module.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/image-module.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/base-toolbar.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/dropdown-buttons.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/renderer/table-module.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/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/toolbar-action.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/toolbar.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/render.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/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/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/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/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","components/dRichTextEditor/DRichTextEditor.tsx","../node_modules/@syncfusion/ej2-navigations/src/tab/tab.js","../node_modules/@syncfusion/ej2-react-navigations/src/tab/tab.component.js","components/dTab/DTab.tsx","components/dTextBox/DTextBox.tsx","../node_modules/@syncfusion/ej2-notifications/src/toast/toast.js","../node_modules/@syncfusion/ej2-react-notifications/src/toast/toast.component.js","components/dToast/DToast.tsx","components/dToast/DToastModel.ts","contexts/_helpers.ts","contexts/AppContext.tsx","contexts/UserDialogContext.tsx","data/DWebApiAdaptor.ts","data/DDataManager.ts","pages/_shared/home/Home.tsx","pages/_shared/tabs/CompletedCourses.tsx","../node_modules/@syncfusion/ej2-react-inputs/src/uploader/uploader.component.js","pages/_shared/settings/components/EMailMessageSettings.tsx","pages/_shared/settings/components/EMailSettings.tsx","pages/_shared/settings/components/SettingsForm.tsx","pages/_shared/settings/components/TextSettings.tsx","pages/_shared/settings/Settings.tsx","pages/admin/home/tabs/toolbarItems.ts","pages/admin/home/tabs/DueCourses.tsx","pages/admin/home/tabs/InactiveUsers.tsx","pages/admin/home/tabs/Summary.tsx","pages/admin/home/tabs/UncompletedCourses.tsx","pages/admin/home/tabs/Users.tsx","pages/admin/home/tabs/UsersWithoutCourses.tsx","../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","../node_modules/@syncfusion/ej2-dropdowns/src/multi-select/checkbox-selection.js","pages/admin/home/ImportCSVDialog.tsx","pages/admin/home/AdminHome.tsx","pages/basic/Page400.tsx","pages/basic/Page404.tsx","pages/basic/Page500.tsx","../node_modules/@syncfusion/ej2-react-splitbuttons/src/drop-down-button/dropdownbutton.component.js","pages/login/LoginForm.tsx","pages/login/AdminLogin.tsx","pages/login/ForgotPassword.tsx","pages/login/Logout.tsx","pages/login/UserLogin.tsx","pages/login/SuperAdminLogin.tsx","pages/superAdmin/home/tabs/Admins.tsx","pages/superAdmin/home/tabs/Summary.tsx","pages/superAdmin/home/SuperAdminHome.tsx","pages/user/course/Course.tsx","pages/user/course/components/Confirmation.tsx","pages/user/course/components/Questions.tsx","pages/user/course/components/Slides.tsx","pages/user/course/Module.tsx","pages/user/course/Quiz.tsx","pages/user/home/UserHome.tsx","utils/history.ts","utils/env.ts","utils/user.ts","utils/axios.ts","utils/dateTime.ts","utils/ErrorBoundary.tsx","utils/i18n.ts","utils/PrivateRoute.tsx","utils/setting.ts","utils/string.ts","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/@syncfusion/ej2-base/src/util.js","../node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","../node_modules/@syncfusion/ej2-base/src/hijri-parser.js","../node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","../node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","../node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","../node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","../node_modules/@syncfusion/ej2-base/src/observer.js","../node_modules/@syncfusion/ej2-base/src/internationalization.js","../node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","../node_modules/@syncfusion/ej2-base/src/ajax.js","../node_modules/@syncfusion/ej2-base/src/fetch.js","../node_modules/@syncfusion/ej2-base/src/browser.js","../node_modules/@syncfusion/ej2-base/src/event-handler.js","../node_modules/@syncfusion/ej2-base/src/dom.js","../node_modules/@syncfusion/ej2-base/src/base.js","../node_modules/@syncfusion/ej2-base/src/notify-property-change.js","../node_modules/@syncfusion/ej2-base/src/animation.js","../node_modules/@syncfusion/ej2-base/src/module-loader.js","../node_modules/@syncfusion/ej2-base/src/validate-lic.js","../node_modules/@syncfusion/ej2-base/src/child-property.js","../node_modules/@syncfusion/ej2-base/src/component.js","../node_modules/@syncfusion/ej2-base/src/draggable.js","../node_modules/@syncfusion/ej2-base/src/droppable.js","../node_modules/@syncfusion/ej2-base/src/keyboard.js","../node_modules/@syncfusion/ej2-base/src/l10n.js","../node_modules/@syncfusion/ej2-base/src/touch.js","../node_modules/@syncfusion/ej2-base/src/template.js","../node_modules/@syncfusion/ej2-base/src/template-engine.js","../node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","../node_modules/@syncfusion/ej2-buttons/src/button/button.js","../node_modules/@syncfusion/ej2-buttons/src/common/common.js","../node_modules/@syncfusion/ej2-data/src/adaptors.js","../node_modules/@syncfusion/ej2-data/src/manager.js","../node_modules/@syncfusion/ej2-data/src/query.js","../node_modules/@syncfusion/ej2-data/src/util.js","../node_modules/@syncfusion/ej2-dropdowns/src/common/incremental-search.js","../node_modules/@syncfusion/ej2-notifications/src/skeleton/skeleton.js","../node_modules/@syncfusion/ej2-dropdowns/src/drop-down-base/drop-down-base.js","../node_modules/@syncfusion/ej2-dropdowns/src/drop-down-list/drop-down-list.js","../node_modules/@syncfusion/ej2-inputs/src/form-validator/form-validator.js","../node_modules/@syncfusion/ej2-inputs/src/input/input.js","../node_modules/@syncfusion/ej2-inputs/src/textbox/textbox.js","../node_modules/@syncfusion/ej2-inputs/src/uploader/uploader.js","../node_modules/@syncfusion/ej2-lists/src/common/list-base.js","../node_modules/@syncfusion/ej2-popups/src/common/collision.js","../node_modules/@syncfusion/ej2-popups/src/common/position.js","../node_modules/@syncfusion/ej2-popups/src/common/resize.js","../node_modules/@syncfusion/ej2-popups/src/dialog/dialog.js","../node_modules/@syncfusion/ej2-popups/src/popup/popup.js","../node_modules/@syncfusion/ej2-popups/src/spinner/spinner.js","../node_modules/@syncfusion/ej2-popups/src/tooltip/tooltip.js","../node_modules/@syncfusion/ej2-react-base/src/component-base.js","../node_modules/@syncfusion/ej2-react-base/src/util.js","../node_modules/@syncfusion/ej2-react-base/src/complex-base.js","../node_modules/@syncfusion/ej2-react-base/src/services.js","../node_modules/@syncfusion/ej2-react-base/src/template.js","../node_modules/@syncfusion/ej2-react-buttons/src/button/button.component.js","../node_modules/@syncfusion/ej2-react-dropdowns/src/drop-down-list/dropdownlist.component.js","../node_modules/@syncfusion/ej2-react-inputs/src/textbox/textbox.component.js","../node_modules/@syncfusion/ej2-react-popups/src/dialog/dialog.component.js","../node_modules/@syncfusion/ej2-react-popups/src/tooltip/tooltip.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/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../webpack/bootstrap","../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/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/css loading","../webpack/runtime/jsonp chunk loading","App.tsx","index.tsx"],"sourcesContent":["import { useState, useEffect } from \"react\";\r\nimport { Browser } from \"@syncfusion/ej2-base\";\r\nimport { getAuthenticatedUser, getSettingAsString, logout, Role } from \"utils\";\r\nimport { DButton, DInfoSymbol } from \"..\";\r\n\r\nimport \"./styles.scss\";\r\n\r\ninterface Props {\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport const DApp = ({ children }: Props) => {\r\n const user = getAuthenticatedUser();\r\n const salutation = user ? `Ciao, ${user.Name}` : \"\";\r\n\r\n const [prevScrollPos, setPrevScrollPos] = useState(0);\r\n const [visible, setVisible] = useState(true);\r\n const [footer, setFooter] = useState(\"\");\r\n\r\n const handleScroll = () => {\r\n const currentScrollPos = window.pageYOffset;\r\n setVisible(!Browser.isDevice || ((prevScrollPos > currentScrollPos && prevScrollPos - currentScrollPos > 70) || currentScrollPos < 10));\r\n setPrevScrollPos(currentScrollPos);\r\n };\r\n\r\n useEffect(() => {\r\n window.addEventListener('scroll', handleScroll);\r\n\r\n const fetchSettings = async () => {\r\n setFooter(await getSettingAsString(11));\r\n };\r\n fetchSettings();\r\n\r\n return () => window.removeEventListener('scroll', handleScroll);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return (\r\n <>\r\n \r\n\r\n
\r\n {children}\r\n
\r\n\r\n \r\n \r\n );\r\n};\r\n","import { createRef, RefObject } from \"react\";\r\nimport { ButtonComponent } from \"@syncfusion/ej2-react-buttons\";\r\n\r\nimport \"./styles.scss\";\r\n\r\ninterface Props {\r\n tooltip?: string;\r\n cssClass?: string;\r\n name?: string;\r\n iconCss?: string;\r\n iconPosition?: \"Left\" | \"Right\" | \"Top\" | \"Bottom\";\r\n disabled?: boolean;\r\n type?: \"submit\" | \"reset\";\r\n onClick?: (event: React.MouseEvent) => void;\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport const DButton = ({ tooltip, cssClass, name, iconCss, iconPosition = \"Left\", disabled, type, onClick, children }: Props) => {\r\n const buttonRef: RefObject = createRef();\r\n\r\n const created = () => {\r\n if (tooltip && buttonRef.current) buttonRef.current.element.setAttribute(\"title\", tooltip);\r\n };\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};","import { DButton } from \".\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { showWarningDialog } from \"components\";\r\n\r\ninterface GoBackButtonProps {\r\n text?: string;\r\n path?: string;\r\n showWarning?: boolean;\r\n warningMessage?: string\r\n}\r\n\r\nconst _GoBackButton = ({ text = \"Indietro\", path, showWarning, warningMessage }: GoBackButtonProps) => {\r\n const content = text;\r\n const navigate = useNavigate();\r\n const click = () => {\r\n const doNavigation = () => path ? navigate(path) : navigate(-1);\r\n if (showWarning) {\r\n showWarningDialog(warningMessage ?? \"\", () => doNavigation());\r\n } else {\r\n doNavigation();\r\n }\r\n };\r\n\r\n return (\r\n \r\n {content}\r\n \r\n );\r\n};\r\n\r\nexport const GoBackButton = _GoBackButton;\r\n","import \"./styles.scss\";\r\n\r\ninterface Props {\r\n className?: string;\r\n title?: string;\r\n subTitle?: string;\r\n image?: string;\r\n displayImageAsAvatar?: boolean;\r\n displayImageAsHeader?: boolean;\r\n backgroundColor?: string;\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport const DCard = ({ className, title, subTitle, image, displayImageAsAvatar, displayImageAsHeader, backgroundColor = \"#FFFFFF\", children }: Props) => {\r\n return (\r\n
\r\n {\r\n image && displayImageAsAvatar && (\r\n
\r\n
\r\n \"Avatar\"\r\n
\r\n
\r\n )\r\n }\r\n {\r\n image && displayImageAsHeader && (\r\n
\r\n {title &&
\r\n {title}\r\n
}\r\n
\r\n )\r\n }\r\n {\r\n title && !displayImageAsHeader && (\r\n < div className=\"e-card-header\">\r\n
\r\n
\r\n {title}\r\n
\r\n {subTitle &&
{subTitle}
}\r\n
\r\n
\r\n )\r\n }\r\n {((image || title) && !displayImageAsHeader) &&
}\r\n\r\n
{children}
\r\n \r\n );\r\n};\r\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property, setValue } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { addClass, detach, getUniqueID, isRippleEnabled, removeClass, rippleEffect, closest } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler, setHiddenInput } from './../common/common';\nvar CHECK = 'e-check';\nvar DISABLED = 'e-checkbox-disabled';\nvar FRAME = 'e-frame';\nvar INDETERMINATE = 'e-stop';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RIPPLECHECK = 'e-ripple-check';\nvar RIPPLEINDETERMINATE = 'e-ripple-stop';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-checkbox-wrapper';\nvar containerAttr = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value', 'id'];\n/**\n * The CheckBox is a graphical user interface element that allows you to select one or more options from the choices.\n * It contains checked, unchecked, and indeterminate states.\n * ```html\n * \n * \n * ```\n */\nvar CheckBox = /** @class */ (function (_super) {\n __extends(CheckBox, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {CheckBoxModel} options - Specifies checkbox model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function CheckBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n _this.isMouseClick = false;\n _this.clickTriggered = false;\n _this.validCheck = true;\n return _this;\n }\n CheckBox.prototype.changeState = function (state, isInitialize) {\n var ariaState;\n var rippleSpan = null;\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n if (isRippleEnabled) {\n rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n }\n if (state === 'check') {\n if (frameSpan) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n }\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLEINDETERMINATE);\n rippleSpan.classList.add(RIPPLECHECK);\n }\n ariaState = 'true';\n this.element.checked = true;\n if ((this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = false;\n this.validCheck = false;\n }\n else if (this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) {\n this.validCheck = true;\n }\n }\n else if (state === 'uncheck') {\n if (frameSpan) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n }\n if (rippleSpan) {\n removeClass([rippleSpan], [RIPPLECHECK, RIPPLEINDETERMINATE]);\n }\n ariaState = 'false';\n this.element.checked = false;\n if ((this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = true;\n this.validCheck = false;\n }\n else if (this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) {\n this.validCheck = true;\n }\n }\n else {\n if (frameSpan) {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n }\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLECHECK);\n rippleSpan.classList.add(RIPPLEINDETERMINATE);\n }\n ariaState = 'mixed';\n this.element.indeterminate = true;\n this.indeterminate = true;\n }\n };\n CheckBox.prototype.clickHandler = function (event) {\n if (event.target.tagName === 'INPUT' && this.clickTriggered) {\n if (this.isVue) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n this.clickTriggered = false;\n return;\n }\n if (event.target.tagName === 'SPAN' || event.target.tagName === 'LABEL') {\n this.clickTriggered = true;\n }\n if (this.isMouseClick) {\n this.focusOutHandler();\n this.isMouseClick = false;\n }\n if (this.indeterminate) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n this.indeterminate = false;\n this.element.indeterminate = false;\n }\n else if (this.checked) {\n this.changeState('uncheck');\n this.checked = false;\n }\n else {\n this.changeState('check');\n this.checked = true;\n }\n var changeEventArgs = { checked: this.updateVueArrayModel(false), event: event };\n this.trigger('change', changeEventArgs);\n event.stopPropagation();\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CheckBox.prototype.destroy = function () {\n var _this = this;\n var wrapper = this.getWrapper();\n _super.prototype.destroy.call(this);\n if (this.wrapper) {\n wrapper = this.wrapper;\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (this.getWrapper() && wrapper.parentNode) {\n wrapper.parentNode.insertBefore(this.element, wrapper);\n }\n detach(wrapper);\n this.element.checked = false;\n if (this.indeterminate) {\n this.element.indeterminate = false;\n }\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n this.element = wrapper;\n if (this.refreshing) {\n ['e-control', 'e-checkbox', 'e-lib'].forEach(function (key) {\n _this.element.classList.add(key);\n });\n setValue('ej2_instances', [this], this.element);\n }\n }\n }\n };\n CheckBox.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n CheckBox.prototype.focusOutHandler = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n wrapper.classList.remove('e-focus');\n }\n this.isFocused = false;\n };\n /**\n * Gets the module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n CheckBox.prototype.getModuleName = function () {\n return 'checkbox';\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n CheckBox.prototype.getPersistData = function () {\n return this.addOnPersist(['checked', 'indeterminate']);\n };\n CheckBox.prototype.getWrapper = function () {\n if (this.element && this.element.parentElement) {\n return this.element.parentElement.parentElement;\n }\n else {\n return null;\n }\n };\n CheckBox.prototype.getLabel = function () {\n if (this.element) {\n return this.element.parentElement;\n }\n else {\n return null;\n }\n };\n CheckBox.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n if (this.value) {\n this.element.setAttribute('value', this.value);\n if (this.isVue && typeof this.value === 'boolean' && this.value === true) {\n this.setProperties({ 'checked': true }, true);\n }\n }\n if (this.checked) {\n this.changeState('check', true);\n }\n if (this.indeterminate) {\n this.changeState();\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n CheckBox.prototype.initWrapper = function () {\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', {\n className: WRAPPER\n });\n if (this.element.parentNode) {\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n var frameSpan = this.createElement('span', { className: 'e-icons ' + FRAME });\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n wrapper.appendChild(label);\n label.appendChild(this.element);\n setHiddenInput(this, label);\n label.appendChild(frameSpan);\n if (isRippleEnabled) {\n var rippleSpan = this.createElement('span', { className: RIPPLE });\n if (this.labelPosition === 'Before') {\n label.appendChild(rippleSpan);\n }\n else {\n label.insertBefore(rippleSpan, frameSpan);\n }\n rippleEffect(rippleSpan, { duration: 400, isCenterRipple: true });\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n CheckBox.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getWrapper().classList.add('e-focus');\n }\n };\n CheckBox.prototype.labelMouseDownHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n CheckBox.prototype.labelMouseLeaveHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n CheckBox.prototype.labelMouseUpHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = 0; i < rippleElem.length - 1; i++) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {CheckBoxModel} newProp - Specifies new Properties\n * @param {CheckBoxModel} oldProp - Specifies old Properties\n *\n * @returns {void}\n */\n CheckBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrapper = this.getWrapper();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n this.indeterminate = false;\n this.element.indeterminate = false;\n this.changeState(newProp.checked ? 'check' : 'uncheck');\n break;\n case 'indeterminate':\n if (newProp.indeterminate) {\n this.changeState();\n }\n else {\n this.element.indeterminate = false;\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.wrapper = this.getWrapper();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n wrapper.classList.remove(DISABLED);\n wrapper.setAttribute('aria-disabled', 'false');\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition': {\n var label = wrapper.getElementsByClassName(LABEL)[0];\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n detach(label);\n if (newProp.labelPosition === 'After') {\n labelWrap.appendChild(label);\n }\n else {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n break;\n }\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n if (this.isVue && typeof newProp.value === 'object') {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToWrapper();\n break;\n }\n }\n };\n /**\n * Initialize Angular, React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.preRender = function () {\n var element = this.element;\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-CHECKBOX', 'checkbox', element, WRAPPER, 'checkbox');\n this.element = element;\n if (this.element.getAttribute('type') !== 'checkbox') {\n this.element.setAttribute('type', 'checkbox');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.render = function () {\n this.initWrapper();\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.updateHtmlAttributeToWrapper();\n this.updateVueArrayModel(true);\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n CheckBox.prototype.setDisabled = function () {\n var wrapper = this.getWrapper();\n this.element.disabled = true;\n wrapper.classList.add(DISABLED);\n wrapper.setAttribute('aria-disabled', 'true');\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n CheckBox.prototype.setText = function (text) {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n return;\n }\n var label = wrapper.getElementsByClassName(LABEL)[0];\n if (label) {\n label.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n label = this.createElement('span', { className: LABEL, innerHTML: text });\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n if (this.labelPosition === 'Before') {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n else {\n labelWrap.appendChild(label);\n }\n }\n };\n CheckBox.prototype.changeHandler = function (e) {\n e.stopPropagation();\n };\n CheckBox.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n this.element.checked = this.initialCheckedValue;\n };\n CheckBox.prototype.unWireEvents = function () {\n var wrapper = this.wrapper;\n EventHandler.remove(wrapper, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.remove(label, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(label, 'mouseup', this.labelMouseUpHandler);\n EventHandler.remove(label, 'mouseleave', this.labelMouseLeaveHandler);\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.remove(formElem, 'reset', this.formResetHandler);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.remove(this.element, 'change', this.changeHandler);\n }\n };\n CheckBox.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.add(wrapper, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.add(label, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(label, 'mouseup', this.labelMouseUpHandler, this);\n EventHandler.add(label, 'mouseleave', this.labelMouseLeaveHandler, this);\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.add(formElem, 'reset', this.formResetHandler, this);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n }\n };\n CheckBox.prototype.updateVueArrayModel = function (init) {\n if (this.isVue && typeof this.value === 'object') {\n var value = this.element.value;\n if (value && this.value) {\n if (init) {\n for (var i = 0; i < this.value.length; i++) {\n if (value === this.value[i]) {\n this.changeState('check');\n this.setProperties({ 'checked': true }, true);\n }\n }\n }\n else {\n var index = this.value.indexOf(value);\n if (this.checked) {\n if (index < 0) {\n this.value.push(value);\n }\n }\n else {\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.value;\n }\n }\n }\n return this.validCheck ? this.element.checked : !this.element.checked;\n };\n CheckBox.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n var wrapper = this.getWrapper();\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].split(' '));\n }\n else if (key === 'title') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else if (key === 'style') {\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n frameSpan.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else if (key === 'disabled') {\n if (this.htmlAttributes[\"\" + key] === 'true') {\n this.setDisabled();\n }\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n else {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n /**\n * Click the CheckBox element\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to CheckBox\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Event()\n ], CheckBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], CheckBox.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"indeterminate\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], CheckBox.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"value\", void 0);\n __decorate([\n Property(true)\n ], CheckBox.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], CheckBox.prototype, \"htmlAttributes\", void 0);\n CheckBox = __decorate([\n NotifyPropertyChanges\n ], CheckBox);\n return CheckBox;\n}(Component));\nexport { CheckBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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","import { createRef, RefObject } from \"react\";\r\nimport { ChangeEventArgs, CheckBoxComponent } from \"@syncfusion/ej2-react-buttons\";\r\n\r\ninterface Props {\r\n checkboxRef?: RefObject;\r\n name?: string;\r\n label?: string;\r\n value?: boolean;\r\n cssClass?: string;\r\n className?: string;\r\n change?: (args?: ChangeEventArgs) => void;\r\n id?: string;\r\n disabled?: boolean;\r\n htmlAttributes?: { [key: string]: string };\r\n}\r\n\r\nexport const DCheckBox = ({ checkboxRef = createRef(), name, label, value, cssClass, className, change, id, disabled, htmlAttributes }: Props) => {\r\n const created = () => {\r\n if(htmlAttributes && checkboxRef.current)\r\n for(const [key, value] of Object.entries(htmlAttributes)) \r\n checkboxRef.current.element.setAttribute(key, value); //FIXME: otherwise html-attributes are not set\r\n }\r\n\r\n return (\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};\n/* eslint-disable @typescript-eslint/no-unused-expressions */\nimport { Component, EventHandler, Internationalization } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, L10n } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { cldrData, getDefaultDateObject, rippleEffect } from '@syncfusion/ej2-base';\nimport { removeClass, detach, closest, addClass, attributes } from '@syncfusion/ej2-base';\nimport { getValue, getUniqueID, extend, Browser } from '@syncfusion/ej2-base';\nimport { Property, Event, isNullOrUndefined, throwError } from '@syncfusion/ej2-base';\n//class constant defination.\nvar OTHERMONTH = 'e-other-month';\nvar OTHERDECADE = 'e-other-year';\nvar ROOT = 'e-calendar';\nvar DEVICE = 'e-device';\nvar HEADER = 'e-header';\nvar RTL = 'e-rtl';\nvar CONTENT = 'e-content';\nvar CONTENTTABLE = 'e-calendar-content-table';\nvar YEAR = 'e-year';\nvar MONTH = 'e-month';\nvar DECADE = 'e-decade';\nvar ICON = 'e-icons';\nvar PREVICON = 'e-prev';\nvar NEXTICON = 'e-next';\nvar PREVSPAN = 'e-date-icon-prev';\nvar NEXTSPAN = 'e-date-icon-next ';\nvar ICONCONTAINER = 'e-icon-container';\nvar DISABLED = 'e-disabled';\nvar OVERLAY = 'e-overlay';\nvar WEEKEND = 'e-weekend';\nvar WEEKNUMBER = 'e-week-number';\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar FOCUSEDCELL = 'e-focused-cell';\nvar OTHERMONTHROW = 'e-month-hide';\nvar TODAY = 'e-today';\nvar TITLE = 'e-title';\nvar LINK = 'e-day';\nvar CELL = 'e-cell';\nvar WEEKHEADER = 'e-week-header';\nvar ZOOMIN = 'e-zoomin';\nvar FOOTER = 'e-footer-container';\nvar BTN = 'e-btn';\nvar FLAT = 'e-flat';\nvar CSS = 'e-css';\nvar PRIMARY = 'e-primary';\nvar DAYHEADERLONG = 'e-calendar-day-header-lg';\nvar dayMilliSeconds = 86400000;\nvar minutesMilliSeconds = 60000;\n/**\n *\n * @private\n */\nvar CalendarBase = /** @class */ (function (_super) {\n __extends(CalendarBase, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarBaseModel} options - Specifies the CalendarBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function CalendarBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.effect = '';\n _this.isPopupClicked = false;\n _this.isDateSelected = true;\n _this.isTodayClicked = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.previousDates = false;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.render = function () {\n this.rangeValidation(this.min, this.max);\n this.calendarEleCopy = this.element.cloneNode(true);\n if (this.calendarMode === 'Islamic') {\n if (+(this.min.setSeconds(0)) === +new Date(1900, 0, 1, 0, 0, 0)) {\n this.min = new Date(1944, 2, 18);\n }\n if (+this.max === +new Date(2099, 11, 31)) {\n this.max = new Date(2069, 10, 16);\n }\n }\n this.globalize = new Internationalization(this.locale);\n if (isNullOrUndefined(this.firstDayOfWeek) || this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: this.globalize.getFirstDayOfWeek() }, true);\n }\n this.todayDisabled = false;\n this.todayDate = new Date(new Date().setHours(0, 0, 0, 0));\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add(ROOT);\n if (this.enableRtl) {\n this.element.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.element.classList.add(DEVICE);\n }\n attributes(this.element, {\n 'data-role': 'calendar'\n });\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.calendarElement = this.createElement('div');\n this.calendarElement.classList.add(ROOT);\n if (this.enableRtl) {\n this.calendarElement.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.calendarElement.classList.add(DEVICE);\n }\n attributes(this.calendarElement, {\n 'data-role': 'calendar'\n });\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.createHeader();\n this.createContent();\n this.wireEvents();\n };\n CalendarBase.prototype.rangeValidation = function (min, max) {\n if (isNullOrUndefined(min)) {\n this.setProperties({ min: new Date(1900, 0, 1) }, true);\n }\n if (isNullOrUndefined(max)) {\n this.setProperties({ max: new Date(2099, 11, 31) }, true);\n }\n };\n CalendarBase.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n altUpArrow: 'alt+uparrow',\n spacebar: 'space',\n altRightArrow: 'alt+rightarrow',\n altLeftArrow: 'alt+leftarrow'\n };\n return this.defaultKeyConfigs;\n };\n CalendarBase.prototype.validateDate = function (value) {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(this.max))) }, true);\n this.currentDate = this.currentDate ? this.currentDate : new Date(new Date().setHours(0, 0, 0, 0));\n if (!isNullOrUndefined(value) && this.min <= this.max && value >= this.min && value <= this.max) {\n this.currentDate = new Date(this.checkValue(value));\n }\n };\n CalendarBase.prototype.setOverlayIndex = function (popupWrapper, popupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(popupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(popupElement.style.zIndex, 10) ? parseInt(popupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n CalendarBase.prototype.minMaxUpdate = function (value) {\n if (!(+this.min <= +this.max)) {\n this.setProperties({ min: this.min }, true);\n addClass([this.element], OVERLAY);\n }\n else {\n removeClass([this.element], OVERLAY);\n }\n this.min = isNullOrUndefined(this.min) || !(+this.min) ? this.min = new Date(1900, 0, 1) : this.min;\n this.max = isNullOrUndefined(this.max) || !(+this.max) ? this.max = new Date(2099, 11, 31) : this.max;\n if (+this.min <= +this.max && value && +value <= +this.max && +value >= +this.min) {\n this.currentDate = new Date(this.checkValue(value));\n }\n else {\n if (+this.min <= +this.max && !value && +this.currentDate > +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n else {\n if (+this.currentDate < +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n }\n }\n };\n CalendarBase.prototype.createHeader = function () {\n var ariaPrevAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'previous month'\n };\n var ariaNextAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'next month'\n };\n var ariaTitleAttrs = {\n 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'title'\n };\n var tabIndexAttr = { 'tabindex': '0' };\n this.headerElement = this.createElement('div', { className: HEADER });\n var iconContainer = this.createElement('div', { className: ICONCONTAINER });\n this.previousIcon = this.createElement('button', { className: '' + PREVICON, attrs: { type: 'button' } });\n rippleEffect(this.previousIcon, {\n duration: 400,\n selector: '.e-prev',\n isCenterRipple: true\n });\n attributes(this.previousIcon, ariaPrevAttrs);\n attributes(this.previousIcon, tabIndexAttr);\n this.nextIcon = this.createElement('button', { className: '' + NEXTICON, attrs: { type: 'button' } });\n rippleEffect(this.nextIcon, {\n selector: '.e-next',\n duration: 400,\n isCenterRipple: true\n });\n if (this.getModuleName() === 'daterangepicker') {\n attributes(this.previousIcon, { tabIndex: '-1' });\n attributes(this.nextIcon, { tabIndex: '-1' });\n }\n attributes(this.nextIcon, ariaNextAttrs);\n attributes(this.nextIcon, tabIndexAttr);\n this.headerTitleElement = this.createElement('div', { className: '' + LINK + ' ' + TITLE });\n attributes(this.headerTitleElement, ariaTitleAttrs);\n attributes(this.headerTitleElement, tabIndexAttr);\n this.headerElement.appendChild(this.headerTitleElement);\n this.previousIcon.appendChild(this.createElement('span', { className: '' + PREVSPAN + ' ' + ICON }));\n this.nextIcon.appendChild(this.createElement('span', { className: '' + NEXTSPAN + ' ' + ICON }));\n iconContainer.appendChild(this.previousIcon);\n iconContainer.appendChild(this.nextIcon);\n this.headerElement.appendChild(iconContainer);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.headerElement);\n }\n else {\n this.calendarElement.appendChild(this.headerElement);\n }\n this.adjustLongHeaderSize();\n };\n CalendarBase.prototype.createContent = function () {\n this.contentElement = this.createElement('div', { className: CONTENT });\n this.table = this.createElement('table', { attrs: { 'class': CONTENTTABLE, 'tabIndex': '0', 'role': 'grid', 'aria-activedescendant': '', 'aria-labelledby': this.element.id } });\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.contentElement);\n }\n else {\n this.calendarElement.appendChild(this.contentElement);\n }\n this.contentElement.appendChild(this.table);\n this.createContentHeader();\n this.createContentBody();\n if (this.showTodayButton) {\n this.createContentFooter();\n }\n if (this.getModuleName() != 'daterangepicker') {\n EventHandler.add(this.table, 'focus', this.addContentFocus, this);\n EventHandler.add(this.table, 'blur', this.removeContentFocus, this);\n }\n };\n CalendarBase.prototype.addContentFocus = function (args) {\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n if (!isNullOrUndefined(selectedDate)) {\n selectedDate.classList.add(FOCUSEDCELL);\n }\n else if (!isNullOrUndefined(focusedDate)) {\n focusedDate.classList.add(FOCUSEDCELL);\n }\n };\n CalendarBase.prototype.removeContentFocus = function (args) {\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n if (!isNullOrUndefined(selectedDate)) {\n selectedDate.classList.remove(FOCUSEDCELL);\n }\n else if (!isNullOrUndefined(focusedDate)) {\n focusedDate.classList.remove(FOCUSEDCELL);\n }\n };\n CalendarBase.prototype.getCultureValues = function () {\n var culShortNames = [];\n var cldrObj;\n var dayFormat = 'days.stand-alone.' + this.dayHeaderFormat.toLowerCase();\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrObj = (getValue(dayFormat, getDefaultDateObject()));\n }\n else {\n cldrObj = (this.getCultureObjects(cldrData, '' + this.locale));\n }\n if (!isNullOrUndefined(cldrObj)) {\n for (var _i = 0, _a = Object.keys(cldrObj); _i < _a.length; _i++) {\n var obj = _a[_i];\n culShortNames.push(getValue(obj, cldrObj));\n }\n }\n return culShortNames;\n };\n CalendarBase.prototype.toCapitalize = function (text) {\n return !isNullOrUndefined(text) && text.length ? text[0].toUpperCase() + text.slice(1) : text;\n };\n CalendarBase.prototype.createContentHeader = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.element.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n var daysCount = 6;\n var html = '';\n if (this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: 0 }, true);\n }\n this.tableHeadElement = this.createElement('thead', { className: WEEKHEADER });\n if (this.weekNumber) {\n html += '';\n if (this.getModuleName() === 'calendar') {\n addClass([this.element], '' + WEEKNUMBER);\n }\n else {\n addClass([this.calendarElement], '' + WEEKNUMBER);\n }\n }\n // eslint-disable-next-line max-len\n var shortNames = this.getCultureValues().length > 0 && this.getCultureValues() ? this.shiftArray(((this.getCultureValues().length > 0 && this.getCultureValues())), this.firstDayOfWeek) : null;\n if (!isNullOrUndefined(shortNames)) {\n for (var days = 0; days <= daysCount; days++) {\n html += '' + this.toCapitalize(shortNames[days]) + '';\n }\n }\n html = '' + html + '';\n this.tableHeadElement.innerHTML = html;\n this.table.appendChild(this.tableHeadElement);\n };\n CalendarBase.prototype.createContentBody = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content tbody')[0])) {\n detach(this.element.querySelectorAll('.e-content tbody')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content tbody')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content tbody')[0]);\n }\n }\n switch (this.start) {\n case 'Year':\n this.renderYears();\n break;\n case 'Decade':\n this.renderDecades();\n break;\n default:\n this.renderMonths();\n }\n };\n CalendarBase.prototype.updateFooter = function () {\n this.todayElement.textContent = this.l10.getConstant('today');\n this.todayElement.setAttribute('aria-label', this.l10.getConstant('today'));\n this.todayElement.setAttribute('tabindex', '0');\n };\n CalendarBase.prototype.createContentFooter = function () {\n if (this.showTodayButton) {\n var minimum = new Date(+this.min);\n var maximum = new Date(+this.max);\n var l10nLocale = { today: 'Today' };\n this.globalize = new Internationalization(this.locale);\n this.l10 = new L10n(this.getModuleName(), l10nLocale, this.locale);\n this.todayElement = this.createElement('button', { attrs: { role: 'button' } });\n rippleEffect(this.todayElement);\n this.updateFooter();\n addClass([this.todayElement], [BTN, TODAY, FLAT, PRIMARY, CSS]);\n if ((!(+new Date(minimum.setHours(0, 0, 0, 0)) <= +this.todayDate &&\n +this.todayDate <= +new Date(maximum.setHours(0, 0, 0, 0)))) || (this.todayDisabled)) {\n addClass([this.todayElement], DISABLED);\n }\n this.footer = this.createElement('div', { className: FOOTER });\n this.footer.appendChild(this.todayElement);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (!this.todayElement.classList.contains(DISABLED)) {\n EventHandler.add(this.todayElement, 'click', this.todayButtonClick, this);\n }\n }\n };\n CalendarBase.prototype.wireEvents = function (id, ref, keyConfig, moduleName) {\n EventHandler.add(this.headerTitleElement, 'click', this.navigateTitle, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n if (this.getModuleName() === 'calendar') {\n this.keyboardModule = new KeyboardEvents(this.element, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.calendarElement, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n };\n CalendarBase.prototype.dateWireEvents = function (id, ref, keyConfig, moduleName) {\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, keyConfig);\n this.serverModuleName = moduleName;\n };\n CalendarBase.prototype.todayButtonClick = function (e, value, isCustomDate) {\n if (this.showTodayButton) {\n if (this.currentView() === this.depth) {\n this.effect = '';\n }\n else {\n this.effect = 'e-zoomin';\n }\n if (this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.navigateTo(this.depth, new Date(this.checkValue(value)), isCustomDate);\n }\n else {\n this.navigateTo('Month', new Date(this.checkValue(value)), isCustomDate);\n }\n }\n };\n CalendarBase.prototype.resetCalendar = function () {\n this.calendarElement && detach(this.calendarElement);\n this.tableBodyElement && detach(this.tableBodyElement);\n this.table && detach(this.table);\n this.tableHeadElement && detach(this.tableHeadElement);\n this.nextIcon && detach(this.nextIcon);\n this.previousIcon && detach(this.previousIcon);\n this.footer && detach(this.footer);\n this.todayElement = null;\n this.renderDayCellArgs = null;\n this.calendarElement = this.tableBodyElement = this.footer = this.tableHeadElement =\n this.nextIcon = this.previousIcon = this.table = null;\n };\n CalendarBase.prototype.keyActionHandle = function (e, value, multiSelection) {\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate;\n if (multiSelection) {\n if (!isNullOrUndefined(focusedDate) && +value === parseInt(focusedDate.getAttribute('id').split('_')[0], 10)) {\n selectedDate = focusedDate;\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n var view = this.getViewNumber(this.currentView());\n var depthValue = this.getViewNumber(this.depth);\n var levelRestrict = (view === depthValue && this.getViewNumber(this.start) >= depthValue);\n this.effect = '';\n switch (e.action) {\n case 'moveLeft':\n if (this.getModuleName() != 'daterangepicker' && !isNullOrUndefined(e.target) && e.target.classList.length > 0 && e.target.classList.contains(CONTENTTABLE)) {\n this.keyboardNavigate(-1, view, e, this.max, this.min);\n e.preventDefault();\n }\n break;\n case 'moveRight':\n if (this.getModuleName() != 'daterangepicker' && !isNullOrUndefined(e.target) && e.target.classList.length > 0 && e.target.classList.contains(CONTENTTABLE)) {\n this.keyboardNavigate(1, view, e, this.max, this.min);\n e.preventDefault();\n }\n break;\n case 'moveUp':\n if (this.getModuleName() != 'daterangepicker' && !isNullOrUndefined(e.target) && e.target.classList.length > 0 && e.target.classList.contains(CONTENTTABLE)) {\n if (view === 0) {\n this.keyboardNavigate(-7, view, e, this.max, this.min); // move the current date to the previous seven days.\n }\n else {\n this.keyboardNavigate(-4, view, e, this.max, this.min); // move the current year to the previous four days.\n }\n e.preventDefault();\n }\n break;\n case 'moveDown':\n if (this.getModuleName() != 'daterangepicker' && !isNullOrUndefined(e.target) && e.target.classList.length > 0 && e.target.classList.contains(CONTENTTABLE)) {\n if (view === 0) {\n this.keyboardNavigate(7, view, e, this.max, this.min);\n }\n else {\n this.keyboardNavigate(4, view, e, this.max, this.min);\n }\n e.preventDefault();\n }\n break;\n case 'select':\n if (e.target === this.headerTitleElement) {\n this.navigateTitle(e);\n }\n else if (e.target === this.previousIcon) {\n this.navigatePrevious(e);\n }\n else if (e.target === this.nextIcon) {\n this.navigateNext(e);\n }\n else if (e.target === this.todayElement) {\n this.todayButtonClick(e, value);\n if (this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') {\n this.element.focus();\n }\n }\n else {\n var element = !isNullOrUndefined(focusedDate) ? focusedDate : selectedDate;\n if (!isNullOrUndefined(element) && !element.classList.contains(DISABLED)) {\n if (levelRestrict) {\n // eslint-disable-next-line radix\n var d = new Date(parseInt('' + (element).id, 0));\n this.selectDate(e, d, (element));\n }\n else {\n this.contentClick(null, --view, (element), value);\n }\n if (this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') {\n this.element.focus();\n }\n }\n }\n break;\n case 'controlUp':\n this.title();\n e.preventDefault();\n break;\n case 'controlDown':\n if (!isNullOrUndefined(focusedDate) && !levelRestrict || !isNullOrUndefined(selectedDate) && !levelRestrict) {\n this.contentClick(null, --view, (focusedDate || selectedDate), value);\n }\n e.preventDefault();\n break;\n case 'home':\n this.currentDate = this.firstDay(this.currentDate);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'end':\n this.currentDate = this.lastDay(this.currentDate, view);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'pageUp':\n this.addMonths(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'pageDown':\n this.addMonths(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageUp':\n this.addYears(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageDown':\n this.addYears(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'controlHome':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 0, 1));\n e.preventDefault();\n break;\n case 'controlEnd':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 11, 31));\n e.preventDefault();\n break;\n case 'tab':\n if ((this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') && e.target === this.todayElement) {\n e.preventDefault();\n this.element.focus();\n this.hide();\n }\n break;\n case 'shiftTab':\n if ((this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') && e.target === this.headerTitleElement) {\n e.preventDefault();\n this.element.focus();\n this.hide();\n }\n break;\n }\n };\n CalendarBase.prototype.keyboardNavigate = function (number, currentView, e, max, min) {\n var date = new Date(this.checkValue(this.currentDate));\n switch (currentView) {\n case 2:\n this.addYears(this.currentDate, number);\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n case 1:\n this.addMonths(this.currentDate, number);\n if (this.calendarMode === 'Gregorian') {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n else {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n break;\n case 0:\n this.addDay(this.currentDate, number, e, max, min);\n if (this.isMinMaxRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n }\n };\n /**\n * Initialize the event handler\n *\n * @param {Date} value - Specifies value of date.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.preRender = function (value) {\n var _this = this;\n this.navigatePreviousHandler = this.navigatePrevious.bind(this);\n this.navigateNextHandler = this.navigateNext.bind(this);\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.navigateHandler = function (e) {\n _this.triggerNavigate(e);\n };\n };\n CalendarBase.prototype.minMaxDate = function (localDate) {\n var currentDate = new Date(new Date(+localDate).setHours(0, 0, 0, 0));\n var minDate = new Date(new Date(+this.min).setHours(0, 0, 0, 0));\n var maxDate = new Date(new Date(+this.max).setHours(0, 0, 0, 0));\n if (+currentDate === +minDate || +currentDate === +maxDate) {\n if (+localDate < +this.min) {\n localDate = new Date(+this.min);\n }\n if (+localDate > +this.max) {\n localDate = new Date(+this.max);\n }\n }\n return localDate;\n };\n CalendarBase.prototype.renderMonths = function (e, value, isCustomDate) {\n var numCells = this.weekNumber ? 8 : 7;\n var tdEles;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(this.currentDate, value, null, null, isCustomDate, e);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n this.createContentHeader();\n if (this.calendarMode === 'Gregorian') {\n this.renderTemplate(tdEles, numCells, MONTH, e, value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(tdEles, numCells, MONTH, e, value);\n }\n };\n CalendarBase.prototype.renderDays = function (currentDate, value, multiSelection, values, isTodayDate, e) {\n var tdEles = [];\n var cellsCount = 42;\n var todayDate = isTodayDate ? new Date(+currentDate) : this.getDate(new Date(), this.timezone);\n var localDate = new Date(this.checkValue(currentDate));\n var minMaxDate;\n var currentMonth = localDate.getMonth();\n this.titleUpdate(currentDate, 'days');\n var d = localDate;\n localDate = new Date(d.getFullYear(), d.getMonth(), 0, d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds());\n while (localDate.getDay() !== this.firstDayOfWeek) {\n this.setStartDate(localDate, -1 * dayMilliSeconds);\n }\n for (var day = 0; day < cellsCount; ++day) {\n var weekEle = this.createElement('td', { className: CELL });\n var weekAnchor = this.createElement('span');\n if (day % 7 === 0 && this.weekNumber) {\n // 6 days are added to get Last day of the week and 3 days are added to get middle day of the week.\n var numberOfDays = this.weekRule === 'FirstDay' ? 6 : (this.weekRule === 'FirstFourDayWeek' ? 3 : 0);\n var finalDate = new Date(localDate.getFullYear(), localDate.getMonth(), (localDate.getDate() + numberOfDays));\n weekAnchor.textContent = '' + this.getWeek(finalDate);\n weekEle.appendChild(weekAnchor);\n addClass([weekEle], '' + WEEKNUMBER);\n tdEles.push(weekEle);\n }\n minMaxDate = new Date(+localDate);\n localDate = this.minMaxDate(localDate);\n var dateFormatOptions = { type: 'dateTime', skeleton: 'full' };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var tdEle = this.dayCell(localDate);\n var title = this.globalize.formatDate(localDate, { type: 'date', skeleton: 'full' });\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, { format: 'd', type: 'date', skeleton: 'yMd' });\n var disabled = (this.min > localDate) || (this.max < localDate);\n if (disabled) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n }\n else {\n dayLink.setAttribute('title', '' + title);\n }\n if (currentMonth !== localDate.getMonth()) {\n addClass([tdEle], OTHERMONTH);\n dayLink.setAttribute('aria-disabled', 'true');\n }\n if (localDate.getDay() === 0 || localDate.getDay() === 6) {\n addClass([tdEle], WEEKEND);\n }\n tdEle.appendChild(dayLink);\n this.renderDayCellArgs = {\n date: localDate,\n isDisabled: false,\n element: tdEle,\n isOutOfRange: disabled\n };\n var argument = this.renderDayCellArgs;\n this.renderDayCellEvent(argument);\n if (argument.isDisabled) {\n var selectDate = new Date(this.checkValue(value));\n var argsDate = new Date(this.checkValue(argument.date));\n if (multiSelection) {\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n var localDateString = +new Date(this.globalize.formatDate(argument.date, { type: 'date', skeleton: 'yMd' }));\n var tempDateString = +new Date(this.globalize.formatDate(values[index], { type: 'date', skeleton: 'yMd' }));\n if (localDateString === tempDateString) {\n values.splice(index, 1);\n index = -1;\n }\n }\n }\n }\n else if (selectDate && +selectDate === +argsDate) {\n this.setProperties({ value: null }, true);\n }\n }\n if (this.renderDayCellArgs.isDisabled && !tdEle.classList.contains(SELECTED)) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n dayLink.setAttribute('aria-disabled', 'true');\n if (+this.renderDayCellArgs.date === +this.todayDate) {\n this.todayDisabled = true;\n }\n }\n var otherMnthBool = tdEle.classList.contains(OTHERMONTH);\n var disabledCls = tdEle.classList.contains(DISABLED);\n if (!disabledCls) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n // to set the value as null while setting the disabled date onProperty change.\n // if (args.isDisabled && +this.value === +args.date) {\n // this.setProperties({ value: null }, true);\n // }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentTarget = void 0;\n if (!isNullOrUndefined(e) && e.type === 'click') {\n currentTarget = e.currentTarget;\n }\n if (multiSelection && !isNullOrUndefined(values) && !disabledCls) {\n for (var tempValue = 0; tempValue < values.length; tempValue++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: null, type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(localDate, formatOptions);\n var tempDateString = this.globalize.formatDate(values[tempValue], formatOptions);\n if ((localDateString === tempDateString && this.getDateVal(localDate, values[tempValue]))\n || (this.getDateVal(localDate, value))) {\n addClass([tdEle], SELECTED);\n }\n if (!isNullOrUndefined(currentTarget) && currentTarget.innerText === tdEle.innerText &&\n this.previousDates && tdEle.classList.contains(SELECTED) && currentTarget.classList.contains(SELECTED)) {\n removeClass([tdEle], SELECTED);\n this.previousDates = false;\n var copyValues = this.copyValues(values);\n for (var i = 0; i < copyValues.length; i++) {\n var type_1 = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions_1 = { format: null, type: 'date', skeleton: 'short', calendar: type_1 };\n var localDateString_1 = this.globalize.formatDate(date, formatOptions_1);\n var tempDateString_1 = this.globalize.formatDate(copyValues[i], formatOptions_1);\n if (localDateString_1 === tempDateString_1) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n values.splice(index, 1);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n if (values.length <= 0) {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n else if (!disabledCls && this.getDateVal(localDate, value)) {\n addClass([tdEle], SELECTED);\n }\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n if (!isNullOrUndefined(date) && date.getFullYear() === todayDate.getFullYear() && date.getMonth() === todayDate.getMonth()\n && date.getDate() === todayDate.getDate()) {\n addClass([tdEle], TODAY);\n }\n tdEles.push(this.renderDayCellArgs.element);\n localDate = new Date(+minMaxDate);\n this.addDay(localDate, 1, null, this.max, this.min);\n }\n return tdEles;\n };\n CalendarBase.prototype.updateFocus = function (otherMonth, disabled, localDate, tableElement, currentDate) {\n if (currentDate.getDate() === localDate.getDate() && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n else {\n // eslint-disable-next-line radix\n if (currentDate >= this.max && parseInt(tableElement.id, 0) === +this.max && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n // eslint-disable-next-line radix\n if (currentDate <= this.min && parseInt(tableElement.id, 0) === +this.min && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n }\n };\n CalendarBase.prototype.renderYears = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var tdEles = [];\n var valueUtil = isNullOrUndefined(value);\n var curDate = new Date(this.checkValue(this.currentDate));\n var mon = curDate.getMonth();\n var yr = curDate.getFullYear();\n var localDate = curDate;\n var curYrs = localDate.getFullYear();\n var minYr = new Date(this.checkValue(this.min)).getFullYear();\n var minMonth = new Date(this.checkValue(this.min)).getMonth();\n var maxYr = new Date(this.checkValue(this.max)).getFullYear();\n var maxMonth = new Date(this.checkValue(this.max)).getMonth();\n localDate.setMonth(0);\n this.titleUpdate(this.currentDate, 'months');\n localDate.setDate(1);\n for (var month = 0; month < 12; ++month) {\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n var localMonth = (value && (value).getMonth() === localDate.getMonth());\n var select = (value && (value).getFullYear() === yr && localMonth);\n var title = this.globalize.formatDate(localDate, { type: 'date', format: 'MMM y' });\n dayLink.textContent = this.toCapitalize(this.globalize.formatDate(localDate, {\n format: null, type: 'dateTime', skeleton: 'MMM'\n }));\n if ((this.min && (curYrs < minYr || (month < minMonth && curYrs === minYr))) || (this.max && (curYrs > maxYr || (month > maxMonth && curYrs >= maxYr)))) {\n addClass([tdEle], DISABLED);\n }\n else if (!valueUtil && select) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getMonth() === mon && this.currentDate.getMonth() === mon) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n localDate.setDate(1);\n localDate.setMonth(localDate.getMonth() + 1);\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n dayLink.setAttribute('title', '' + title);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, YEAR, e, value);\n };\n CalendarBase.prototype.renderDecades = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var yearCell = 12;\n var tdEles = [];\n var localDate = new Date(this.checkValue(this.currentDate));\n localDate.setMonth(0);\n localDate.setDate(1);\n var localYr = localDate.getFullYear();\n var startYr = new Date(localDate.setFullYear((localYr - localYr % 10)));\n var endYr = new Date(localDate.setFullYear((localYr - localYr % 10 + (10 - 1))));\n var startFullYr = startYr.getFullYear();\n var endFullYr = endYr.getFullYear();\n var startHdrYr = this.globalize.formatDate(startYr, {\n format: null, type: 'dateTime', skeleton: 'y'\n });\n var endHdrYr = this.globalize.formatDate(endYr, { format: null, type: 'dateTime', skeleton: 'y' });\n this.headerTitleElement.textContent = startHdrYr + ' - ' + (endHdrYr);\n var start = new Date(localYr - (localYr % 10) - 1, 0, 1);\n var startYear = start.getFullYear();\n for (var rowIterator = 0; rowIterator < yearCell; ++rowIterator) {\n var year = startYear + rowIterator;\n localDate.setFullYear(year);\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, {\n format: null, type: 'dateTime', skeleton: 'y'\n });\n if ((year < startFullYr) || (year > endFullYr)) {\n addClass([tdEle], OTHERDECADE);\n dayLink.setAttribute('aria-disabled', 'true');\n if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n }\n else if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n else if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getFullYear() === this.currentDate.getFullYear() && !tdEle.classList.contains(DISABLED)) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n dayLink.setAttribute('title', '' + dayLink.textContent);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, 'e-decade', e, value);\n };\n CalendarBase.prototype.dayCell = function (localDate) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { skeleton: 'full', type: 'dateTime', calendar: type };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var value;\n if (!isNullOrUndefined(date)) {\n value = date.valueOf();\n }\n var attrs = {\n className: CELL, attrs: { 'id': '' + getUniqueID('' + value), 'aria-selected': 'false' }\n };\n return this.createElement('td', attrs);\n };\n CalendarBase.prototype.firstDay = function (date) {\n var collection = this.currentView() !== 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '');\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.lastDay = function (date, view) {\n var lastDate = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n if (view !== 2) {\n var timeOffset = Math.abs(lastDate.getTimezoneOffset() - this.firstDay(date).getTimezoneOffset());\n if (timeOffset) {\n lastDate.setHours(this.firstDay(date).getHours() + (timeOffset / 60));\n }\n return this.findLastDay(lastDate);\n }\n else {\n return this.findLastDay(this.firstDay(lastDate));\n }\n };\n CalendarBase.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n CalendarBase.prototype.findLastDay = function (date) {\n var collection = this.currentView() === 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '');\n if (collection.length) {\n for (var i = collection.length - 1; i >= 0; i--) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.removeTableHeadElement = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.renderTemplate = function (elements, count, classNm, e, value) {\n var view = this.getViewNumber(this.currentView());\n var trEle;\n this.tableBodyElement = this.createElement('tbody');\n this.table.appendChild(this.tableBodyElement);\n removeClass([this.contentElement, this.headerElement], [MONTH, DECADE, YEAR]);\n addClass([this.contentElement, this.headerElement], [classNm]);\n var weekNumCell = 41;\n var numberCell = 35;\n var otherMonthCell = 6;\n var row = count;\n var rowIterator = 0;\n for (var dayCell = 0; dayCell < elements.length / count; ++dayCell) {\n trEle = this.createElement('tr');\n for (rowIterator = 0 + rowIterator; rowIterator < row; rowIterator++) {\n if (!elements[rowIterator].classList.contains('e-week-number') && !isNullOrUndefined(elements[rowIterator].children[0])) {\n addClass([elements[rowIterator].children[0]], [LINK]);\n rippleEffect(elements[rowIterator].children[0], {\n duration: 600,\n isCenterRipple: true\n });\n }\n trEle.appendChild(elements[rowIterator]);\n if (this.weekNumber && rowIterator === otherMonthCell + 1 && elements[otherMonthCell + 1].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (!this.weekNumber && rowIterator === otherMonthCell && elements[otherMonthCell].\n classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (this.weekNumber) {\n if (rowIterator === weekNumCell && elements[weekNumCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n else {\n if (rowIterator === numberCell && elements[numberCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n }\n row = row + count;\n rowIterator = rowIterator + 0;\n this.tableBodyElement.appendChild(trEle);\n }\n this.table.querySelector('tbody').className = this.effect;\n if (this.calendarMode === 'Gregorian') {\n this.iconHandler();\n }\n else {\n this.islamicModule.islamicIconHandler();\n }\n if (view !== this.getViewNumber(this.currentView()) || (view === 0 && view !== this.getViewNumber(this.currentView()))) {\n this.navigateHandler(e);\n }\n this.setAriaActiveDescendant();\n };\n CalendarBase.prototype.clickHandler = function (e, value) {\n this.clickEventEmitter(e);\n var eve = e.currentTarget;\n var view = this.getViewNumber(this.currentView());\n if (eve.classList.contains(OTHERMONTH)) {\n this.contentClick(e, 0, null, value);\n }\n else if (view === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.contentClick(e, 1, null, value);\n }\n else if (2 === view) {\n this.contentClick(e, 1, null, value);\n }\n else if (!eve.classList.contains(OTHERMONTH) && view === 0) {\n this.selectDate(e, this.getIdValue(e, null), null);\n }\n else {\n this.contentClick(e, 0, eve, value);\n }\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n // Content click event handler required for extended components\n CalendarBase.prototype.clickEventEmitter = function (e) {\n e.preventDefault();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.contentClick = function (e, view, element, value) {\n var currentView = this.getViewNumber(this.currentView());\n var d = this.getIdValue(e, element);\n switch (view) {\n case 0:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n detach(this.tableBodyElement);\n this.currentDate = d;\n this.effect = ZOOMIN;\n this.renderMonths(e);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setMonth(d.getMonth());\n if (d.getMonth() > 0 && this.currentDate.getMonth() !== d.getMonth()) {\n this.currentDate.setDate(0);\n }\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.currentDate = d;\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n break;\n case 1:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.selectDate(e, d, null);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.islamicPreviousHeader = this.headerElement.textContent;\n var islamicDate = this.islamicModule.getIslamicDate(d);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, islamicDate.month, 1);\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n }\n };\n CalendarBase.prototype.switchView = function (view, e, multiSelection, isCustomDate) {\n switch (view) {\n case 0:\n detach(this.tableBodyElement);\n this.renderMonths(e, null, isCustomDate);\n break;\n case 1:\n detach(this.tableBodyElement);\n this.renderYears(e);\n break;\n case 2:\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n };\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n CalendarBase.prototype.getModuleName = function () {\n return 'calendar';\n };\n /**\n *\n * @returns {void}\n\n */\n CalendarBase.prototype.requiredModules = function () {\n var modules = [];\n if (this.calendarMode === 'Islamic') {\n modules.push({ args: [this], member: 'islamic', name: 'Islamic' });\n }\n return modules;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n CalendarBase.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarBaseModel} oldProp - Returns the previous property value of the component.\n * @param {boolean} multiSelection - - Specifies whether multiple date selection is enabled or not.\n * @param {Date[]} values - Specifies the dates.\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.onPropertyChanged = function (newProp, oldProp, multiSelection, values) {\n this.effect = '';\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n if (newProp.enableRtl) {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add('e-rtl');\n }\n else {\n this.calendarElement.classList.add('e-rtl');\n }\n }\n else {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.remove('e-rtl');\n }\n else {\n this.calendarElement.classList.remove('e-rtl');\n }\n }\n break;\n case 'dayHeaderFormat':\n this.getCultureValues();\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n }\n this.adjustLongHeaderSize();\n break;\n case 'min':\n case 'max':\n this.rangeValidation(this.min, this.max);\n if (prop === 'min') {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(newProp.min))) }, true);\n }\n else {\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(newProp.max))) }, true);\n }\n this.setProperties({ start: this.currentView() }, true);\n if (this.tableBodyElement) {\n detach(this.tableBodyElement);\n }\n this.minMaxUpdate();\n if (multiSelection) {\n this.validateValues(multiSelection, values);\n }\n if (this.getModuleName() !== 'datepicker') {\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentBody();\n }\n if ((this.todayDate < this.min || this.max < this.todayDate) && (this.footer) && (this.todayElement)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n else {\n if ((this.footer) && (this.todayElement) && this.todayElement.classList.contains('e-disabled')) {\n removeClass([this.todayElement], DISABLED);\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n }\n break;\n case 'start':\n case 'depth':\n case 'weekNumber':\n case 'firstDayOfWeek':\n case 'weekRule':\n this.checkView();\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n this.createContentBody();\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n this.createContentBody();\n }\n if (this.getModuleName() === 'calendar') {\n var l10nLocale = { today: 'Today' };\n this.l10 = new L10n(this.getModuleName(), l10nLocale, this.locale);\n }\n this.l10.setLocale(this.locale);\n if (this.showTodayButton) {\n this.updateFooter();\n }\n break;\n case 'showTodayButton':\n if (newProp.showTodayButton) {\n this.createContentFooter();\n }\n else {\n if (!isNullOrUndefined(this.todayElement) && !isNullOrUndefined(this.footer)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = undefined;\n }\n }\n this.setProperties({ showTodayButton: newProp.showTodayButton }, true);\n break;\n }\n }\n };\n /**\n * values property updated with considered disabled dates of the calendar.\n *\n * @param {boolean} multiSelection - Specifies whether multiple date selection is enabled.\n * @param {Date[]} values - Specifies the dates to validate.\n * @returns {void}\n */\n CalendarBase.prototype.validateValues = function (multiSelection, values) {\n if (multiSelection && !isNullOrUndefined(values) && values.length > 0) {\n var copyValues = this.copyValues(values);\n for (var skipIndex = 0; skipIndex < copyValues.length; skipIndex++) {\n var tempValue = copyValues[skipIndex];\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var tempValueString = void 0;\n if (this.calendarMode === 'Gregorian') {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'date', skeleton: 'yMd' });\n }\n else {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'dateTime', skeleton: 'full', calendar: 'islamic' });\n }\n var minFormatOption = { type: 'date', skeleton: 'yMd', calendar: type };\n var minStringValue = this.globalize.formatDate(this.min, minFormatOption);\n var minString = minStringValue;\n var maxFormatOption = { type: 'date', skeleton: 'yMd', calendar: type };\n var maxStringValue = this.globalize.formatDate(this.max, maxFormatOption);\n var maxString = maxStringValue;\n if (+new Date(tempValueString) < +new Date(minString) ||\n +new Date(tempValueString) > +new Date(maxString)) {\n copyValues.splice(skipIndex, 1);\n skipIndex = -1;\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n };\n CalendarBase.prototype.setValueUpdate = function () {\n if (!isNullOrUndefined(this.tableBodyElement)) {\n detach(this.tableBodyElement);\n this.setProperties({ start: this.currentView() }, true);\n this.createContentBody();\n }\n };\n CalendarBase.prototype.copyValues = function (values) {\n var copyValues = [];\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n copyValues.push(new Date(+values[index]));\n }\n }\n return copyValues;\n };\n CalendarBase.prototype.titleUpdate = function (date, view) {\n var globalize = new Internationalization(this.locale);\n var dayFormatOptions;\n var monthFormatOptions;\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n if (this.calendarMode === 'Gregorian') {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', skeleton: 'yMMMM', calendar: type });\n monthFormatOptions = globalize.formatDate(date, {\n format: null, type: 'dateTime', skeleton: 'y', calendar: type\n });\n }\n else {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'MMMM y', calendar: type });\n monthFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'y', calendar: type });\n }\n switch (view) {\n case 'days':\n this.headerTitleElement.textContent = this.toCapitalize(dayFormatOptions);\n break;\n case 'months':\n this.headerTitleElement.textContent = monthFormatOptions;\n }\n };\n CalendarBase.prototype.setActiveDescendant = function () {\n var id;\n var focusedEle = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedEle = this.tableBodyElement.querySelector('tr td.e-selected');\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var title;\n var view = this.currentView();\n if (view === 'Month') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'full', calendar: type });\n }\n else if (view === 'Year') {\n if (type !== 'islamic') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'yMMMM', calendar: type });\n }\n else {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'GyMMM', calendar: type });\n }\n }\n else {\n title = this.globalize.formatDate(this.currentDate, {\n format: null, type: 'date', skeleton: 'y', calendar: type\n });\n }\n if (selectedEle || focusedEle) {\n if (!isNullOrUndefined(selectedEle)) {\n selectedEle.setAttribute('aria-selected', 'true');\n }\n (focusedEle || selectedEle).setAttribute('aria-label', title);\n id = (focusedEle || selectedEle).getAttribute('id');\n }\n return id;\n };\n CalendarBase.prototype.iconHandler = function () {\n new Date(this.checkValue(this.currentDate)).setDate(1);\n switch (this.currentView()) {\n case 'Month':\n this.previousIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Year':\n this.previousIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Decade':\n this.previousIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CalendarBase.prototype.destroy = function () {\n if (this.getModuleName() === 'calendar' && this.element) {\n removeClass([this.element], [ROOT]);\n }\n else {\n if (this.calendarElement && this.element) {\n removeClass([this.element], [ROOT]);\n }\n }\n if (this.getModuleName() === 'calendar' && this.element) {\n if (!isNullOrUndefined(this.headerTitleElement)) {\n EventHandler.remove(this.headerTitleElement, 'click', this.navigateTitle);\n }\n if (this.todayElement) {\n EventHandler.remove(this.todayElement, 'click', this.todayButtonClick);\n }\n this.previousIconHandler(true);\n this.nextIconHandler(true);\n this.keyboardModule.destroy();\n this.element.removeAttribute('data-role');\n if (!isNullOrUndefined(this.calendarEleCopy.getAttribute('tabindex'))) {\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.element.removeAttribute('tabindex');\n }\n }\n if (this.element) {\n this.element.innerHTML = '';\n }\n this.todayElement = null;\n this.tableBodyElement = null;\n this.todayButtonEvent = null;\n this.renderDayCellArgs = null;\n this.headerElement = null;\n this.nextIcon = null;\n this.table = null;\n this.tableHeadElement = null;\n this.previousIcon = null;\n this.headerTitleElement = null;\n this.footer = null;\n this.contentElement = null;\n _super.prototype.destroy.call(this);\n };\n CalendarBase.prototype.title = function (e) {\n var currentView = this.getViewNumber(this.currentView());\n this.effect = ZOOMIN;\n this.switchView(++currentView, e);\n };\n CalendarBase.prototype.getViewNumber = function (stringVal) {\n if (stringVal === 'Month') {\n return 0;\n }\n else if (stringVal === 'Year') {\n return 1;\n }\n else {\n return 2;\n }\n };\n CalendarBase.prototype.navigateTitle = function (e) {\n e.preventDefault();\n this.title(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.previous = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, -10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigatePrevious = function (e) {\n !Browser.isDevice && e.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.previous();\n }\n else {\n this.islamicModule.islamicPrevious();\n }\n this.triggerNavigate(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.next = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, 10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigateNext = function (eve) {\n !Browser.isDevice && eve.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.next();\n }\n else {\n this.islamicModule.islamicNext();\n }\n this.triggerNavigate(eve);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n */\n CalendarBase.prototype.navigateTo = function (view, date, isCustomDate) {\n if (+date >= +this.min && +date <= +this.max) {\n this.currentDate = date;\n }\n if (+date <= +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n if (+date >= +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n if ((this.getViewNumber(this.depth) >= this.getViewNumber(view))) {\n if ((this.getViewNumber(this.depth) <= this.getViewNumber(this.start))\n || this.getViewNumber(this.depth) === this.getViewNumber(view)) {\n view = this.depth;\n }\n }\n this.switchView(this.getViewNumber(view), null, null, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n */\n CalendarBase.prototype.currentView = function () {\n if (!isNullOrUndefined(this.contentElement) && this.contentElement.classList.contains(YEAR)) {\n return 'Year';\n }\n else if (!isNullOrUndefined(this.contentElement) && this.contentElement.classList.contains(DECADE)) {\n return 'Decade';\n }\n else {\n return 'Month';\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n CalendarBase.prototype.getDateVal = function (date, value) {\n return (!isNullOrUndefined(value) && date.getDate() === (value).getDate()\n && date.getMonth() === (value).getMonth() && date.getFullYear() === (value).getFullYear());\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.getCultureObjects = function (ld, c) {\n var gregorianFormat = '.dates.calendars.gregorian.days.format.' + this.dayHeaderFormat.toLowerCase();\n var islamicFormat = '.dates.calendars.islamic.days.format.' + this.dayHeaderFormat.toLowerCase();\n var mainVal = 'main.';\n if (this.calendarMode === 'Gregorian') {\n return getValue(mainVal + '' + this.locale + gregorianFormat, ld);\n }\n else {\n return getValue('main.' + '' + this.locale + islamicFormat, ld);\n }\n };\n CalendarBase.prototype.getWeek = function (d) {\n var currentDate = new Date(this.checkValue(d)).valueOf();\n var date = new Date(d.getFullYear(), 0, 1).valueOf();\n return Math.ceil((((currentDate - date) + dayMilliSeconds) / dayMilliSeconds) / 7);\n };\n CalendarBase.prototype.setStartDate = function (date, time) {\n var tzOffset = date.getTimezoneOffset();\n var d = new Date(date.getTime() + time);\n var tzOffsetDiff = d.getTimezoneOffset() - tzOffset;\n date.setTime(d.getTime() + tzOffsetDiff * minutesMilliSeconds);\n };\n CalendarBase.prototype.addMonths = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setMonth(date.getMonth() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, (islamicDate.month) + i, 1);\n }\n };\n CalendarBase.prototype.addYears = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setFullYear(date.getFullYear() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year + i, (islamicDate.month), 1);\n }\n };\n CalendarBase.prototype.getIdValue = function (e, element) {\n var eve;\n if (e) {\n eve = e.currentTarget;\n }\n else {\n eve = element;\n }\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { type: 'dateTime', skeleton: 'full', calendar: type };\n // eslint-disable-next-line radix\n var dateString = this.globalize.formatDate(new Date(parseInt('' + eve.getAttribute('id'), 0)), dateFormatOptions);\n var date = this.globalize.parseDate(dateString, dateFormatOptions);\n var value = date.valueOf() - date.valueOf() % 1000;\n return new Date(value);\n //return this.globalize.parseDate(dateString, dateFormatOptions);\n };\n CalendarBase.prototype.adjustLongHeaderSize = function () {\n removeClass([this.element], DAYHEADERLONG);\n if (this.dayHeaderFormat === 'Wide') {\n addClass([this.getModuleName() === 'calendar' ? this.element : this.calendarElement], DAYHEADERLONG);\n }\n };\n CalendarBase.prototype.selectDate = function (e, date, node, multiSelection, values) {\n var element = node || e.currentTarget;\n this.isDateSelected = false;\n if (this.currentView() === 'Decade') {\n this.setDateDecade(this.currentDate, date.getFullYear());\n }\n else if (this.currentView() === 'Year') {\n this.setDateYear(this.currentDate, date);\n }\n else {\n if (multiSelection && !this.checkPresentDate(date, values)) {\n var copyValues = this.copyValues(values);\n if (!isNullOrUndefined(values) && copyValues.length > 0) {\n copyValues.push(new Date(this.checkValue(date)));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: values[values.length - 1] }, true);\n }\n else {\n this.setProperties({ values: [new Date(this.checkValue(date))] }, true);\n }\n }\n else {\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n }\n this.currentDate = new Date(this.checkValue(date));\n }\n var tableBodyElement = closest(element, '.' + ROOT);\n if (isNullOrUndefined(tableBodyElement)) {\n tableBodyElement = this.tableBodyElement;\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + SELECTED))) {\n removeClass([tableBodyElement.querySelector('.' + SELECTED)], SELECTED);\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + FOCUSEDDATE))) {\n removeClass([tableBodyElement.querySelector('.' + FOCUSEDDATE)], FOCUSEDDATE);\n }\n if (multiSelection) {\n var copyValues = this.copyValues(values);\n var collection = Array.prototype.slice.call(this.tableBodyElement.querySelectorAll('td'));\n for (var index = 0; index < collection.length; index++) {\n var tempElement = tableBodyElement.querySelectorAll('td' + '.' + FOCUSEDDATE)[0];\n var selectedElement = tableBodyElement.querySelectorAll('td' + '.' + SELECTED)[0];\n if (collection[index] === tempElement) {\n removeClass([collection[index]], FOCUSEDDATE);\n }\n if (collection[index] === selectedElement &&\n !this.checkPresentDate(new Date(parseInt(selectedElement.getAttribute('id').split('_')[0], 10)), values)) {\n removeClass([collection[index]], SELECTED);\n }\n }\n if (element.classList.contains(SELECTED)) {\n removeClass([element], SELECTED);\n for (var i = 0; i < copyValues.length; i++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: null, type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(date, formatOptions);\n var tempDateString = this.globalize.formatDate(copyValues[i], formatOptions);\n if (localDateString === tempDateString) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n addClass([element], FOCUSEDDATE);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n addClass([element], SELECTED);\n }\n }\n else {\n addClass([element], SELECTED);\n }\n this.isDateSelected = true;\n };\n CalendarBase.prototype.checkPresentDate = function (dates, values) {\n var previousValue = false;\n if (!isNullOrUndefined(values)) {\n for (var checkPrevious = 0; checkPrevious < values.length; checkPrevious++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var localDateString = this.globalize.formatDate(dates, {\n format: null, type: 'date', skeleton: 'short', calendar: type\n });\n var tempDateString = this.globalize.formatDate(values[checkPrevious], {\n format: null, type: 'date', skeleton: 'short', calendar: type\n });\n if (localDateString === tempDateString) {\n previousValue = true;\n }\n }\n }\n return previousValue;\n };\n CalendarBase.prototype.setAriaActiveDescendant = function () {\n attributes(this.table, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n };\n CalendarBase.prototype.previousIconHandler = function (disabled) {\n if (disabled) {\n if (!isNullOrUndefined(this.previousIcon)) {\n EventHandler.remove(this.previousIcon, 'click', this.navigatePreviousHandler);\n addClass([this.previousIcon], '' + DISABLED);\n addClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'true');\n }\n }\n else {\n EventHandler.add(this.previousIcon, 'click', this.navigatePreviousHandler);\n removeClass([this.previousIcon], '' + DISABLED);\n removeClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.renderDayCellEvent = function (args) {\n extend(this.renderDayCellArgs, { name: 'renderDayCell' });\n this.trigger('renderDayCell', args);\n };\n CalendarBase.prototype.navigatedEvent = function (eve) {\n extend(this.navigatedArgs, { name: 'navigated', event: eve });\n this.trigger('navigated', this.navigatedArgs);\n };\n CalendarBase.prototype.triggerNavigate = function (event) {\n this.navigatedArgs = { view: this.currentView(), date: this.currentDate };\n this.navigatedEvent(event);\n };\n CalendarBase.prototype.nextIconHandler = function (disabled) {\n if (disabled) {\n if (!isNullOrUndefined(this.previousIcon)) {\n EventHandler.remove(this.nextIcon, 'click', this.navigateNextHandler);\n addClass([this.nextIcon], DISABLED);\n addClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'true');\n }\n }\n else {\n EventHandler.add(this.nextIcon, 'click', this.navigateNextHandler);\n removeClass([this.nextIcon], DISABLED);\n removeClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.compare = function (startDate, endDate, modifier) {\n var start = endDate.getFullYear();\n var end;\n var result;\n end = start;\n result = 0;\n if (modifier) {\n start = start - start % modifier;\n end = start - start % modifier + modifier - 1;\n }\n if (startDate.getFullYear() > end) {\n result = 1;\n }\n else if (startDate.getFullYear() < start) {\n result = -1;\n }\n return result;\n };\n CalendarBase.prototype.isMinMaxRange = function (date) {\n return +date >= +this.min && +date <= +this.max;\n };\n CalendarBase.prototype.isMonthYearRange = function (date) {\n if (this.calendarMode === 'Gregorian') {\n return date.getMonth() >= this.min.getMonth()\n && date.getFullYear() >= this.min.getFullYear()\n && date.getMonth() <= this.max.getMonth()\n && date.getFullYear() <= this.max.getFullYear();\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n return islamicDate.month >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).month\n && islamicDate.year >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).year\n && islamicDate.month <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).month\n && islamicDate.year <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).year;\n }\n };\n CalendarBase.prototype.compareYear = function (start, end) {\n return this.compare(start, end, 0);\n };\n CalendarBase.prototype.compareDecade = function (start, end) {\n return this.compare(start, end, 10);\n };\n CalendarBase.prototype.shiftArray = function (array, i) {\n return array.slice(i).concat(array.slice(0, i));\n };\n CalendarBase.prototype.addDay = function (date, i, e, max, min) {\n var column = i;\n var value = new Date(+date);\n if (!isNullOrUndefined(this.tableBodyElement) && !isNullOrUndefined(e)) {\n while (this.findNextTD(new Date(+date), column, max, min)) {\n column += i;\n }\n var rangeValue = new Date(value.setDate(value.getDate() + column));\n column = (+rangeValue > +max || +rangeValue < +min) ? column === i ? i - i : i : column;\n }\n date.setDate(date.getDate() + column);\n };\n CalendarBase.prototype.findNextTD = function (date, column, max, min) {\n var value = new Date(date.setDate(date.getDate() + column));\n var collection = [];\n var isDisabled = false;\n if ((!isNullOrUndefined(value) && value.getMonth()) === (!isNullOrUndefined(this.currentDate) && this.currentDate.getMonth())) {\n var tdEles = void 0;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(value);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n collection = tdEles.filter(function (element) {\n return element.classList.contains(DISABLED);\n });\n }\n else {\n collection = this.tableBodyElement.querySelectorAll('td.' + DISABLED);\n }\n if (+value <= (+(max)) && +value >= (+(min))) {\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n // eslint-disable-next-line radix\n isDisabled = (+value === +new Date(parseInt(collection[i].id, 0))) ? true : false;\n if (isDisabled) {\n break;\n }\n }\n }\n }\n return isDisabled;\n };\n CalendarBase.prototype.getMaxDays = function (d) {\n var date;\n var tmpDate = new Date(this.checkValue(d));\n date = 28;\n var month = tmpDate.getMonth();\n while (tmpDate.getMonth() === month) {\n ++date;\n tmpDate.setDate(date);\n }\n return date - 1;\n };\n CalendarBase.prototype.setDateDecade = function (date, year) {\n date.setFullYear(year);\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.setDateYear = function (date, value) {\n date.setFullYear(value.getFullYear(), value.getMonth(), date.getDate());\n if (value.getMonth() !== date.getMonth()) {\n date.setDate(0);\n this.currentDate = new Date(this.checkValue(value));\n }\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.compareMonth = function (start, end) {\n var result;\n if (start.getFullYear() > end.getFullYear()) {\n result = 1;\n }\n else if (start.getFullYear() < end.getFullYear()) {\n result = -1;\n }\n else {\n result = start.getMonth() === end.getMonth() ? 0 : start.getMonth() > end.getMonth() ? 1 : -1;\n }\n return result;\n };\n CalendarBase.prototype.checkValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n CalendarBase.prototype.checkView = function () {\n if (this.start !== 'Decade' && this.start !== 'Year') {\n this.setProperties({ start: 'Month' }, true);\n }\n if (this.depth !== 'Decade' && this.depth !== 'Year') {\n this.setProperties({ depth: 'Month' }, true);\n }\n if (this.getViewNumber(this.depth) > this.getViewNumber(this.start)) {\n this.setProperties({ depth: 'Month' }, true);\n }\n };\n CalendarBase.prototype.getDate = function (date, timezone) {\n if (timezone) {\n date = new Date(date.toLocaleString('en-US', { timeZone: timezone }));\n }\n return date;\n };\n __decorate([\n Property(new Date(1900, 0, 1))\n ], CalendarBase.prototype, \"min\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"enabled\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], CalendarBase.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], CalendarBase.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"weekNumber\", void 0);\n __decorate([\n Property('FirstDay')\n ], CalendarBase.prototype, \"weekRule\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], CalendarBase.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"navigated\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"renderDayCell\", void 0);\n CalendarBase = __decorate([\n NotifyPropertyChanges\n ], CalendarBase);\n return CalendarBase;\n}(Component));\nexport { CalendarBase };\n/**\n * Represents the Calendar component that allows the user to select a date.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Calendar = /** @class */ (function (_super) {\n __extends(Calendar, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarModel} options - Specifies the Calendar model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Calendar(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.render = function () {\n if (this.calendarMode === 'Islamic' && this.islamicModule === undefined) {\n throwError('Requires the injectable Islamic modules to render Calendar in Islamic mode');\n }\n if (this.isMultiSelection && typeof this.values === 'object' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var tempValues = [];\n var copyValues = [];\n for (var limit = 0; limit < this.values.length; limit++) {\n if (tempValues.indexOf(+this.values[limit]) === -1) {\n tempValues.push(+this.values[limit]);\n copyValues.push(this.values[limit]);\n }\n }\n this.setProperties({ values: copyValues }, true);\n for (var index = 0; index < this.values.length; index++) {\n if (!this.checkDateValue(this.values[index])) {\n if (typeof (this.values[index]) === 'string' && this.checkDateValue(new Date(this.checkValue(this.values[index])))) {\n var copyDate = new Date(this.checkValue(this.values[index]));\n this.values.splice(index, 1);\n this.values.splice(index, 0, copyDate);\n }\n else {\n this.values.splice(index, 1);\n }\n }\n }\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n this.previousValues = this.values.length;\n }\n this.validateDate();\n this.minMaxUpdate();\n if (this.getModuleName() === 'calendar') {\n this.setEnable(this.enabled);\n this.setClass(this.cssClass);\n }\n _super.prototype.render.call(this);\n if (this.getModuleName() === 'calendar') {\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.add(form, 'reset', this.formResetHandler.bind(this));\n }\n this.setTimeZone(this.serverTimezoneOffset);\n }\n this.renderComplete();\n };\n Calendar.prototype.setEnable = function (enable) {\n if (!enable) {\n addClass([this.element], DISABLED);\n }\n else {\n removeClass([this.element], DISABLED);\n }\n };\n Calendar.prototype.setClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(oldCssClass) && oldCssClass !== '') {\n removeClass([this.element], oldCssClass.split(' '));\n }\n if (!isNullOrUndefined(newCssClass)) {\n addClass([this.element], newCssClass.split(' '));\n }\n };\n Calendar.prototype.isDayLightSaving = function () {\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n Calendar.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var serverTimezoneDiff = offsetValue;\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date(this.value.getTime() + (timeZoneDiff * 60 * 60 * 1000));\n }\n };\n Calendar.prototype.formResetHandler = function () {\n this.setProperties({ value: null }, true);\n };\n Calendar.prototype.validateDate = function () {\n if (typeof this.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(this.checkValue(this.value))) }, true); // persist the value property.\n }\n _super.prototype.validateDate.call(this, this.value);\n if (!isNullOrUndefined(this.value) && this.min <= this.max && this.value >= this.min && this.value <= this.max) {\n this.currentDate = new Date(this.checkValue(this.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n };\n Calendar.prototype.minMaxUpdate = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.value) && this.value <= this.min && this.min <= this.max) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value >= this.max && this.min <= this.max) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n }\n if (this.getModuleName() !== 'calendar' && !isNullOrUndefined(this.value)) {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.min);\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.max);\n }\n }\n }\n else {\n _super.prototype.minMaxUpdate.call(this, this.value);\n }\n };\n Calendar.prototype.generateTodayVal = function (value) {\n var tempValue = new Date();\n if (!isNullOrUndefined(this.timezone)) {\n tempValue = _super.prototype.getDate.call(this, tempValue, this.timezone);\n }\n if (value && isNullOrUndefined(this.timezone)) {\n tempValue.setHours(value.getHours());\n tempValue.setMinutes(value.getMinutes());\n tempValue.setSeconds(value.getSeconds());\n tempValue.setMilliseconds(value.getMilliseconds());\n }\n else {\n tempValue = new Date(tempValue.getFullYear(), tempValue.getMonth(), tempValue.getDate(), 0, 0, 0, 0);\n }\n return tempValue;\n };\n Calendar.prototype.todayButtonClick = function (e) {\n if (this.showTodayButton) {\n var tempValue = this.generateTodayVal(this.value);\n this.setProperties({ value: tempValue }, true);\n this.isTodayClicked = true;\n this.todayButtonEvent = e;\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (!_super.prototype.checkPresentDate.call(this, tempValue, this.values)) {\n copyValues.push(tempValue);\n this.setProperties({ values: copyValues });\n }\n }\n _super.prototype.todayButtonClick.call(this, e, new Date(+this.value));\n }\n };\n Calendar.prototype.keyActionHandle = function (e) {\n _super.prototype.keyActionHandle.call(this, e, this.value, this.isMultiSelection);\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.preRender = function () {\n var _this = this;\n this.changeHandler = function (e) {\n _this.triggerChange(e);\n };\n this.checkView();\n _super.prototype.preRender.call(this, this.value);\n };\n /**\n * @returns {void}\n\n */\n Calendar.prototype.createContent = function () {\n this.previousDate = this.value;\n this.previousDateTime = this.value;\n _super.prototype.createContent.call(this);\n };\n Calendar.prototype.minMaxDate = function (localDate) {\n return _super.prototype.minMaxDate.call(this, localDate);\n };\n Calendar.prototype.renderMonths = function (e, value, isCustomDate) {\n _super.prototype.renderMonths.call(this, e, this.value, isCustomDate);\n };\n Calendar.prototype.renderDays = function (currentDate, value, isMultiSelect, values, isCustomDate, e) {\n var tempDays = _super.prototype.renderDays.call(this, currentDate, this.value, this.isMultiSelection, this.values, isCustomDate, e);\n if (this.isMultiSelection) {\n _super.prototype.validateValues.call(this, this.isMultiSelection, this.values);\n }\n return tempDays;\n };\n Calendar.prototype.renderYears = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderYears.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderYears(e, this.value);\n }\n };\n Calendar.prototype.renderDecades = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderDecades.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderDecade(e, this.value);\n }\n };\n Calendar.prototype.renderTemplate = function (elements, count, classNm, e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderTemplate.call(this, elements, count, classNm, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(elements, count, classNm, e, this.value);\n }\n this.changedArgs = { value: this.value, values: this.values };\n e && e.type === 'click' && e.currentTarget.classList.contains(OTHERMONTH) ? this.changeHandler(e) : this.changeHandler();\n };\n Calendar.prototype.clickHandler = function (e) {\n var eve = e.currentTarget;\n this.isPopupClicked = true;\n if (eve.classList.contains(OTHERMONTH)) {\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (copyValues.toString().indexOf(this.getIdValue(e, null).toString()) === -1) {\n copyValues.push(this.getIdValue(e, null));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n else {\n this.previousDates = true;\n }\n }\n else {\n this.setProperties({ value: this.getIdValue(e, null) }, true);\n }\n }\n var storeView = this.currentView();\n _super.prototype.clickHandler.call(this, e, this.value);\n if (this.isMultiSelection && this.currentDate !== this.value &&\n !isNullOrUndefined(this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0]) && storeView === 'Year') {\n this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0].classList.remove(FOCUSEDDATE);\n }\n };\n Calendar.prototype.switchView = function (view, e, isMultiSelection, isCustomDate) {\n _super.prototype.switchView.call(this, view, e, this.isMultiSelection, isCustomDate);\n };\n /**\n * To get component name\n *\n * @returns {string} Return the component name.\n * @private\n */\n Calendar.prototype.getModuleName = function () {\n _super.prototype.getModuleName.call(this);\n return 'calendar';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n Calendar.prototype.getPersistData = function () {\n _super.prototype.getPersistData.call(this);\n var keyEntity = ['value', 'values'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n Calendar.prototype.onPropertyChanged = function (newProp, oldProp) {\n this.effect = '';\n this.rangeValidation(this.min, this.max);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n if (this.isDateSelected) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: new Date(this.checkValue(newProp.value)) }, true);\n }\n else {\n newProp.value = new Date(this.checkValue(newProp.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: oldProp.value }, true);\n }\n this.update();\n }\n break;\n case 'values':\n if (this.isDateSelected) {\n if (typeof newProp.values === 'string' || typeof newProp.values === 'number') {\n this.setProperties({ values: null }, true);\n }\n else {\n var copyValues = this.copyValues(this.values);\n for (var index = 0; index < copyValues.length; index++) {\n var tempDate = copyValues[index];\n if (this.checkDateValue(tempDate) && !_super.prototype.checkPresentDate.call(this, tempDate, copyValues)) {\n copyValues.push(tempDate);\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.values.length > 0) {\n this.setProperties({ value: newProp.values[newProp.values.length - 1] }, true);\n }\n }\n this.validateValues(this.isMultiSelection, this.values);\n this.update();\n }\n break;\n case 'isMultiSelection':\n if (this.isDateSelected) {\n this.setProperties({ isMultiSelection: newProp.isMultiSelection }, true);\n this.update();\n }\n break;\n case 'enabled':\n this.setEnable(this.enabled);\n break;\n case 'cssClass':\n if (this.getModuleName() === 'calendar') {\n this.setClass(newProp.cssClass, oldProp.cssClass);\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp, this.isMultiSelection, this.values);\n }\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Calendar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'calendar') {\n this.changedArgs = null;\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.remove(form, 'reset', this.formResetHandler.bind(this));\n }\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n\n */\n Calendar.prototype.navigateTo = function (view, date, isCustomDate) {\n this.minMaxUpdate();\n _super.prototype.navigateTo.call(this, view, date, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n\n */\n Calendar.prototype.currentView = function () {\n return _super.prototype.currentView.call(this);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * This method is used to add the single or multiple dates to the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates to be added to the values property of the Calendar.\n * @returns {void}\n\n */\n Calendar.prototype.addDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number') {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && (dates).length > 0) {\n var tempDates = dates;\n for (var i = 0; i < tempDates.length; i++) {\n if (this.checkDateValue(tempDates[i]) && !_super.prototype.checkPresentDate.call(this, tempDates[i], copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push(tempDates[i]);\n }\n else {\n copyValues = [new Date(+tempDates[i])];\n }\n }\n }\n }\n else {\n if (this.checkDateValue(dates) && !_super.prototype.checkPresentDate.call(this, dates, copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push((dates));\n }\n else {\n copyValues = [new Date(+dates)];\n }\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.validateValues(this.isMultiSelection, copyValues);\n this.update();\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * This method is used to remove the single or multiple dates from the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates which need to be removed from the values property of the Calendar.\n * @returns {void}\n\n */\n Calendar.prototype.removeDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && ((dates).length > 0)) {\n var tempDates = dates;\n for (var index = 0; index < tempDates.length; index++) {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +tempDates[index]) {\n copyValues.splice(i, 1);\n }\n }\n }\n }\n else {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +dates) {\n copyValues.splice(i, 1);\n }\n }\n }\n this.setProperties({ values: copyValues }, false);\n this.update();\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * To set custom today date in calendar\n *\n * @param {Date} date - Specifies date value to be set.\n * @private\n * @returns {void}\n */\n Calendar.prototype.setTodayDate = function (date) {\n var todayDate = new Date(+date);\n this.setProperties({ value: todayDate }, true);\n _super.prototype.todayButtonClick.call(this, null, todayDate, true);\n };\n Calendar.prototype.update = function () {\n this.validateDate();\n this.minMaxUpdate();\n _super.prototype.setValueUpdate.call(this);\n };\n Calendar.prototype.selectDate = function (e, date, element) {\n _super.prototype.selectDate.call(this, e, date, element, this.isMultiSelection, this.values);\n if (this.isMultiSelection && !isNullOrUndefined(this.values) && this.values.length > 0) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Calendar.prototype.changeEvent = function (e) {\n if ((this.value && this.value.valueOf()) !== (this.previousDate && +this.previousDate.valueOf())\n || this.isMultiSelection) {\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = new Date(+this.value);\n }\n };\n Calendar.prototype.triggerChange = function (e) {\n if (!isNullOrUndefined(this.todayButtonEvent) && this.isTodayClicked) {\n e = this.todayButtonEvent;\n this.isTodayClicked = false;\n }\n this.changedArgs.event = e || null;\n this.changedArgs.isInteracted = !isNullOrUndefined(e);\n if (!isNullOrUndefined(this.value)) {\n this.setProperties({ value: this.value }, true);\n }\n // eslint-disable-next-line use-isnan\n if (!this.isMultiSelection && +this.value !== Number.NaN && (!isNullOrUndefined(this.value) &&\n !isNullOrUndefined(this.previousDate) || this.previousDate === null\n && !isNaN(+this.value))) {\n this.changeEvent(e);\n }\n else if (!isNullOrUndefined(this.values) && this.previousValues !== this.values.length) {\n this.changeEvent(e);\n this.previousValues = this.values.length;\n }\n };\n __decorate([\n Property(null)\n ], Calendar.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], Calendar.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], Calendar.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Event()\n ], Calendar.prototype, \"change\", void 0);\n Calendar = __decorate([\n NotifyPropertyChanges\n ], Calendar);\n return Calendar;\n}(CalendarBase));\nexport { Calendar };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Internationalization, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Animation, Event, extend, L10n, Browser, formatUnit } from '@syncfusion/ej2-base';\nimport { detach, addClass, removeClass, closest, attributes, Touch } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, setValue, getUniqueID } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { Calendar } from '../calendar/calendar';\n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar ROOT = 'e-datepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar POPUPWRAPPER = 'e-popup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar INPUTCONTAINER = 'e-input-group';\nvar INPUTFOCUS = 'e-input-focus';\nvar INPUTROOT = 'e-input';\nvar ERROR = 'e-error';\nvar ACTIVE = 'e-active';\nvar OVERFLOW = 'e-date-overflow';\nvar DATEICON = 'e-date-icon';\nvar CLEARICON = 'e-clear-icon';\nvar ICONS = 'e-icons';\nvar OPENDURATION = 300;\nvar OFFSETVALUE = 4;\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar NONEDIT = 'e-non-edit';\nvar containerAttr = ['title', 'class', 'style'];\n/**\n * Represents the DatePicker component that allows user to select\n * or enter a date value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DatePicker = /** @class */ (function (_super) {\n __extends(DatePicker, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {DatePickerModel} options - Specifies the DatePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DatePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isDateIconClicked = false;\n _this.isAltKeyPressed = false;\n _this.isInteracted = true;\n _this.invalidValueString = null;\n _this.checkPreviousValue = null;\n _this.maskedDateValue = '';\n _this.isAngular = false;\n _this.preventChange = false;\n _this.isIconClicked = false;\n _this.isDynamicValueChanged = false;\n _this.moduleName = _this.getModuleName();\n _this.isFocused = false;\n _this.isBlur = false;\n _this.isKeyAction = false;\n _this.datepickerOptions = options;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.render = function () {\n this.initialize();\n this.bindEvents();\n if (this.floatLabelType === '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', 'aria-label': this.getModuleName()\n };\n if (this.getModuleName() === 'datepicker') {\n var l10nLocale = { placeholder: this.placeholder };\n this.globalize = new Internationalization(this.locale);\n this.l10n = new L10n('datepicker', l10nLocale, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (this.fullScreenMode && Browser.isDevice) {\n this.cssClass += ' ' + \"e-popup-expand\";\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n var isBindClearAction = this.enableMask ? false : true;\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n bindClearAction: isBindClearAction,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [INPUTWRAPPER + ' ' + DATEICON + ' ' + ICONS]\n }, this.createElement);\n this.setWidth(this.width);\n if (this.inputElement.name !== '') {\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute('name'));\n }\n else {\n this.inputElement.setAttribute('name', '' + this.element.id);\n }\n attributes(this.inputElement, ariaAttrs);\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n Input.addAttributes({ 'aria-label': 'select', 'role': 'button' }, this.inputWrapper.buttons[0]);\n addClass([this.inputWrapper.container], DATEWRAPPER);\n };\n DatePicker.prototype.updateInput = function (isDynamic, isBlur) {\n if (isDynamic === void 0) { isDynamic = false; }\n if (isBlur === void 0) { isBlur = false; }\n var formatOptions;\n if (this.value && !this.isCalendar()) {\n this.disabledDates(isDynamic, isBlur);\n }\n if (isNaN(+new Date(this.checkValue(this.value)))) {\n this.setProperties({ value: null }, true);\n }\n if (this.strictMode) {\n //calls the Calendar processDate protected method to update the date value according to the strictMode true behaviour.\n _super.prototype.validateDate.call(this);\n this.minMaxUpdates();\n _super.prototype.minMaxUpdate.call(this);\n }\n if (!isNullOrUndefined(this.value)) {\n var dateValue = this.value;\n var dateString = void 0;\n var tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateString = this.globalize.formatDate(this.value, formatOptions);\n }\n if ((+dateValue <= +this.max) && (+dateValue >= +this.min)) {\n this.updateInputValue(dateString);\n }\n else {\n var value = (+dateValue >= +this.max || !+this.value) || (!+this.value || +dateValue <= +this.min);\n if (!this.strictMode && value) {\n this.updateInputValue(dateString);\n }\n }\n }\n if (isNullOrUndefined(this.value) && this.strictMode) {\n if (!this.enableMask) {\n this.updateInputValue('');\n }\n else {\n this.updateInputValue(this.maskedDateValue);\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.updateInputValue(this.invalidValueString);\n }\n this.changedArgs = { value: this.value };\n this.errorClass();\n this.updateIconState();\n };\n DatePicker.prototype.minMaxUpdates = function () {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n };\n DatePicker.prototype.checkStringValue = function (val) {\n var returnDate = null;\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatOptions));\n if (isNullOrUndefined(returnDate) && (this.getModuleName() === 'datetimepicker')) {\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatDateTime));\n }\n return returnDate;\n };\n DatePicker.prototype.checkInvalidValue = function (value) {\n if (!(value instanceof Date) && !isNullOrUndefined(value)) {\n var valueDate = null;\n var valueString = value;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n var invalid = false;\n if (typeof valueString !== 'string') {\n valueString = null;\n invalid = true;\n }\n else {\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n valueDate = this.checkStringValue(valueString);\n if (!valueDate) {\n var extISOString = null;\n var basicISOString = null;\n // eslint-disable-next-line\n extISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // eslint-disable-next-line\n basicISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || (/^[a-zA-Z0-9- ]*$/).test(valueString) || isNaN(+new Date(this.checkValue(valueString)))) {\n invalid = true;\n }\n else {\n valueDate = new Date(valueString);\n }\n }\n }\n if (invalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n }\n else {\n this.setProperties({ value: valueDate }, true);\n }\n }\n };\n DatePicker.prototype.bindInputEvent = function () {\n if (!isNullOrUndefined(this.formatString) || this.enableMask) {\n if (this.enableMask || this.formatString.indexOf('y') === -1) {\n EventHandler.add(this.inputElement, 'input', this.inputHandler, this);\n }\n else {\n EventHandler.remove(this.inputElement, 'input', this.inputHandler);\n }\n }\n };\n DatePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dateIconHandler, this);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'keyup', this.keyupHandler, this);\n if (this.enableMask) {\n EventHandler.add(this.inputElement, 'keydown', this.keydownHandler, this);\n }\n this.bindInputEvent();\n // To prevent the twice triggering.\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.resetFormHandler, this);\n }\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardModules = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DatePicker.prototype.keydownHandler = function (e) {\n switch (e.code) {\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'ArrowUp':\n case 'ArrowDown':\n case 'Home':\n case 'End':\n case 'Delete':\n if (this.enableMask && !this.popupObj && !this.readonly) {\n if (e.code !== 'Delete') {\n e.preventDefault();\n }\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n }\n break;\n default:\n break;\n }\n };\n DatePicker.prototype.unBindEvents = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dateIconHandler);\n }\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n EventHandler.remove(this.inputElement, 'keyup', this.keyupHandler);\n if (this.enableMask) {\n EventHandler.remove(this.inputElement, 'keydown', this.keydownHandler);\n }\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n };\n DatePicker.prototype.resetFormHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var value = this.inputElement.getAttribute('value');\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n value = '';\n this.inputValueCopy = null;\n this.inputElement.setAttribute('value', '');\n }\n this.setProperties({ value: this.inputValueCopy }, true);\n this.restoreValue();\n if (this.inputElement) {\n this.updateInputValue(value);\n this.errorClass();\n }\n }\n };\n DatePicker.prototype.restoreValue = function () {\n this.currentDate = this.value ? this.value : new Date();\n this.previousDate = this.value;\n this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.globalize.formatDate(this.inputValueCopy, {\n format: this.formatString, type: 'dateTime', skeleton: 'yMd'\n });\n };\n DatePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n DatePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n DatePicker.prototype.resetHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n this.clear(e);\n };\n DatePicker.prototype.mouseUpHandler = function (e) {\n if (this.enableMask) {\n e.preventDefault();\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n }\n };\n DatePicker.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n if (!this.enableMask) {\n this.updateInputValue('');\n }\n var clearedArgs = {\n event: event\n };\n this.trigger('cleared', clearedArgs);\n this.invalidValueString = '';\n this.updateInput();\n this.popupUpdate();\n this.changeEvent(event);\n if (this.enableMask) {\n this.notify('clearHandler', {\n module: 'MaskedDateTime'\n });\n }\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n DatePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnDateIconClick');\n };\n DatePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DatePicker.prototype.dateIconHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n this.inputElement.blur();\n }\n e.preventDefault();\n if (!this.readonly) {\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.isDateIconClicked = true;\n this.show(null, e);\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n addClass(this.inputWrapper.buttons, ACTIVE);\n }\n }\n this.isIconClicked = false;\n };\n DatePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (!isNullOrUndefined(this.htmlAttributes[\"\" + key])) {\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.inputWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = this.inputWrapper.container.getAttribute(key);\n if (!isNullOrUndefined(setStyle)) {\n if (setStyle.charAt(setStyle.length - 1) === ';') {\n setStyle = setStyle + this.htmlAttributes[\"\" + key];\n }\n else {\n setStyle = setStyle + ';' + this.htmlAttributes[\"\" + key];\n }\n }\n else {\n setStyle = this.htmlAttributes[\"\" + key];\n }\n this.inputWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n }\n };\n DatePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n DatePicker.prototype.updateCssClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newCssClass, [this.inputWrapper.container], oldCssClass);\n if (this.popupWrapper) {\n Input.setCssClass(newCssClass, [this.popupWrapper], oldCssClass);\n }\n };\n DatePicker.prototype.calendarKeyActionHandle = function (e) {\n switch (e.action) {\n case 'escape':\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.inputWrapper.container.children[this.index].blur();\n }\n break;\n case 'enter':\n if (!this.isCalendar()) {\n this.show(null, e);\n }\n else {\n if (+this.value !== +this.currentDate && !this.isCalendar()) {\n this.inputWrapper.container.children[this.index].focus();\n }\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n break;\n }\n };\n DatePicker.prototype.inputFocusHandler = function () {\n this.isFocused = true;\n if (!this.enabled) {\n return;\n }\n if (this.enableMask && !this.inputElement.value && this.placeholder) {\n if (this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.inputElement.selectionStart = 0;\n this.inputElement.selectionEnd = this.inputElement.value.length;\n }\n }\n var focusArguments = {\n model: this\n };\n this.isDateIconClicked = false;\n this.trigger('focus', focusArguments);\n this.updateIconState();\n if (this.openOnFocus && !this.isIconClicked) {\n this.show();\n }\n };\n DatePicker.prototype.inputHandler = function () {\n this.isPopupClicked = false;\n if (this.enableMask) {\n this.notify('inputHandler', {\n module: 'MaskedDateTime'\n });\n }\n };\n DatePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.strictModeUpdate();\n if (this.inputElement.value === '' && isNullOrUndefined(this.value)) {\n this.invalidValueString = null;\n this.updateInputValue('');\n }\n this.isBlur = true;\n this.updateInput(false, true);\n this.isBlur = false;\n this.popupUpdate();\n this.changeTrigger(e);\n if (this.enableMask && this.maskedDateValue && this.placeholder && this.floatLabelType !== 'Always') {\n if (this.inputElement.value === this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue('');\n }\n }\n this.errorClass();\n if (this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.getModuleName() === 'datepicker') {\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n if (this.isCalendar()) {\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.calendarKeyboardModules = new KeyboardEvents(this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: this.calendarKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n this.isPopupClicked = false;\n };\n DatePicker.prototype.documentHandler = function (e) {\n if ((!isNullOrUndefined(this.popupObj) && !isNullOrUndefined(this.inputWrapper) && (this.inputWrapper.container.contains(e.target) && e.type !== 'mousedown' ||\n (this.popupObj.element && this.popupObj.element.contains(e.target)))) && e.type !== 'touchstart') {\n e.preventDefault();\n }\n var target = e.target;\n if (!(closest(target, '.e-datepicker.e-popup-wrapper')) && !isNullOrUndefined(this.inputWrapper)\n && !(closest(target, '.' + INPUTCONTAINER) === this.inputWrapper.container)\n && (!target.classList.contains('e-day'))\n && (!target.classList.contains('e-dlg-overlay'))) {\n this.hide(e);\n this.focusOut();\n }\n else if (closest(target, '.e-datepicker.e-popup-wrapper')) {\n // Fix for close the popup when select the previously selected value.\n if (target.classList.contains('e-day')\n && !isNullOrUndefined(e.target.parentElement)\n && e.target.parentElement.classList.contains('e-selected')\n && closest(target, '.e-content')\n && closest(target, '.e-content').classList.contains('e-' + this.depth.toLowerCase())) {\n this.hide(e);\n }\n else if (closest(target, '.e-footer-container')\n && target.classList.contains('e-today')\n && target.classList.contains('e-btn')\n && (+new Date(+this.value) === +_super.prototype.generateTodayVal.call(this, this.value))) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.inputKeyActionHandle = function (e) {\n var clickedView = this.currentView();\n switch (e.action) {\n case 'altUpArrow':\n this.isAltKeyPressed = false;\n this.hide(e);\n this.inputElement.focus();\n break;\n case 'altDownArrow':\n this.isAltKeyPressed = true;\n this.strictModeUpdate();\n this.updateInput();\n this.changeTrigger(e);\n if (this.getModuleName() === 'datepicker') {\n this.show(null, e);\n }\n break;\n case 'escape':\n this.hide(e);\n break;\n case 'enter':\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n if (!this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.isCalendar()) {\n e.preventDefault();\n e.stopPropagation();\n }\n break;\n case 'tab':\n case 'shiftTab':\n {\n var start = this.inputElement.selectionStart;\n var end = this.inputElement.selectionEnd;\n if (this.enableMask && !this.popupObj && !this.readonly) {\n var length_1 = this.inputElement.value.length;\n if ((start === 0 && end === length_1) || (end !== length_1 && e.action === 'tab') || (start !== 0 && e.action === 'shiftTab')) {\n e.preventDefault();\n }\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n start = this.inputElement.selectionStart;\n end = this.inputElement.selectionEnd;\n }\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n if (this.enableMask) {\n this.inputElement.selectionStart = start;\n this.inputElement.selectionEnd = end;\n }\n if (e.action === 'tab' && e.target === this.inputElement && this.isCalendar() && document.activeElement === this.inputElement) {\n e.preventDefault();\n this.headerTitleElement.focus();\n }\n if (e.action === 'shiftTab' && e.target === this.inputElement && this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n break;\n }\n default:\n this.defaultAction(e);\n // Fix for close the popup when select the previously selected value.\n if (e.action === 'select' && clickedView === this.depth) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.defaultAction = function (e) {\n this.previousDate = ((!isNullOrUndefined(this.value) && new Date(+this.value)) || null);\n if (this.isCalendar()) {\n _super.prototype.keyActionHandle.call(this, e);\n if (this.isCalendar()) {\n attributes(this.inputElement, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n }\n }\n };\n DatePicker.prototype.popupUpdate = function () {\n if ((isNullOrUndefined(this.value)) && (!isNullOrUndefined(this.previousDate)) ||\n (((this.getModuleName() !== 'datetimepicker') && (+this.value !== +this.previousDate)) || ((this.getModuleName() === 'datetimepicker') && (+this.value !== +this.previousDateTime)))) {\n if (this.popupObj) {\n if (this.popupObj.element.querySelectorAll('.' + SELECTED).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + SELECTED), [SELECTED]);\n }\n }\n if (!isNullOrUndefined(this.value)) {\n if ((+this.value >= +this.min) && (+this.value <= +this.max)) {\n var targetdate = new Date(this.checkValue(this.value));\n _super.prototype.navigateTo.call(this, 'Month', targetdate);\n }\n }\n }\n };\n DatePicker.prototype.strictModeUpdate = function () {\n var format;\n var pattern = /^y/;\n var charPattern = /[^a-zA-Z]/;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n format = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else if (!pattern.test(this.formatString) || charPattern.test(this.formatString)) {\n format = isNullOrUndefined(this.formatString) ? this.formatString : this.formatString.replace('dd', 'd');\n }\n if (!isNullOrUndefined(format)) {\n var len = format.split('M').length - 1;\n if (len < 3) {\n format = format.replace('MM', 'M');\n }\n }\n else {\n format = this.formatString;\n }\n var dateOptions;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n };\n }\n else {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateOptions = formatOptions;\n }\n var date;\n if (typeof this.inputElement.value === 'string') {\n this.inputElement.value = this.inputElement.value.trim();\n }\n if ((this.getModuleName() === 'datetimepicker')) {\n if (this.checkDateValue(this.globalize.parseDate(this.inputElement.value, dateOptions))) {\n var modifiedValue = this.inputElement.value.replace(/(am|pm|Am|aM|pM|Pm)/g, function (match) { return match.toLocaleUpperCase(); });\n date = this.globalize.parseDate(modifiedValue, dateOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.parseDate(this.inputElement.value, formatOptions);\n }\n }\n else {\n date = this.globalize.parseDate(this.inputElement.value, dateOptions);\n date = (!isNullOrUndefined(date) && isNaN(+date)) ? null : date;\n if (!isNullOrUndefined(this.formatString) && this.inputElement.value !== '' && this.strictMode) {\n if ((this.isPopupClicked || (!this.isPopupClicked && this.inputElement.value === this.previousElementValue))\n && this.formatString.indexOf('y') === -1) {\n date.setFullYear(this.value.getFullYear());\n }\n }\n }\n // EJ2-35061 - To prevent change event from triggering twice when using strictmode and format property\n if ((this.getModuleName() === 'datepicker') && (this.value && !isNaN(+this.value)) && date) {\n date.setHours(this.value.getHours(), this.value.getMinutes(), this.value.getSeconds(), this.value.getMilliseconds());\n }\n if (this.strictMode && date) {\n this.updateInputValue(this.globalize.formatDate(date, dateOptions));\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n else if (!this.strictMode) {\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n if (this.strictMode && !date && this.inputElement.value === (this.enableMask ? this.maskedDateValue : '')) {\n this.setProperties({ value: null }, true);\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n if (isNullOrUndefined(this.value)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n };\n DatePicker.prototype.createCalendar = function () {\n var _this = this;\n this.popupWrapper = this.createElement('div', { className: '' + ROOT + ' ' + POPUPWRAPPER, id: this.inputElement.id + '_options' });\n this.popupWrapper.setAttribute('aria-label', this.element.id);\n this.popupWrapper.setAttribute('role', 'dialog');\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (Browser.isDevice) {\n this.modelHeader();\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-date-modal';\n document.body.className += ' ' + OVERFLOW;\n this.modal.style.display = 'block';\n document.body.appendChild(this.modal);\n }\n //this.calendarElement represent the Calendar object from the Calendar class.\n this.calendarElement.querySelector('table tbody').className = '';\n this.popupObj = new Popup(this.popupWrapper, {\n content: this.calendarElement,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : (this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' }),\n offsetY: OFFSETVALUE,\n targetType: 'container',\n enableRtl: this.enableRtl,\n zIndex: this.zIndex,\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : (this.enableRtl ? { X: 'fit', Y: 'flip' } : { X: 'flip', Y: 'flip' }),\n open: function () {\n if (Browser.isDevice && _this.fullScreenMode) {\n _this.iconRight = parseInt(window.getComputedStyle(_this.calendarElement.querySelector('.e-header.e-month .e-prev')).marginRight, 10) > 16 ? true : false;\n _this.touchModule = new Touch(_this.calendarElement.querySelector(\".e-content.e-month\"), {\n swipe: _this.CalendarSwipeHandler.bind(_this)\n });\n EventHandler.add(_this.calendarElement.querySelector(\".e-content.e-month\"), \"touchstart\", _this.TouchStartHandler, _this);\n }\n if (_this.getModuleName() !== 'datetimepicker') {\n if (document.activeElement !== _this.inputElement) {\n _this.defaultKeyConfigs = extend(_this.defaultKeyConfigs, _this.keyConfigs);\n _this.calendarElement.children[1].firstElementChild.focus();\n _this.calendarKeyboardModules = new KeyboardEvents(_this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: _this.calendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n _this.calendarKeyboardModules = new KeyboardEvents(_this.inputWrapper.container.children[_this.index], {\n eventName: 'keydown',\n keyAction: _this.calendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n }\n }\n }, close: function () {\n if (_this.isDateIconClicked) {\n _this.inputWrapper.container.children[_this.index].focus();\n }\n if (_this.value) {\n _this.disabledDates();\n }\n if (_this.popupObj) {\n _this.popupObj.destroy();\n }\n _this.resetCalendar();\n detach(_this.popupWrapper);\n _this.popupObj = _this.popupWrapper = null;\n _this.preventArgs = null;\n _this.calendarKeyboardModules = null;\n _this.setAriaAttributes();\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n this.popupObj.element.className += ' ' + this.cssClass;\n this.setAriaAttributes();\n };\n DatePicker.prototype.CalendarSwipeHandler = function (e) {\n var direction = 0;\n if (this.iconRight) {\n switch (e.swipeDirection) {\n case \"Left\":\n direction = 1;\n break;\n case \"Right\":\n direction = -1;\n break;\n default:\n break;\n }\n }\n else {\n switch (e.swipeDirection) {\n case \"Up\":\n direction = 1;\n break;\n case \"Down\":\n direction = -1;\n break;\n default:\n break;\n }\n }\n if (this.touchStart) {\n if (direction === 1) {\n this.navigateNext(e);\n }\n else if (direction === -1) {\n this.navigatePrevious(e);\n }\n this.touchStart = false;\n }\n };\n DatePicker.prototype.TouchStartHandler = function (e) {\n this.touchStart = true;\n };\n DatePicker.prototype.setAriaDisabled = function () {\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n };\n DatePicker.prototype.modelHeader = function () {\n var dateOptions;\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var yearHeading = this.createElement('h1', { className: 'e-model-year' });\n var h2 = this.createElement('div');\n var daySpan = this.createElement('span', { className: 'e-model-day' });\n var monthSpan = this.createElement('span', { className: 'e-model-month' });\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'y', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'y', skeleton: 'dateTime', calendar: 'islamic' };\n }\n yearHeading.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'E', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'E', skeleton: 'dateTime', calendar: 'islamic' };\n }\n daySpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions) + ', ';\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime', calendar: 'islamic' };\n }\n monthSpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n if (this.fullScreenMode) {\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.modelCloseHandler, this);\n var modelTodayButton = this.calendarElement.querySelector(\"button.e-today\");\n h2.classList.add(\"e-day-wrapper\");\n modelTodayButton.classList.add(\"e-outline\");\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTodayButton);\n }\n if (!this.fullScreenMode)\n modelHeader.appendChild(yearHeading);\n h2.appendChild(daySpan);\n h2.appendChild(monthSpan);\n modelHeader.appendChild(h2);\n this.calendarElement.insertBefore(modelHeader, this.calendarElement.firstElementChild);\n };\n DatePicker.prototype.modelCloseHandler = function (e) {\n this.hide();\n };\n DatePicker.prototype.changeTrigger = function (event) {\n if (this.inputElement.value !== this.previousElementValue) {\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n if (this.isDynamicValueChanged && this.isCalendar()) {\n this.popupUpdate();\n }\n this.changedArgs.value = this.value;\n this.changedArgs.event = event || null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = !isNullOrUndefined(event);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNaN(+new Date(this.checkValue(this.value))) ? new Date(this.checkValue(this.value)) : null;\n this.isInteracted = true;\n }\n }\n this.isKeyAction = false;\n };\n DatePicker.prototype.navigatedEvent = function () {\n this.trigger('navigated', this.navigatedArgs);\n };\n DatePicker.prototype.keyupHandler = function (e) {\n this.isKeyAction = (this.inputElement.value !== this.previousElementValue) ? true : false;\n };\n DatePicker.prototype.changeEvent = function (event) {\n if (!this.isIconClicked && !(this.isBlur || this.isKeyAction)) {\n this.selectCalendar(event);\n }\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n this.changedArgs.event = event ? event : null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = this.isInteracted;\n if (!this.isDynamicValueChanged) {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = this.value && new Date(+this.value);\n if (!this.isDynamicValueChanged) {\n this.hide(event);\n }\n this.previousElementValue = this.inputElement.value;\n this.errorClass();\n }\n else if (event) {\n this.hide(event);\n }\n this.isKeyAction = false;\n };\n DatePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this.calendarMode === 'Islamic') {\n modules.push({ args: [this], member: 'islamic', name: 'Islamic' });\n }\n if (this.enableMask) {\n modules.push({ args: [this], member: 'MaskedDateTime' });\n }\n return modules;\n };\n DatePicker.prototype.selectCalendar = function (e) {\n var date;\n var tempFormat;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else {\n tempFormat = this.formatString;\n }\n if (this.value) {\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n }\n if (!isNullOrUndefined(date)) {\n this.updateInputValue(date);\n if (this.enableMask) {\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n }\n }\n };\n DatePicker.prototype.isCalendar = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + POPUPWRAPPER)) {\n return true;\n }\n return false;\n };\n DatePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(this.width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (this.width) : (formatUnit(this.width));\n }\n else {\n this.inputWrapper.container.style.width = '100%';\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Shows the Calendar.\n *\n * @returns {void}\n\n */\n DatePicker.prototype.show = function (type, e) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupObj) {\n return;\n }\n else {\n var prevent_1 = true;\n var outOfRange = void 0;\n if (!isNullOrUndefined(this.value) && !(+this.value >= +new Date(this.checkValue(this.min))\n && +this.value <= +new Date(this.checkValue(this.max)))) {\n outOfRange = new Date(this.checkValue(this.value));\n this.setProperties({ 'value': null }, true);\n }\n else {\n outOfRange = this.value || null;\n }\n if (!this.isCalendar()) {\n _super.prototype.render.call(this);\n this.setProperties({ 'value': outOfRange || null }, true);\n this.previousDate = outOfRange;\n this.createCalendar();\n }\n if (Browser.isDevice) {\n this.mobilePopupWrapper = this.createElement('div', { className: 'e-datepick-mob-popup-wrap' });\n document.body.appendChild(this.mobilePopupWrapper);\n }\n this.preventArgs = {\n preventDefault: function () {\n prevent_1 = false;\n },\n popup: this.popupObj,\n event: e || null,\n cancel: false,\n appendTo: Browser.isDevice ? this.mobilePopupWrapper : document.body\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (prevent_1 && !_this.preventArgs.cancel) {\n addClass(_this.inputWrapper.buttons, ACTIVE);\n _this.preventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupObj.refreshPosition(_this.inputElement);\n var openAnimation = {\n name: 'FadeIn',\n duration: Browser.isDevice ? 0 : OPENDURATION\n };\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _super.prototype.setOverlayIndex.call(_this, _this.mobilePopupWrapper, _this.popupObj.element, _this.modal, Browser.isDevice);\n _this.setAriaAttributes();\n }\n else {\n _this.popupObj.destroy();\n _this.popupWrapper = _this.popupObj = null;\n }\n if (!isNullOrUndefined(_this.inputElement) && _this.inputElement.value === '') {\n if (!isNullOrUndefined(_this.tableBodyElement) && _this.tableBodyElement.querySelectorAll('td.e-selected').length > 0) {\n addClass([_this.tableBodyElement.querySelector('td.e-selected')], FOCUSEDDATE);\n removeClass(_this.tableBodyElement.querySelectorAll('td.e-selected'), SELECTED);\n }\n }\n EventHandler.add(document, 'mousedown touchstart', _this.documentHandler, _this);\n });\n if (Browser.isDevice) {\n var dlgOverlay = this.createElement('div', { className: 'e-dlg-overlay' });\n dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.mobilePopupWrapper.appendChild(dlgOverlay);\n }\n }\n };\n /**\n * Hide the Calendar.\n *\n * @returns {void}\n\n */\n DatePicker.prototype.hide = function (event) {\n var _this = this;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var prevent_2 = true;\n this.preventArgs = {\n preventDefault: function () {\n prevent_2 = false;\n },\n popup: this.popupObj,\n event: event || null,\n cancel: false\n };\n removeClass(this.inputWrapper.buttons, ACTIVE);\n removeClass([document.body], OVERFLOW);\n var eventArgs = this.preventArgs;\n if (this.isCalendar()) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.closeEventCallback(prevent_2, eventArgs);\n });\n }\n else {\n this.closeEventCallback(prevent_2, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n DatePicker.prototype.closeEventCallback = function (prevent, eventArgs) {\n this.preventArgs = eventArgs;\n if (this.isCalendar() && (prevent && !this.preventArgs.cancel)) {\n this.popupObj.hide();\n this.isAltKeyPressed = false;\n this.keyboardModule.destroy();\n removeClass(this.inputWrapper.buttons, ACTIVE);\n }\n this.setAriaAttributes();\n if (Browser.isDevice && this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(this.mobilePopupWrapper) && (prevent && (isNullOrUndefined(this.preventArgs) || !this.preventArgs.cancel))) {\n this.mobilePopupWrapper.remove();\n this.mobilePopupWrapper = null;\n }\n }\n EventHandler.remove(document, 'mousedown touchstart', this.documentHandler);\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n /* eslint-disable jsdoc/require-param */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DatePicker.prototype.focusIn = function (triggerEvent) {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n /* eslint-enable jsdoc/require-param */\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DatePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n this.inputElement.blur();\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the DatePicker.\n *\n * @returns {string}\n\n */\n DatePicker.prototype.currentView = function () {\n var currentView;\n if (this.calendarElement) {\n // calls the Calendar currentView public method\n currentView = _super.prototype.currentView.call(this);\n }\n return currentView;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Navigates to specified month or year or decade view of the DatePicker.\n *\n * @param {string} view - Specifies the view of the calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @returns {void}\n\n */\n DatePicker.prototype.navigateTo = function (view, date) {\n if (this.calendarElement) {\n // calls the Calendar navigateTo public method\n _super.prototype.navigateTo.call(this, view, date);\n }\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DatePicker.prototype.destroy = function () {\n this.unBindEvents();\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n _super.prototype.destroy.call(this);\n Input.destroy({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n if (!isNullOrUndefined(this.keyboardModules)) {\n this.keyboardModules.destroy();\n }\n if (this.popupObj && this.popupObj.element.classList.contains(POPUP)) {\n _super.prototype.destroy.call(this);\n }\n var ariaAttrs = {\n 'aria-atomic': 'true', 'aria-disabled': 'true',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-label': this.getModuleName()\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttrs, this.inputElement);\n if (!isNullOrUndefined(this.inputElementCopy.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n this.ensureInputAttribute();\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObj = this.popupWrapper = null;\n this.keyboardModule.destroy();\n }\n if (this.ngTag === null) {\n if (this.inputElement) {\n if (!isNullOrUndefined(this.inputWrapper)) {\n this.inputWrapper.container.insertAdjacentElement('afterend', this.inputElement);\n }\n removeClass([this.inputElement], [INPUTROOT]);\n }\n removeClass([this.element], [ROOT]);\n if (!isNullOrUndefined(this.inputWrapper)) {\n detach(this.inputWrapper.container);\n }\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n this.inputWrapper = null;\n this.keyboardModules = null;\n };\n DatePicker.prototype.ensureInputAttribute = function () {\n var prop = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n prop[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < prop.length; i++) {\n if (isNullOrUndefined(this.inputElementCopy.getAttribute(prop[i]))) {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n this.inputElement.removeAttribute(prop[i]);\n }\n else {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = this.inputElementCopy.getAttribute(prop[i]);\n }\n this.inputElement.setAttribute(prop[i], this.inputElementCopy.getAttribute(prop[i]));\n }\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.preRender = function () {\n this.inputElementCopy = this.element.cloneNode(true);\n removeClass([this.inputElementCopy], [ROOT, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.formElement = closest(this.inputElement, 'form');\n this.index = this.showClearButton ? 2 : 1;\n this.ngTag = null;\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.ngTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n if (this.element.getAttribute('id')) {\n if (this.ngTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.element.id = getUniqueID('ej2-datetimepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n else {\n this.element.id = getUniqueID('ej2-datepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n }\n if (this.ngTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.checkHtmlAttributes(false);\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n _super.prototype.preRender.call(this);\n };\n DatePicker.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n altUpArrow: 'alt+uparrow',\n altDownArrow: 'alt+downarrow',\n escape: 'escape',\n enter: 'enter',\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n shiftTab: 'shift+tab',\n tab: 'tab'\n };\n return this.defaultKeyConfigs;\n };\n DatePicker.prototype.validationAttribute = function (target, inputElement) {\n var nameAttribute = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n inputElement.setAttribute('name', nameAttribute);\n target.removeAttribute('name');\n var attribute = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attribute.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attribute[i]))) {\n continue;\n }\n var attr = target.getAttribute(attribute[i]);\n inputElement.setAttribute(attribute[i], attr);\n target.removeAttribute(attribute[i]);\n }\n };\n DatePicker.prototype.checkFormat = function () {\n var culture = new Internationalization(this.locale);\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (this.format.skeleton !== '' && !isNullOrUndefined(this.format.skeleton)) {\n var skeletonString = this.format.skeleton;\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'dateTime' });\n }\n else {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'date' });\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = this.dateTimeFormat;\n }\n else {\n this.formatString = null;\n }\n }\n }\n else {\n this.formatString = null;\n }\n };\n DatePicker.prototype.checkHtmlAttributes = function (dynamic) {\n this.globalize = new Internationalization(this.locale);\n this.checkFormat();\n this.checkView();\n var attributes = dynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'disabled', 'readonly', 'style', 'name', 'placeholder', 'type'];\n var options;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n };\n }\n else {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['enabled'] === undefined)) || dynamic)) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !dynamic);\n }\n break;\n case 'readonly':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['readonly'] === undefined)) || dynamic)) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !dynamic);\n }\n break;\n case 'placeholder':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['placeholder'] === undefined)) || dynamic)) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !dynamic);\n }\n break;\n case 'style':\n this.inputElement.setAttribute('style', '' + this.inputElement.getAttribute(prop));\n break;\n case 'name':\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute(prop));\n break;\n case 'value':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['value'] === undefined)) || dynamic)) {\n var value = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(value, options), {}), !dynamic);\n }\n break;\n case 'min':\n if ((+this.min === +new Date(1900, 0, 1)) || dynamic) {\n var min = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(min), {}), !dynamic);\n }\n break;\n case 'max':\n if ((+this.max === +new Date(2099, 11, 31)) || dynamic) {\n var max = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(max), {}), !dynamic);\n }\n break;\n case 'type':\n if (this.inputElement.getAttribute(prop) !== 'text') {\n this.inputElement.setAttribute('type', 'text');\n }\n break;\n }\n }\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DatePicker.prototype.getModuleName = function () {\n return 'datepicker';\n };\n DatePicker.prototype.disabledDates = function (isDynamic, isBlur) {\n if (isDynamic === void 0) { isDynamic = false; }\n if (isBlur === void 0) { isBlur = false; }\n var formatOptions;\n var globalize;\n var valueCopy = this.checkDateValue(this.value) ? new Date(+this.value) : new Date(this.checkValue(this.value));\n var previousValCopy = this.previousDate;\n //calls the Calendar render method to check the disabled dates through renderDayCell event and update the input value accordingly.\n this.minMaxUpdates();\n if (!isDynamic || (isDynamic && !isNullOrUndefined(this.renderDayCell))) {\n _super.prototype.render.call(this);\n }\n this.previousDate = previousValCopy;\n var date = valueCopy && +(valueCopy);\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + date);\n if (!this.strictMode) {\n if (typeof this.value === 'string' || ((typeof this.value === 'object') && (+this.value) !== (+valueCopy))) {\n this.setProperties({ value: valueCopy }, true);\n }\n }\n if (!isNullOrUndefined(this.calendarElement) && !isNullOrUndefined(this.calendarElement.querySelectorAll(dateIdString)[0])) {\n if (this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled')) {\n if (!this.strictMode) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n }\n }\n var inputVal;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n inputVal = globalize;\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n inputVal = this.globalize.formatDate(valueCopy, formatOptions);\n }\n if (!this.popupObj) {\n this.updateInputValue(inputVal);\n if (this.enableMask) {\n this.updateInputValue(this.maskedDateValue);\n this.notify('createMask', {\n module: 'MaskedDateTime', isBlur: isBlur\n });\n }\n }\n };\n DatePicker.prototype.setAriaAttributes = function () {\n if (this.isCalendar()) {\n Input.addAttributes({ 'aria-expanded': 'true' }, this.inputElement);\n attributes(this.inputElement, { 'aria-owns': this.inputElement.id + '_options' });\n attributes(this.inputElement, { 'aria-controls': this.inputElement.id });\n if (this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': '' + this.setActiveDescendant() });\n }\n }\n else {\n Input.addAttributes({ 'aria-expanded': 'false' }, this.inputElement);\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-controls');\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n DatePicker.prototype.errorClass = function () {\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + (+this.value));\n var isDisabledDate = this.calendarElement &&\n this.calendarElement.querySelectorAll(dateIdString)[0] &&\n this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled');\n if ((!isNullOrUndefined(this.value) && !isNullOrUndefined(this.min) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !isNullOrUndefined(this.max) && !(new Date(this.value).setMilliseconds(0) >= new Date(this.min).setMilliseconds(0)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n && new Date(this.value).setMilliseconds(0) <= new Date(this.max).setMilliseconds(0)))\n || (!this.strictMode && this.inputElement.value !== '' && this.inputElement.value !== this.maskedDateValue && isNullOrUndefined(this.value) || isDisabledDate)) {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n else if (!isNullOrUndefined(this.inputWrapper)) {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DatePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DatePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n DatePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.isInteracted = false;\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n this.previousElementValue = this.inputElement.value;\n if (isNullOrUndefined(this.value)) {\n if (this.enableMask) {\n this.updateInputValue(this.maskedDateValue);\n }\n else {\n this.updateInputValue('');\n }\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n this.updateInput(true);\n if (+this.previousDate !== +this.value) {\n this.changeTrigger(null);\n }\n this.isInteracted = true;\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'format':\n this.checkFormat();\n this.bindInputEvent();\n this.updateInput();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n break;\n case 'allowEdit':\n this.setAllowEdit();\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n this.setAriaDisabled();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkHtmlAttributes(true);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n if (this.datepickerOptions && this.datepickerOptions.placeholder == null) {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n }\n this.updateInput();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'start':\n case 'depth':\n this.checkView();\n if (this.calendarElement) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n this.index = this.showClearButton ? 2 : 1;\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n this.updateInputValue(this.maskedDateValue);\n this.bindInputEvent();\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.updateInputValue('');\n }\n }\n break;\n default:\n if (this.calendarElement && this.isCalendar()) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property({})\n ], DatePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(1000)\n ], DatePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property('Never')\n ], DatePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], DatePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"destroyed\", void 0);\n DatePicker = __decorate([\n NotifyPropertyChanges\n ], DatePicker);\n return DatePicker;\n}(Calendar));\nexport { DatePicker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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","import { ChangedEventArgs, DatePickerComponent } from \"@syncfusion/ej2-react-calendars\";\r\n\r\ninterface Props {\r\n name: string;\r\n placeholder: string;\r\n value?: Date;\r\n className?: string;\r\n change?: (args?: ChangedEventArgs) => void;\r\n format?: string;\r\n disabled?: boolean;\r\n required?: boolean;\r\n htmlAttributes?: { [key: string]: string };\r\n}\r\n\r\nexport const DDatePicker = ({ name, placeholder, value, className, change, format, disabled, required, htmlAttributes }: Props) => {\r\n return (\r\n \r\n );\r\n};\r\n","import { DialogUtility } from \"@syncfusion/ej2-react-popups\";\r\n\r\nimport \"./styles.scss\";\r\n\r\nexport const showInformationDialog = (content: string, close?: () => void) => {\r\n DialogUtility.alert({\r\n animationSettings: { effect: \"None\" },\r\n close: close,\r\n closeOnEscape: true,\r\n content: content,\r\n cssClass: \"dDialog m-3 information\",\r\n isDraggable: true,\r\n isModal: true,\r\n okButton: { text: \"OK\" },\r\n position: { X: \"center\", Y: \"center\" },\r\n showCloseIcon: true,\r\n title: \"Informazione\"\r\n });\r\n};\r\n\r\nexport const showSuccessDialog = (content: string, close?: () => void) => {\r\n DialogUtility.alert({\r\n animationSettings: { effect: \"None\" },\r\n close: close,\r\n closeOnEscape: true,\r\n content: content,\r\n cssClass: \"dDialog m-3 success\",\r\n isDraggable: true,\r\n isModal: true,\r\n okButton: { text: \"OK\" },\r\n position: { X: \"center\", Y: \"center\" },\r\n showCloseIcon: true,\r\n title: \"Successo\"\r\n });\r\n};\r\n\r\nexport const showWarningDialog = (content: string, onYes: () => void, onNo?: () => void) => {\r\n const dialog = DialogUtility.confirm({\r\n animationSettings: { effect: \"None\" },\r\n closeOnEscape: false,\r\n content: content,\r\n cssClass: \"dDialog m-3 warning\",\r\n isDraggable: true,\r\n isModal: true,\r\n okButton: { text: \"Sì\", click: () => { onYes(); dialog.hide(); } },\r\n cancelButton: { text: \"No\", click: () => { onNo && onNo(); dialog.hide(); } },\r\n position: { X: \"center\", Y: \"center\" },\r\n showCloseIcon: false,\r\n title: \"Avvertenza\"\r\n });\r\n};\r\n\r\nexport const showErrorDialog = (content: string, close?: () => void) => {\r\n DialogUtility.alert({\r\n animationSettings: { effect: \"None\" },\r\n close: close,\r\n closeOnEscape: true,\r\n content: content,\r\n cssClass: \"dDialog m-3 error\",\r\n isDraggable: true,\r\n isModal: true,\r\n okButton: { text: \"OK\" },\r\n position: { X: \"center\", Y: \"center\" },\r\n showCloseIcon: true,\r\n title: \"Errore\"\r\n });\r\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","import { createRef } from \"react\";\r\nimport { Query } from \"@syncfusion/ej2-data\";\r\nimport {\r\n ChangeEventArgs,\r\n DropDownListComponent,\r\n FieldSettingsModel,\r\n FilteringEventArgs,\r\n highlightSearch,\r\n} from \"@syncfusion/ej2-react-dropdowns\";\r\nimport { DDataManager } from \"data\";\r\n\r\ninterface Props {\r\n name?: string;\r\n placeholder: string;\r\n className?: string;\r\n change?: (args?: ChangeEventArgs) => void;\r\n foreignKeyPath: string;\r\n foreignKeyField: string;\r\n foreignKeyValue: string;\r\n value?: string;\r\n disabled?: boolean;\r\n required?: boolean;\r\n allowFiltering?: boolean;\r\n htmlAttributes?: { [key: string]: string };\r\n}\r\n\r\nexport const DDropDownBox = ({\r\n name,\r\n placeholder,\r\n className,\r\n change,\r\n foreignKeyPath,\r\n foreignKeyField,\r\n foreignKeyValue,\r\n value,\r\n disabled,\r\n required,\r\n allowFiltering = true,\r\n htmlAttributes,\r\n}: Props) => {\r\n const dropDownRef = createRef();\r\n const dataSource = new DDataManager({ path: foreignKeyPath });\r\n let queryString: string;\r\n\r\n const itemCreated = (e: any) => {\r\n highlightSearch(e.item, queryString, true, \"StartsWith\");\r\n };\r\n\r\n const fields: FieldSettingsModel & any = {\r\n text: foreignKeyValue,\r\n value: foreignKeyField,\r\n itemCreated: itemCreated,\r\n };\r\n\r\n const filtering = (args?: FilteringEventArgs) => {\r\n queryString = \"\";\r\n if (args) {\r\n queryString = args.text;\r\n let query = new Query();\r\n query =\r\n args.text !== \"\"\r\n ? query.where(foreignKeyValue!, \"startswith\", queryString, true)\r\n : query;\r\n args.updateData(dataSource!, query);\r\n }\r\n };\r\n\r\n const actionComplete = () => {\r\n if (dropDownRef.current && value)\r\n dropDownRef.current.value = value;\r\n }\r\n\r\n return (\r\n \r\n );\r\n};\r\n","/**\n * Defines types of Cell\n *\n * @hidden\n */\nexport var CellType;\n(function (CellType) {\n /** Defines CellType as Data */\n CellType[CellType[\"Data\"] = 0] = \"Data\";\n /** Defines CellType as Header */\n CellType[CellType[\"Header\"] = 1] = \"Header\";\n /** Defines CellType as Summary */\n CellType[CellType[\"Summary\"] = 2] = \"Summary\";\n /** Defines CellType as GroupSummary */\n CellType[CellType[\"GroupSummary\"] = 3] = \"GroupSummary\";\n /** Defines CellType as CaptionSummary */\n CellType[CellType[\"CaptionSummary\"] = 4] = \"CaptionSummary\";\n /** Defines CellType as Filter */\n CellType[CellType[\"Filter\"] = 5] = \"Filter\";\n /** Defines CellType as Indent */\n CellType[CellType[\"Indent\"] = 6] = \"Indent\";\n /** Defines CellType as GroupCaption */\n CellType[CellType[\"GroupCaption\"] = 7] = \"GroupCaption\";\n /** Defines CellType as GroupCaptionEmpty */\n CellType[CellType[\"GroupCaptionEmpty\"] = 8] = \"GroupCaptionEmpty\";\n /** Defines CellType as Expand */\n CellType[CellType[\"Expand\"] = 9] = \"Expand\";\n /** Defines CellType as HeaderIndent */\n CellType[CellType[\"HeaderIndent\"] = 10] = \"HeaderIndent\";\n /** Defines CellType as StackedHeader */\n CellType[CellType[\"StackedHeader\"] = 11] = \"StackedHeader\";\n /** Defines CellType as DetailHeader */\n CellType[CellType[\"DetailHeader\"] = 12] = \"DetailHeader\";\n /** Defines CellType as DetailExpand */\n CellType[CellType[\"DetailExpand\"] = 13] = \"DetailExpand\";\n /** Defines CellType as CommandColumn */\n CellType[CellType[\"CommandColumn\"] = 14] = \"CommandColumn\";\n /** Defines CellType as DetailFooterIntent */\n CellType[CellType[\"DetailFooterIntent\"] = 15] = \"DetailFooterIntent\";\n /** Defines CellType as RowDrag */\n CellType[CellType[\"RowDragIcon\"] = 16] = \"RowDragIcon\";\n /** Defines CellType as RowDragHeader */\n CellType[CellType[\"RowDragHIcon\"] = 17] = \"RowDragHIcon\";\n})(CellType || (CellType = {}));\n/**\n * Defines types of Render\n *\n * @hidden\n */\nexport var RenderType;\n(function (RenderType) {\n /** Defines RenderType as Header */\n RenderType[RenderType[\"Header\"] = 0] = \"Header\";\n /** Defines RenderType as Content */\n RenderType[RenderType[\"Content\"] = 1] = \"Content\";\n /** Defines RenderType as Summary */\n RenderType[RenderType[\"Summary\"] = 2] = \"Summary\";\n})(RenderType || (RenderType = {}));\n/**\n * Defines Predefined toolbar items.\n *\n * @hidden\n */\nexport var ToolbarItem;\n(function (ToolbarItem) {\n ToolbarItem[ToolbarItem[\"Add\"] = 0] = \"Add\";\n ToolbarItem[ToolbarItem[\"Edit\"] = 1] = \"Edit\";\n ToolbarItem[ToolbarItem[\"Update\"] = 2] = \"Update\";\n ToolbarItem[ToolbarItem[\"Delete\"] = 3] = \"Delete\";\n ToolbarItem[ToolbarItem[\"Cancel\"] = 4] = \"Cancel\";\n ToolbarItem[ToolbarItem[\"Print\"] = 5] = \"Print\";\n ToolbarItem[ToolbarItem[\"Search\"] = 6] = \"Search\";\n ToolbarItem[ToolbarItem[\"ColumnChooser\"] = 7] = \"ColumnChooser\";\n ToolbarItem[ToolbarItem[\"PdfExport\"] = 8] = \"PdfExport\";\n ToolbarItem[ToolbarItem[\"ExcelExport\"] = 9] = \"ExcelExport\";\n ToolbarItem[ToolbarItem[\"CsvExport\"] = 10] = \"CsvExport\";\n ToolbarItem[ToolbarItem[\"WordExport\"] = 11] = \"WordExport\";\n})(ToolbarItem || (ToolbarItem = {}));\n/**\n * Defines types of responsive dialogs\n *\n * @hidden\n */\nexport var ResponsiveDialogAction;\n(function (ResponsiveDialogAction) {\n /** Defines dialog type as Edit */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isEdit\"] = 0] = \"isEdit\";\n /** Defines dialog type as Add */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isAdd\"] = 1] = \"isAdd\";\n /** Defines dialog type as Sort */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isSort\"] = 2] = \"isSort\";\n /** Defines dialog type as Filter */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isFilter\"] = 3] = \"isFilter\";\n /** Defines dialog type as ColMenu */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isColMenu\"] = 4] = \"isColMenu\";\n /** Defines dialog type as ColumChooser */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isColumnChooser\"] = 5] = \"isColumnChooser\";\n})(ResponsiveDialogAction || (ResponsiveDialogAction = {}));\n/**\n * Defines responsive toolbar actions\n *\n * @hidden\n */\nexport var ResponsiveToolbarAction;\n(function (ResponsiveToolbarAction) {\n /** Defines initial responsive toolbar buttons */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isInitial\"] = 0] = \"isInitial\";\n /** Defines responsive toolbar search */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isSearch\"] = 1] = \"isSearch\";\n})(ResponsiveToolbarAction || (ResponsiveToolbarAction = {}));\n","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","/** @hidden */\nexport var created = 'create';\n/** @hidden */\nexport var destroyed = 'destroy';\n/** @hidden */\nexport var load = 'load';\n/** @hidden */\nexport var rowDataBound = 'rowDataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var headerCellInfo = 'headerCellInfo';\n/** @hidden */\nexport var actionBegin = 'actionBegin';\n/** @hidden */\nexport var actionComplete = 'actionComplete';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var dataBound = 'dataBound';\n/** @hidden */\nexport var rowSelecting = 'rowSelecting';\n/** @hidden */\nexport var rowSelected = 'rowSelected';\n/** @hidden */\nexport var rowDeselecting = 'rowDeselecting';\n/** @hidden */\nexport var rowDeselected = 'rowDeselected';\n/** @hidden */\nexport var cellSelecting = 'cellSelecting';\n/** @hidden */\nexport var cellSelected = 'cellSelected';\n/** @hidden */\nexport var cellDeselecting = 'cellDeselecting';\n/** @hidden */\nexport var cellDeselected = 'cellDeselected';\n/** @hidden */\nexport var columnSelecting = 'columnSelecting';\n/** @hidden */\nexport var columnSelected = 'columnSelected';\n/** @hidden */\nexport var columnDeselecting = 'columnDeselecting';\n/** @hidden */\nexport var columnDeselected = 'columnDeselected';\n/** @hidden */\nexport var columnDragStart = 'columnDragStart';\n/** @hidden */\nexport var columnDrag = 'columnDrag';\n/** @hidden */\nexport var columnDrop = 'columnDrop';\n/** @hidden */\nexport var rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nexport var rowDragStart = 'rowDragStart';\n/** @hidden */\nexport var rowDrag = 'rowDrag';\n/** @hidden */\nexport var rowDrop = 'rowDrop';\n/** @hidden */\nexport var beforePrint = 'beforePrint';\n/** @hidden */\nexport var printComplete = 'printComplete';\n/** @hidden */\nexport var detailDataBound = 'detailDataBound';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var batchAdd = 'batchAdd';\n/** @hidden */\nexport var batchCancel = 'batchCancel';\n/** @hidden */\nexport var batchDelete = 'batchDelete';\n/** @hidden */\nexport var beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nexport var beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nexport var beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nexport var beginEdit = 'beginEdit';\n/** @hidden */\nexport var cellEdit = 'cellEdit';\n/** @hidden */\nexport var cellSave = 'cellSave';\n/** @hidden */\nexport var cellSaved = 'cellSaved';\n/** @hidden */\nexport var endAdd = 'endAdd';\n/** @hidden */\nexport var endDelete = 'endDelete';\n/** @hidden */\nexport var endEdit = 'endEdit';\n/** @hidden */\nexport var recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nexport var recordClick = 'recordClick';\n/** @hidden */\nexport var beforeDataBound = 'beforeDataBound';\n/** @hidden */\nexport var beforeOpenColumnChooser = 'beforeOpenColumnChooser';\n/** @hidden */\nexport var beforeOpenAdaptiveDialog = 'beforeOpenAdaptiveDialog';\n/** @hidden */\nexport var resizeStart = 'resizeStart';\n/** @hidden */\nexport var onResize = 'resizing';\n/** @hidden */\nexport var resizeStop = 'resizeStop';\n/** @hidden */\nexport var checkBoxChange = 'checkBoxChange';\n/** @hidden */\nexport var beforeCopy = 'beforeCopy';\n/** @hidden */\nexport var beforePaste = 'beforePaste';\n/** @hidden */\nexport var beforeAutoFill = 'beforeAutoFill';\n/** @hidden */\nexport var filterChoiceRequest = 'filterchoicerequest';\n/** @hidden */\nexport var filterAfterOpen = 'filterAfterOpen';\n/** @hidden */\nexport var filterBeforeOpen = 'filterBeforeOpen';\n/** @hidden */\nexport var filterSearchBegin = 'filterSearchBegin';\n/** @hidden */\nexport var commandClick = 'commandClick';\n/** @hidden */\nexport var exportGroupCaption = 'exportGroupCaption';\n/** @hidden */\nexport var lazyLoadGroupExpand = 'lazyLoadGroupExpand';\n/** @hidden */\nexport var lazyLoadGroupCollapse = 'lazyLoadGroupCollapse';\n/**\n * Specifies grid internal events\n */\n/** @hidden */\nexport var initialLoad = 'initial-load';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var dataReady = 'data-ready';\n/** @hidden */\nexport var contentReady = 'content-ready';\n/** @hidden */\nexport var uiUpdate = 'ui-update';\n/** @hidden */\nexport var onEmpty = 'on-empty';\n/** @hidden */\nexport var inBoundModelChanged = 'inbound-model-changed';\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var colGroupRefresh = 'colgroup-refresh';\n/** @hidden */\nexport var headerRefreshed = 'header-refreshed';\n/** @hidden */\nexport var pageBegin = 'paging-begin';\n/** @hidden */\nexport var pageComplete = 'paging-complete';\n/** @hidden */\nexport var sortBegin = 'sorting-begin';\n/** @hidden */\nexport var sortComplete = 'sorting-complete';\n/** @hidden */\nexport var filterBegin = 'filtering-begin';\n/** @hidden */\nexport var filterComplete = 'filtering-complete';\n/** @hidden */\nexport var searchBegin = 'searching-begin';\n/** @hidden */\nexport var searchComplete = 'searching-complete';\n/** @hidden */\nexport var reorderBegin = 'reorder-begin';\n/** @hidden */\nexport var reorderComplete = 'reorder-complete';\n/** @hidden */\nexport var rowDragAndDropBegin = 'rowdraganddrop-begin';\n/** @hidden */\nexport var rowDragAndDropComplete = 'rowdraganddrop-complete';\n/** @hidden */\nexport var groupBegin = 'grouping-begin';\n/** @hidden */\nexport var groupComplete = 'grouping-complete';\n/** @hidden */\nexport var ungroupBegin = 'ungrouping-begin';\n/** @hidden */\nexport var ungroupComplete = 'ungrouping-complete';\n/** @hidden */\nexport var groupAggregates = 'group-aggregates';\n/** @hidden */\nexport var refreshFooterRenderer = 'refresh-footer-rendered';\n/** @hidden */\nexport var refreshAggregateCell = 'refresh-aggregate-cell';\n/** @hidden */\nexport var refreshAggregates = 'refresh-aggregates';\n/** @hidden */\nexport var rowSelectionBegin = 'rowselecting';\n/** @hidden */\nexport var rowSelectionComplete = 'rowselected';\n/** @hidden */\nexport var columnSelectionBegin = 'columnselecting';\n/** @hidden */\nexport var columnSelectionComplete = 'columnselected';\n/** @hidden */\nexport var cellSelectionBegin = 'cellselecting';\n/** @hidden */\nexport var cellSelectionComplete = 'cellselected';\n/** @hidden */\nexport var destroyAutoFillElements = 'destroy-autofill-elements';\n/** @hidden */\nexport var beforeCellFocused = 'beforecellfocused';\n/** @hidden */\nexport var cellFocused = 'cellfocused';\n/** @hidden */\nexport var keyPressed = 'key-pressed';\n/** @hidden */\nexport var click = 'click';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var columnVisibilityChanged = 'column-visible-changed';\n/** @hidden */\nexport var scroll = 'scroll';\n/** @hidden */\nexport var columnWidthChanged = 'column-width-changed';\n/** @hidden */\nexport var columnPositionChanged = 'column-position-changed';\n/** @hidden */\nexport var rowDragAndDrop = 'row-drag-and-drop';\n/** @hidden */\nexport var rowsAdded = 'rows-added';\n/** @hidden */\nexport var rowsRemoved = 'rows-removed';\n/** @hidden */\nexport var columnDragStop = 'column-drag-stop';\n/** @hidden */\nexport var headerDrop = 'header-drop';\n/** @hidden */\nexport var dataSourceModified = 'datasource-modified';\n/** @hidden */\nexport var refreshComplete = 'refresh-complete';\n/** @hidden */\nexport var refreshVirtualBlock = 'refresh-virtual-block';\n/** @hidden */\nexport var dblclick = 'dblclick';\n/** @hidden */\nexport var toolbarRefresh = 'toolbar-refresh';\n/** @hidden */\nexport var bulkSave = 'bulk-save';\n/** @hidden */\nexport var autoCol = 'auto-col';\n/** @hidden */\nexport var tooltipDestroy = 'tooltip-destroy';\n/** @hidden */\nexport var updateData = 'update-data';\n/** @hidden */\nexport var editBegin = 'edit-begin';\n/** @hidden */\nexport var editComplete = 'edit-complete';\n/** @hidden */\nexport var addBegin = 'add-begin';\n/** @hidden */\nexport var addComplete = 'add-complete';\n/** @hidden */\nexport var saveComplete = 'save-complete';\n/** @hidden */\nexport var deleteBegin = 'delete-begin';\n/** @hidden */\nexport var deleteComplete = 'delete-complete';\n/** @hidden */\nexport var preventBatch = 'prevent-batch';\n/** @hidden */\nexport var dialogDestroy = 'dialog-destroy';\n/** @hidden */\nexport var crudAction = 'crud-Action';\n/** @hidden */\nexport var addDeleteAction = 'add-delete-Action';\n/** @hidden */\nexport var destroyForm = 'destroy-form';\n/** @hidden */\nexport var doubleTap = 'double-tap';\n/** @hidden */\nexport var beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nexport var excelExportComplete = 'excelExportComplete';\n/** @hidden */\nexport var excelQueryCellInfo = 'excelQueryCellInfo';\n/** @hidden */\nexport var excelHeaderQueryCellInfo = 'excelHeaderQueryCellInfo';\n/** @hidden */\nexport var exportDetailDataBound = 'exportDetailDataBound';\n/** @hidden */\nexport var exportDetailTemplate = 'exportDetailTemplate';\n/** @hidden */\nexport var beforePdfExport = 'beforePdfExport';\n/** @hidden */\nexport var pdfExportComplete = 'pdfExportComplete';\n/** @hidden */\nexport var pdfQueryCellInfo = 'pdfQueryCellInfo';\n/** @hidden */\nexport var pdfHeaderQueryCellInfo = 'pdfHeaderQueryCellInfo';\n/** @hidden */\nexport var accessPredicate = 'access-predicate';\n/** @hidden */\nexport var contextMenuClick = 'contextMenuClick';\n/** @hidden */\nexport var freezeRender = 'freezerender';\n/** @hidden */\nexport var freezeRefresh = 'freezerefresh';\n/** @hidden */\nexport var contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nexport var columnMenuClick = 'columnMenuClick';\n/** @hidden */\nexport var columnMenuOpen = 'columnMenuOpen';\n/** @hidden */\nexport var filterOpen = 'filterOpen';\n/** @hidden */\nexport var filterDialogCreated = 'filterDialogCreated';\n/** @hidden */\nexport var filterMenuClose = 'filter-menu-close';\n/** @hidden */\nexport var initForeignKeyColumn = 'initForeignKeyColumn';\n/** @hidden */\nexport var getForeignKeyData = 'getForeignKeyData';\n/** @hidden */\nexport var generateQuery = 'generateQuery';\n/** @hidden */\nexport var showEmptyGrid = 'showEmptyGrid';\n/** @hidden */\nexport var foreignKeyData = 'foreignKeyData';\n/** @hidden */\nexport var columnDataStateChange = 'columnDataStateChange';\n/** @hidden */\nexport var dataStateChange = 'dataStateChange';\n/** @hidden */\nexport var dataSourceChanged = 'dataSourceChanged';\n/** @hidden */\nexport var rtlUpdated = 'rtl-updated';\n/** @hidden */\nexport var beforeFragAppend = 'beforeFragAppend';\n/** @hidden */\nexport var frozenHeight = 'frozenHeight';\n/** @hidden */\nexport var textWrapRefresh = 'textWrapRefresh';\n/** @hidden */\nexport var recordAdded = 'recordAdded';\n/** @hidden */\nexport var cancelBegin = 'cancel-Begin';\n/** @hidden */\nexport var editNextValCell = 'editNextValCell';\n/** @hidden */\nexport var hierarchyPrint = 'hierarchyprint';\n/** @hidden */\nexport var expandChildGrid = 'expandchildgrid';\n/** @hidden */\nexport var printGridInit = 'printGrid-Init';\n/** @hidden */\nexport var exportRowDataBound = 'export-RowDataBound';\n/** @hidden */\nexport var exportDataBound = 'export-DataBound';\n/** @hidden */\nexport var rowPositionChanged = 'row-position-changed';\n/** @hidden */\nexport var columnChooserOpened = 'columnChooserOpened';\n/** @hidden */\nexport var batchForm = 'batchedit-form';\n/** @hidden */\nexport var beforeStartEdit = 'edit-form';\n/** @hidden */\nexport var beforeBatchCancel = 'before-batch-cancel';\n/** @hidden */\nexport var batchEditFormRendered = 'batcheditform-rendered';\n/** @hidden */\nexport var partialRefresh = 'partial-refresh';\n/** @hidden */\nexport var beforeCustomFilterOpen = 'beforeCustomFilterOpen';\n/** @hidden */\nexport var selectVirtualRow = 'select-virtual-Row';\n/** @hidden */\nexport var columnsPrepared = 'columns-prepared';\n/** @hidden */\nexport var cBoxFltrBegin = 'cbox-filter-begin';\n/** @hidden */\nexport var cBoxFltrComplete = 'cbox-filter-complete';\n/** @hidden */\nexport var fltrPrevent = 'filter-Prevent';\n/** @hidden */\nexport var beforeFltrcMenuOpen = 'before-filter-cmenu-open';\n/** @hidden */\nexport var valCustomPlacement = 'validation-custom-placement';\n/** @hidden */\nexport var filterCboxValue = 'filter-cbox-value';\n/** @hidden */\nexport var componentRendered = 'component-rendered';\n/** @hidden */\nexport var restoreFocus = 'restore-Focus';\n/** @hidden */\nexport var detailStateChange = 'detail-state-change';\n/** @hidden */\nexport var detailIndentCellInfo = 'detail-indentcell-info';\n/** @hidden */\nexport var virtaulKeyHandler = 'virtaul-key-handler';\n/** @hidden */\nexport var virtaulCellFocus = 'virtaul-cell-focus';\n/** @hidden */\nexport var virtualScrollEditActionBegin = 'virtual-scroll-edit-action-begin';\n/** @hidden */\nexport var virtualScrollEditSuccess = 'virtual-scroll-edit-success';\n/** @hidden */\nexport var virtualScrollEditCancel = 'virtual-scroll-edit-cancel';\n/** @hidden */\nexport var virtualScrollEdit = 'virtual-scroll-edit';\n/** @hidden */\nexport var refreshVirtualCache = 'refresh-virtual-cache';\n/** @hidden */\nexport var editReset = 'edit-reset';\n/** @hidden */\nexport var virtualScrollAddActionBegin = 'virtual-scroll-add-action-begin';\n/** @hidden */\nexport var getVirtualData = 'get-virtual-data';\n/** @hidden */\nexport var refreshInfiniteModeBlocks = 'refresh-infinite-mode-blocks';\n/** @hidden */\nexport var resetInfiniteBlocks = 'reset-infinite-blocks';\n/** @hidden */\nexport var infiniteScrollHandler = 'infinite-scroll-handler';\n/** @hidden */\nexport var infinitePageQuery = 'infinite-page-query';\n/** @hidden */\nexport var infiniteShowHide = 'infinite-show-hide';\n/** @hidden */\nexport var appendInfiniteContent = 'append-infinite-content';\n/** @hidden */\nexport var removeInfiniteRows = 'remove-infinite-rows';\n/** @hidden */\nexport var setInfiniteCache = 'set-infinite-cache';\n/** @hidden */\nexport var infiniteEditHandler = 'infinite-edit-handler';\n/** @hidden */\nexport var initialCollapse = 'initial-collapse';\n/** @hidden */\nexport var getAggregateQuery = 'get-aggregate-query';\n/** @hidden */\nexport var closeFilterDialog = 'close-filter-dialog';\n/** @hidden */\nexport var columnChooserCancelBtnClick = 'columnChooserCancelBtnClick';\n/** @hidden */\nexport var getFilterBarOperator = 'get-filterbar-operator';\n/** @hidden */\nexport var resetColumns = 'reset-columns';\n/** @hidden */\nexport var pdfAggregateQueryCellInfo = 'pdfAggregateQueryCellInfo';\n/** @hidden */\nexport var excelAggregateQueryCellInfo = 'excelAggregateQueryCellInfo';\n/** @hidden */\nexport var setGroupCache = 'group-cache';\n/** @hidden */\nexport var lazyLoadScrollHandler = 'lazy-load-scroll-handler';\n/** @hidden */\nexport var groupCollapse = 'group-collapse';\n/** @hidden */\nexport var beforeCheckboxRenderer = 'beforeCheckboxRenderer';\n/** @hidden */\nexport var refreshHandlers = 'refreshResizeHandlers';\n/** @hidden */\nexport var refreshFrozenColumns = 'refresh-frozen-columns';\n/** @hidden */\nexport var setReorderDestinationElement = 'set-reorder-destination-element';\n/** @hidden */\nexport var refreshVirtualFrozenHeight = 'refresh-virtual-frozen-height';\n/** @hidden */\nexport var setFreezeSelection = 'set-freeze-selection';\n/** @hidden */\nexport var setInfiniteFrozenHeight = 'set-infinite-frozen-height';\n/** @hidden */\nexport var setInfiniteColFrozenHeight = 'set-infinite-col-frozen-height';\n/** @hidden */\nexport var beforeRefreshOnDataChange = 'before-refresh-on-data-change';\n/** @hidden */\nexport var immutableBatchCancel = 'immutable-batch-cancel';\n/** @hidden */\nexport var refreshVirtualFrozenRows = 'refresh-virtual-frozenrows';\n/** @hidden */\nexport var checkScrollReset = 'check-scroll-reset';\n/** @hidden */\nexport var refreshFrozenHeight = 'refresh-frozen-height';\n/** @hidden */\nexport var setHeightToFrozenElement = 'set-height-to-frozen-element';\n/** @hidden */\nexport var preventFrozenScrollRefresh = 'prevent-frozen-scroll-refresh';\n/** @hidden */\nexport var nextCellIndex = 'next-cell-index';\n/** @hidden */\nexport var refreshInfiniteCurrentViewData = 'refresh-infinite-current-view-data';\n/** @hidden */\nexport var infiniteCrudCancel = 'infinite-crud-cancel';\n/** @hidden */\nexport var filterDialogClose = 'filter-dialog-close';\n/** @hidden */\nexport var refreshCustomFilterOkBtn = 'refresh-cutsom-filter-ok-button';\n/** @hidden */\nexport var refreshCustomFilterClearBtn = 'refresh-cutsom-filter-clear-button';\n/** @hidden */\nexport var renderResponsiveCmenu = 'render-responsive-cmenu';\n/** @hidden */\nexport var filterCmenuSelect = 'filter-cmenu-select';\n/** @hidden */\nexport var customFilterClose = 'custom-filter-close';\n/** @hidden */\nexport var setFullScreenDialog = 'set-fullscreen-dialog';\n/** @hidden */\nexport var refreshExpandandCollapse = 'refresh-Expand-and-Collapse';\n/** @hidden */\nexport var rowModeChange = 'row-mode-change';\n/** @hidden */\nexport var enterKeyHandler = 'enter-key-handler';\n/** @hidden */\nexport var refreshVirtualMaxPage = 'refresh-virtual-max-page';\n/** @hidden */\nexport var setVirtualPageQuery = 'set-virtual-page-query';\n/** @hidden */\nexport var selectRowOnContextOpen = 'select-row-on-context-open';\n/** @hidden */\nexport var pagerRefresh = 'pager-refresh';\n/** @hidden */\nexport var closeInline = 'closeinline';\n/** @hidden */\nexport var closeBatch = 'closebatch';\n/** @hidden */\nexport var closeEdit = 'close-edit';\n/** @hidden */\nexport var resetVirtualFocus = 'reset-virtual-focus';\n/** @hidden */\nexport var afterContentRender = 'after-content-renderer';\n/** @hidden */\nexport var refreshVirtualEditFormCells = 'refresh-virtual-editform-cells';\n/** @hidden */\nexport var scrollToEdit = 'scroll-to-edit';\n/** @hidden */\nexport var beforeCheckboxRendererQuery = 'before-checkbox-renderer-query';\n/** @hidden */\nexport var createVirtualValidationForm = 'create-virtual-validation-form';\n/** @hidden */\nexport var validateVirtualForm = 'validate-virtual-form';\n/** @hidden */\nexport var destroyChildGrid = 'destroy-child-grid';\n/** @hidden */\nexport var stickyScrollComplete = 'sticky-scroll-complete';\n/** @hidden */\nexport var captionActionComplete = 'infinite-group-collapse';\n/** @hidden */\nexport var refreshInfinitePersistSelection = 'refresh-infinite-persist-selection';\n/** @hidden */\nexport var refreshInfiniteEditrowindex = 'refresh-infinite-editrowindex';\n/** @hidden */\nexport var afterFilterColumnMenuClose = 'after-filter-column-menu-close';\n/** @hidden */\nexport var beforeCheckboxfilterRenderer = 'beforeCheckboxfilterRenderer';\n/** @hidden */\nexport var commandColumnDestroy = 'commandColumnDestroy';\n/** @hidden */\nexport var batchCnfrmDlgCancel = 'cancelcnfrmDlg';\n/** @hidden */\nexport var refreshVirtualLazyLoadCache = 'refresh-Virtual-LazyLoad-Cache';\n/** @hidden */\nexport var refreshFrozenPosition = 'refresh-Frozen-Position';\n/** @hidden */\nexport var refreshResizePosition = 'refresh-Resize-Position';\n/** @hidden */\nexport var refreshSplitFrozenColumn = 'refresh-Split-Frozen-Column';\n/** @hidden */\nexport var renderResponsiveChangeAction = 'render-Responsive-Change-Action';\n/** @hidden */\nexport var renderResponsiveColumnChooserDiv = 'render-Responsive-Column-Chooser-Div';\n/** @hidden */\nexport var showAddNewRowFocus = 'show-Add-New-Row-Focus';\n/** @hidden */\nexport var infiniteScrollComplete = 'infinitescroll-complete';\n","/* tslint:disable-next-line:max-line-length */\nimport { EventHandler, isNullOrUndefined, extend, classList, addClass, removeClass, Browser, getValue, setValue, createElement } from '@syncfusion/ej2-base';\nimport { parentsUntil, getUid, appendChildren, getDatePredicate, getObject, extendObjWithFn, eventPromise, setChecked, clearReactVueTemplates, padZero, Global } from '../base/util';\nimport { remove, debounce, Internationalization, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getForeignData } from '../base/util';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { getFilterMenuPostion, toogleCheckbox, createCboxWithWrap, removeAddCboxClasses, getColumnByForeignKeyValue } from '../base/util';\n/**\n * @hidden\n * `CheckBoxFilterBase` module is used to handle filtering action.\n */\nvar CheckBoxFilterBase = /** @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n *\n * @param {IXLFilter} parent - specifies the IXLFilter\n * @hidden\n */\n function CheckBoxFilterBase(parent) {\n this.isExecuteLocal = false;\n this.existingPredicate = {};\n this.foreignKeyQuery = new Query();\n /** @hidden */\n this.filterState = true;\n this.values = {};\n this.renderEmpty = false;\n this.isCheckboxFilterTemplate = false;\n this.infiniteRenderMod = false;\n // for infinite scroll ui\n this.infiniteInitialLoad = false;\n this.infiniteSearchValChange = false;\n this.infinitePermenantLocalData = [];\n this.infiniteQueryExecutionPending = false;\n this.infiniteSkipCnt = 0;\n this.infiniteScrollAppendDiff = 0;\n this.prevInfiniteScrollDirection = '';\n this.infiniteLoadedElem = [];\n this.infiniteDataCount = 0;\n this.infiniteLocalSelectAll = true;\n this.localInfiniteSelectAllClicked = false;\n this.localInfiniteSelectionInteracted = false;\n this.infiniteManualSelectMaintainPred = [];\n this.parent = parent;\n this.id = this.parent.element.id;\n this.valueFormatter = new ValueFormatter(this.parent.locale);\n this.cBoxTrue = createCheckBox(this.parent.createElement, false, { checked: true, label: ' ' });\n this.cBoxFalse = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.cBoxTrue.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { type: 'checkbox' }\n }), this.cBoxTrue.firstChild);\n this.cBoxFalse.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { 'type': 'checkbox' }\n }), this.cBoxFalse.firstChild);\n this.cBoxFalse.querySelector('.e-frame').classList.add('e-uncheck');\n if (this.parent.enableRtl) {\n addClass([this.cBoxTrue, this.cBoxFalse], ['e-rtl']);\n }\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([this.cBoxTrue, this.cBoxFalse], this.parent.cssClass.split(' '));\n }\n else {\n addClass([this.cBoxTrue, this.cBoxFalse], [this.parent.cssClass]);\n }\n }\n }\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.destroy = function () {\n this.closeDialog();\n };\n CheckBoxFilterBase.prototype.wireEvents = function () {\n EventHandler.add(this.dlg, 'click', this.clickHandler, this);\n EventHandler.add(this.dlg, 'keyup', this.keyupHandler, this);\n this.searchHandler = debounce(this.searchBoxKeyUp, 200);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.add(elem, 'keyup', this.searchHandler, this);\n EventHandler.add(elem, 'input', this.searchHandler, this);\n }\n };\n CheckBoxFilterBase.prototype.unWireEvents = function () {\n EventHandler.remove(this.dlg, 'click', this.clickHandler);\n EventHandler.remove(this.dlg, 'keyup', this.keyupHandler);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.remove(elem, 'keyup', this.searchHandler);\n EventHandler.remove(elem, 'input', this.searchHandler);\n }\n };\n CheckBoxFilterBase.prototype.foreignKeyFilter = function (args, fColl, mPredicate) {\n var _this = this;\n var fPredicate = {};\n var filterCollection = [];\n var query = this.foreignKeyQuery.clone();\n this.options.column.dataSource.\n executeQuery(query.where(mPredicate)).then(function (e) {\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: _this.options.column });\n args.ejpredicate = fPredicate.predicate.predicates;\n var fpred = fPredicate.predicate.predicates;\n for (var i = 0; i < fpred.length; i++) {\n filterCollection.push({\n field: fpred[parseInt(i.toString(), 10)].field,\n predicate: 'or',\n matchCase: fpred[parseInt(i.toString(), 10)].ignoreCase,\n ignoreAccent: fpred[parseInt(i.toString(), 10)].ignoreAccent,\n operator: fpred[parseInt(i.toString(), 10)].operator,\n value: fpred[parseInt(i.toString(), 10)].value,\n type: _this.options.type\n });\n }\n args.filterCollection = filterCollection.length ? filterCollection :\n fColl.filter(function (col) { return col.field = _this.options.field; });\n _this.options.handler(args);\n });\n };\n CheckBoxFilterBase.prototype.foreignFilter = function (args, value) {\n var operator = this.options.isRemote ?\n (this.options.column.type === 'string' ? 'contains' : 'equal') : (this.options.column.type ? 'contains' : 'equal');\n var initalPredicate = new Predicate(this.options.column.foreignKeyValue, operator, value, true, this.options.ignoreAccent);\n this.foreignKeyFilter(args, [args.filterCollection], initalPredicate);\n };\n CheckBoxFilterBase.prototype.searchBoxClick = function (e) {\n var target = e.target;\n if (target.classList.contains('e-searchclear')) {\n this.sInput.value = target.classList.contains('e-chkcancel-icon') ? '' : this.sInput.value;\n if (this.isCheckboxFilterTemplate) {\n this.parent.notify('refreshCheckbox', { event: e });\n }\n else {\n this.refreshCheckboxes();\n }\n this.updateSearchIcon();\n this.sInput.focus();\n }\n };\n CheckBoxFilterBase.prototype.searchBoxKeyUp = function (e) {\n if (isNullOrUndefined(e) || (e.key !== 'ArrowUp' && e.key !== 'ArrowDown' && e.key !== 'Tab' && !(e.key === 'Tab' && e.shiftKey))) {\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer') {\n this.parent.showMaskRow(undefined, this.dialogObj.element);\n }\n if (this.isCheckboxFilterTemplate) {\n this.parent.notify('refreshCheckbox', { event: e });\n }\n else {\n this.refreshCheckboxes();\n }\n this.updateSearchIcon();\n }\n };\n CheckBoxFilterBase.prototype.updateSearchIcon = function () {\n if (this.sInput.value.length) {\n classList(this.sIcon, ['e-chkcancel-icon'], ['e-search-icon']);\n if (!isNullOrUndefined(document.body.querySelector('.e-chkcancel-icon'))) {\n document.body.querySelector('.e-chkcancel-icon').setAttribute('title', this.localeObj.getConstant('Clear'));\n }\n }\n else {\n classList(this.sIcon, ['e-search-icon'], ['e-chkcancel-icon']);\n if (!isNullOrUndefined(document.body.querySelector('.e-searchclear.e-search-icon'))) {\n document.body.querySelector('.e-searchclear.e-search-icon').setAttribute('title', this.localeObj.getConstant('Search'));\n }\n }\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key - Defines localization key\n * @returns {string} - returns localization label\n */\n CheckBoxFilterBase.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n CheckBoxFilterBase.prototype.updateDataSource = function () {\n var dataSource = this.options.dataSource;\n var str = 'object';\n if (!(dataSource instanceof DataManager)) {\n for (var i = 0; i < dataSource.length; i++) {\n // eslint-disable-next-line valid-typeof\n if (typeof dataSource !== str) {\n var obj = {};\n obj[this.options.field] = dataSource[parseInt(i.toString(), 10)];\n dataSource[parseInt(i.toString(), 10)] = obj;\n }\n }\n }\n };\n CheckBoxFilterBase.prototype.updateModel = function (options) {\n this.options = options;\n this.existingPredicate = options.actualPredicate || {};\n this.options.dataSource = options.dataSource;\n this.options.dataManager = options.dataManager ? options.dataManager : options.dataSource;\n this.updateDataSource();\n this.options.type = options.type;\n this.options.format = options.format || '';\n this.options.ignoreAccent = options.ignoreAccent || false;\n this.options.filteredColumns = options.filteredColumns || this.parent.filterSettings.columns;\n this.options.query = options.query || new Query();\n this.options.allowCaseSensitive = options.allowCaseSensitive || false;\n this.options.uid = options.column.uid;\n this.options.disableHtmlEncode = options.column.disableHtmlEncode || false;\n this.values = {};\n this.localeObj = options.localeObj;\n this.isFiltered = options.filteredColumns.length;\n this.infiniteRenderMod = this.parent.filterSettings && this.parent.filterSettings.enableInfiniteScrolling ? true : false;\n this.infiniteUnloadParentExistPred = this.infiniteRenderMod && this.existingPredicate[this.options.column.field] ? this.existingPredicate[this.options.column.field].slice() : [];\n };\n CheckBoxFilterBase.prototype.getAndSetChkElem = function (options) {\n this.dlg = this.parent.createElement('div', {\n id: this.id + this.options.type + '_excelDlg',\n attrs: { uid: this.options.column.uid },\n className: 'e-checkboxfilter e-filter-popup'\n });\n this.sBox = this.parent.createElement('div', { className: 'e-searchcontainer' });\n if (!options.hideSearchbox) {\n this.sInput = this.parent.createElement('input', {\n id: this.id + '_SearchBox',\n className: 'e-searchinput'\n });\n this.sIcon = this.parent.createElement('span', {\n className: 'e-searchclear e-search-icon e-icons e-input-group-icon', attrs: {\n type: 'text', title: this.getLocalizedLabel('Search')\n }\n });\n this.searchBox = this.parent.createElement('span', { className: 'e-searchbox e-fields' });\n this.searchBox.appendChild(this.sInput);\n this.sBox.appendChild(this.searchBox);\n var inputargs = {\n element: this.sInput, floatLabelType: 'Never', properties: {\n placeholder: this.getLocalizedLabel('Search'),\n cssClass: this.parent.cssClass\n }\n };\n Input.createInput(inputargs, this.parent.createElement);\n this.searchBox.querySelector('.e-input-group').appendChild(this.sIcon);\n }\n this.spinner = this.parent.createElement('div', { className: 'e-spinner' }); //for spinner\n this.cBox = this.parent.createElement('div', {\n id: this.id + this.options.type + '_CheckBoxList',\n className: 'e-checkboxlist e-fields'\n });\n this.spinner.appendChild(this.cBox);\n this.sBox.appendChild(this.spinner);\n return this.sBox;\n };\n CheckBoxFilterBase.prototype.showDialog = function (options) {\n var args = {\n requestType: events.filterBeforeOpen,\n columnName: this.options.field, columnType: this.options.type, cancel: false\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrBegin, args);\n if (args.cancel) {\n options.cancel = args.cancel;\n return;\n }\n this.dialogObj = new Dialog({\n visible: false, content: this.sBox,\n close: this.closeDialog.bind(this),\n enableRtl: this.parent.enableRtl,\n width: (!isNullOrUndefined(parentsUntil(options.target, 'e-bigger')))\n || this.parent.element.classList.contains('e-device') ? 260 : 255,\n target: this.parent.element, animationSettings: { effect: 'None' },\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: {\n content: this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton'),\n cssClass: this.parent.cssClass ? 'e-primary' + ' ' + this.parent.cssClass : 'e-primary',\n isPrimary: true\n }\n },\n {\n click: this.btnClick.bind(this),\n buttonModel: { cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n content: this.getLocalizedLabel(this.isExcel ? 'CancelButton' : 'ClearButton') }\n }],\n created: this.dialogCreated.bind(this),\n open: this.dialogOpen.bind(this),\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n this.dialogObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveFilter(options);\n var dialogLabel = this.parent.filterSettings && this.parent.filterSettings.type === 'CheckBox' ?\n this.getLocalizedLabel('CheckBoxFilterDialogARIA') : this.getLocalizedLabel('ExcelFilterDialogARIA');\n this.dlg.setAttribute('aria-label', dialogLabel);\n if (options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-responsive-dialog > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlg);\n }\n else {\n this.parent.element.appendChild(this.dlg);\n }\n this.dialogObj.appendTo(this.dlg);\n this.dialogObj.element.style.maxHeight = options.isResponsiveFilter ? 'none' : this.options.height + 'px';\n this.dialogObj.show();\n var content = this.dialogObj.element.querySelector('.e-dlg-content');\n content.appendChild(this.sBox);\n this.wireEvents();\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && !this.infiniteRenderMod) {\n this.parent.showMaskRow(undefined, this.dialogObj.element);\n }\n else if (this.infiniteRenderMod && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n this.showMask();\n }\n else {\n if (this.infiniteRenderMod) {\n this.cBox.style.marginTop = this.getListHeight(this.cBox) + 'px';\n }\n createSpinner({ target: this.spinner, cssClass: this.parent.cssClass ? this.parent.cssClass : null }, this.parent.createElement);\n showSpinner(this.spinner);\n }\n this.getAllData();\n };\n CheckBoxFilterBase.prototype.renderResponsiveFilter = function (options) {\n if (options.isResponsiveFilter) {\n this.dialogObj.buttons = [{}];\n this.dialogObj.position = { X: '', Y: '' };\n this.dialogObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dialogObj.width = '100%';\n }\n };\n CheckBoxFilterBase.prototype.dialogCreated = function (e) {\n if (this.options.isResponsiveFilter) {\n this.dialogObj.element.style.left = '0px';\n }\n else {\n if (!Browser.isDevice) {\n getFilterMenuPostion(this.options.target, this.dialogObj);\n }\n else {\n this.dialogObj.position = { X: 'center', Y: 'center' };\n }\n }\n if (this.options.column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, e);\n }\n };\n CheckBoxFilterBase.prototype.openDialog = function (options) {\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n };\n CheckBoxFilterBase.prototype.closeDialog = function () {\n if (this.infiniteRenderMod && this.infinitePermenantLocalData.length && !this.options.isRemote) {\n this.options.dataSource.dataSource.json = this.infinitePermenantLocalData;\n }\n if (this.dialogObj && !this.dialogObj.isDestroyed) {\n this.isBlanks = false;\n var filterTemplateCol = this.options.columns.filter(function (col) { return col.getFilterItemTemplate(); });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var registeredTemplate = this.parent.registeredTemplate;\n if (filterTemplateCol.length && !isNullOrUndefined(registeredTemplate) && registeredTemplate.filterItemTemplate) {\n this.parent.destroyTemplate(['filterItemTemplate']);\n }\n if ((this.parent.isReact || this.parent.isVue) && this.parent.destroyTemplate !== undefined) {\n clearReactVueTemplates(this.parent, ['filterItemTemplate']);\n }\n this.parent.notify(events.filterMenuClose, { field: this.options.field });\n this.unWireEvents();\n this.dialogObj.destroy();\n if (this.dlg && this.dlg.parentElement) {\n remove(this.dlg);\n }\n this.dlg = null;\n this.parent.notify(events.filterDialogClose, {});\n }\n };\n /**\n * @param {Column} col - Defines column details\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.clearFilter = function (col) {\n // eslint-disable-next-line max-len\n var args = { instance: this, handler: this.clearFilter, cancel: false };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n this.options.handler({ action: 'clear-filter', field: col ? col.field : this.options.field });\n };\n CheckBoxFilterBase.prototype.btnClick = function (e) {\n if (this.filterState) {\n if ((e.target.tagName.toLowerCase() === 'input' && e.target.classList.contains('e-searchinput')) ||\n e.keyCode === 13) {\n if (!this.isCheckboxFilterTemplate) {\n this.fltrBtnHandler();\n }\n }\n else {\n var text = e.target.firstChild.textContent.toLowerCase();\n if (this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton').toLowerCase() === text) {\n if (!this.isCheckboxFilterTemplate) {\n this.fltrBtnHandler();\n }\n }\n else if (this.getLocalizedLabel('ClearButton').toLowerCase() === text) {\n this.clearFilter();\n }\n }\n this.closeDialog();\n }\n else if (e.target && e.target.firstChild &&\n e.target.firstChild.textContent.toLowerCase() === this.getLocalizedLabel('CancelButton').toLowerCase()) {\n this.closeDialog();\n }\n else if (!(e.target.tagName.toLowerCase() === 'input')) {\n this.clearFilter();\n this.closeDialog();\n }\n if (this.options.column.showColumnMenu) {\n this.parent.notify(events.afterFilterColumnMenuClose, {});\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.fltrBtnHandler = function () {\n var _this = this;\n if (this.infiniteRenderMod) {\n this.cBox.innerHTML = '';\n appendChildren(this.cBox, this.infiniteLoadedElem.slice());\n }\n var checked = [].slice.call(this.cBox.querySelectorAll('.e-check:not(.e-selectall):not(.e-add-current)'));\n var check = checked;\n var optr = 'equal';\n var ddlValue = this.dialogObj.element.querySelector('.e-dropdownlist');\n if (ddlValue) {\n this.options.operator = optr = ddlValue.ej2_instances[0].value;\n }\n this.isMenuNotEqual = this.options.operator === 'notequal';\n var searchInput;\n if (!this.options.hideSearchbox) {\n searchInput = this.searchBox.querySelector('.e-searchinput');\n }\n var caseSen = this.options.allowCaseSensitive;\n var defaults = {\n field: this.options.field, predicate: this.isMenuNotEqual ? 'and' : 'or', uid: this.options.uid,\n operator: optr, type: this.options.type, matchCase: caseSen, ignoreAccent: this.options.ignoreAccent\n };\n var isNotEqual = this.itemsCnt !== checked.length && this.itemsCnt - checked.length < checked.length;\n if (isNotEqual && searchInput && searchInput.value === '') {\n optr = this.isMenuNotEqual ? 'equal' : 'notequal';\n checked = [].slice.call(this.cBox.querySelectorAll('.e-uncheck:not(.e-selectall)'));\n defaults.predicate = this.isMenuNotEqual ? 'or' : 'and';\n defaults.operator = optr;\n }\n var value;\n var val;\n var length;\n var fObj;\n var coll = [];\n if ((checked.length !== this.itemsCnt || (searchInput && searchInput.value && searchInput.value !== ''))\n || this.infiniteRenderMod) {\n if (!this.infiniteRenderMod) {\n for (var i = 0; i < checked.length; i++) {\n value = this.values[parentsUntil(checked[parseInt(i.toString(), 10)], 'e-ftrchk').getAttribute('uid')];\n fObj = extend({}, { value: value }, defaults);\n if (value && !value.toString().length) {\n fObj.operator = isNotEqual ? 'notequal' : 'equal';\n }\n if (value === '' || isNullOrUndefined(value)) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n }\n else {\n coll.push(fObj);\n }\n this.notifyFilterPrevEvent(fObj);\n }\n }\n else if (this.infiniteRenderMod) {\n this.infiniteFltrBtnHandler(coll);\n }\n if ((this.options.type === 'date' || this.options.type === 'datetime') && check.length) {\n length = check.length - 1;\n val = this.values[parentsUntil(check[parseInt(length.toString(), 10)], 'e-ftrchk').getAttribute('uid')];\n if (isNullOrUndefined(val) && isNotEqual) {\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: 'equal',\n predicate: 'and', value: null\n });\n }\n }\n var addCurrSelection = this.infiniteRenderMod ? this.sBox.querySelector('.e-add-current') :\n this.cBox.querySelector('.e-add-current');\n if (addCurrSelection && addCurrSelection.classList.contains('e-check')) {\n var existingPredicate_1 = this.existingPredicate[this.options.field];\n if (existingPredicate_1) {\n var _loop_1 = function (j) {\n if (!coll.some(function (data) {\n return data\n .value === existingPredicate_1[parseInt(j.toString(), 10)].value;\n })) {\n coll.push(existingPredicate_1[parseInt(j.toString(), 10)]);\n }\n };\n for (var j = 0; j < existingPredicate_1.length; j++) {\n _loop_1(j);\n }\n }\n else {\n return;\n }\n }\n if (!this.infiniteRenderMod) {\n this.initiateFilter(coll);\n }\n else if (coll.length) {\n this.initiateFilter(coll);\n }\n else if (this.sBox.querySelector('.e-selectall').classList.contains('e-check') && !coll.length) {\n var isClearFilter = this.options.filteredColumns.some(function (value) {\n return _this.options.field === value.field;\n });\n if (isClearFilter) {\n this.clearFilter();\n }\n }\n }\n else {\n var isClearFilter = this.options.filteredColumns.some(function (value) {\n return _this.options.field === value.field;\n });\n if (isClearFilter) {\n this.clearFilter();\n }\n }\n };\n CheckBoxFilterBase.prototype.infiniteFltrBtnHandler = function (coll) {\n var value;\n if (this.infiniteManualSelectMaintainPred.length) {\n for (var i = 0; i < this.infiniteManualSelectMaintainPred.length; i++) {\n var pred = this.infiniteManualSelectMaintainPred[i];\n value = pred.value + '';\n if (value === '' || isNullOrUndefined(value)) {\n var dummyDefaults = { predicate: pred.predicate, field: pred.field, type: pred.type, uid: pred.uid, operator: pred.operator,\n matchCase: pred.matchCase, ignoreAccent: pred.ignoreAccent };\n coll.push.apply(coll, CheckBoxFilterBase.generateNullValuePredicates(dummyDefaults));\n }\n else {\n coll.push(this.infiniteManualSelectMaintainPred[i]);\n }\n this.notifyFilterPrevEvent(this.infiniteManualSelectMaintainPred[i]);\n }\n }\n if (!this.localInfiniteSelectAllClicked && this.sInput.value === '' && !(!this.options.parentCurrentViewDataCount && coll.length)) {\n for (var i = 0; i < this.infiniteUnloadParentExistPred.length; i++) {\n coll.unshift(this.infiniteUnloadParentExistPred[i]);\n this.notifyFilterPrevEvent(this.existingPredicate[this.options.field][i]);\n }\n }\n if (this.sInput.value !== '' && (!this.localInfiniteSelectAllClicked || this.infiniteLocalSelectAll)) {\n this.infiniteSearchPred['predicate'] = 'or';\n coll.unshift(this.infiniteSearchPred);\n this.notifyFilterPrevEvent(this.infiniteSearchPred);\n }\n };\n CheckBoxFilterBase.prototype.notifyFilterPrevEvent = function (predicate) {\n var args = {\n instance: this, handler: this.fltrBtnHandler, arg1: predicate.field, arg2: predicate.predicate, arg3: predicate.operator,\n arg4: predicate.matchCase, arg5: predicate.ignoreAccent, arg6: predicate.value, cancel: false\n };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n };\n // eslint-disable-next-line\n /** @hidden */\n CheckBoxFilterBase.generateNullValuePredicates = function (defaults) {\n var coll = [];\n if (defaults.type === 'string') {\n coll.push({\n field: defaults.field, ignoreAccent: defaults.ignoreAccent, matchCase: defaults.matchCase,\n operator: defaults.operator, predicate: defaults.predicate, value: ''\n });\n }\n coll.push({\n field: defaults.field,\n matchCase: defaults.matchCase, operator: defaults.operator, predicate: defaults.predicate, value: null\n });\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: defaults.operator,\n predicate: defaults.predicate, value: undefined\n });\n return coll;\n };\n // eslint-disable-next-line\n /** @hidden */\n CheckBoxFilterBase.prototype.initiateFilter = function (fColl) {\n var firstVal = fColl[0];\n var predicate;\n if (!isNullOrUndefined(firstVal)) {\n predicate = firstVal.ejpredicate ? firstVal.ejpredicate :\n new Predicate(firstVal.field, firstVal.operator, firstVal.value, !firstVal.matchCase, firstVal.ignoreAccent);\n for (var j = 1; j < fColl.length; j++) {\n predicate = fColl[parseInt(j.toString(), 10)].ejpredicate !== undefined ?\n predicate[fColl[parseInt(j.toString(), 10)].predicate](fColl[parseInt(j.toString(), 10)].ejpredicate) :\n predicate[fColl[parseInt(j.toString(), 10)].predicate](fColl[parseInt(j.toString(), 10)].field, fColl[parseInt(j.toString(), 10)].operator, fColl[parseInt(j.toString(), 10)].value, !fColl[parseInt(j.toString(), 10)].matchCase, fColl[parseInt(j.toString(), 10)].ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: Predicate.or(predicate)\n };\n this.options.handler(args);\n }\n };\n CheckBoxFilterBase.prototype.isForeignColumn = function (col) {\n return col.isForeignColumn ? col.isForeignColumn() : false;\n };\n CheckBoxFilterBase.prototype.refreshCheckboxes = function () {\n var _this = this;\n var val = this.sInput.value;\n var column = this.options.column;\n var query = this.isForeignColumn(column) ? this.foreignKeyQuery.clone() : this.options.query.clone();\n var foreignQuery = this.options.query.clone();\n var pred = query.queries.filter(function (e) { return e && e.fn === 'onWhere'; })[0];\n query.queries = [];\n foreignQuery.queries = [];\n var parsed = (this.options.type !== 'string' && parseFloat(val)) ? parseFloat(val) : val;\n var operator = this.options.isRemote ?\n (this.options.type === 'string' ? 'contains' : 'equal') : (this.options.type ? 'contains' : 'equal');\n var matchCase = true;\n var ignoreAccent = this.options.ignoreAccent;\n var field = this.isForeignColumn(column) ? column.foreignKeyValue : column.field;\n parsed = (parsed === '' || parsed === undefined) ? undefined : parsed;\n var coll = [];\n var defaults = {\n field: field, predicate: 'or', uid: this.options.uid,\n operator: 'equal', type: this.options.type, matchCase: matchCase, ignoreAccent: ignoreAccent\n };\n var predicte;\n var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (this.options.type === 'boolean') {\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'false';\n }\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? true : 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? false : 'false';\n }\n operator = 'equal';\n }\n if ((this.options.type === 'date' || this.options.type === 'datetime' || this.options.type === 'dateonly') && this.options.format) {\n var intl = new Internationalization();\n var format = typeof (this.options.format) === 'string' ? this.options.format :\n this.options.format.format;\n if (format) {\n parsed = intl.parseDate(val, { format: format }) || new Date(val);\n }\n else {\n parsed = new Date(val);\n }\n if (this.options.type === 'dateonly') {\n parsed = parsed.getFullYear() + '-' + padZero(parsed.getMonth() + 1) + '-' + padZero(parsed.getDate());\n }\n }\n this.infiniteSearchValChange = true;\n this.infiniteLoadedElem = [];\n this.infiniteLocalSelectAll = true;\n this.localInfiniteSelectAllClicked = false;\n this.localInfiniteSelectionInteracted = false;\n this.infiniteSkipCnt = 0;\n this.infiniteDataCount = 0;\n this.infiniteManualSelectMaintainPred = [];\n if (this.sInput.value === '') {\n this.infiniteUnloadParentExistPred = this.infiniteRenderMod && this.existingPredicate[this.options.column.field] ? this.existingPredicate[this.options.column.field].slice() : [];\n this.options.parentTotalDataCount = this.options.parentTotalDataCount;\n }\n else {\n this.infiniteUnloadParentExistPred = [];\n }\n this.addDistinct(query);\n var args = {\n requestType: events.filterSearchBegin,\n filterModel: this, columnName: field, column: column,\n operator: operator, matchCase: matchCase, ignoreAccent: ignoreAccent, filterChoiceCount: null,\n query: query, value: parsed\n };\n if (this.infiniteRenderMod && this.parent.filterSettings.itemsCount) {\n args.filterChoiceCount = this.parent.filterSettings.itemsCount;\n }\n this.parent.trigger(events.actionBegin, args, function (filterargs) {\n // eslint-disable-next-line no-self-assign\n filterargs.operator = filterargs.operator;\n predicte = new Predicate(field, filterargs.operator, args.value, filterargs.matchCase, filterargs.ignoreAccent);\n if (_this.options.type === 'date' || _this.options.type === 'datetime' || _this.options.type === 'dateonly') {\n operator = 'equal';\n var filterObj = {\n field: field, operator: operator, value: parsed, matchCase: matchCase,\n ignoreAccent: ignoreAccent\n };\n if (!isNullOrUndefined(parsed)) {\n predicte = getDatePredicate(filterObj, _this.options.type);\n }\n }\n if (val && typeof val === 'string' && _this.isBlanks &&\n _this.getLocalizedLabel('Blanks').toLowerCase().indexOf(val.toLowerCase()) >= 0) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n var emptyValPredicte = CheckBoxFilterBase.generatePredicate(coll);\n emptyValPredicte.predicates.push(predicte);\n predicte = emptyValPredicte;\n query.where(emptyValPredicte);\n }\n else if (val.length) {\n predicte = !isNullOrUndefined(pred) ? predicte.and(pred.e) : predicte;\n query.where(predicte);\n }\n else if (!isNullOrUndefined(pred)) {\n predicte = pred.e;\n query.where(pred.e);\n }\n _this.infiniteSearchPred = predicte;\n filterargs.filterChoiceCount = !isNullOrUndefined(filterargs.filterChoiceCount) ? filterargs.filterChoiceCount : 1000;\n if (_this.infiniteRenderMod && _this.parent.filterSettings.itemsCount !== filterargs.filterChoiceCount) {\n _this.parent.filterSettings.itemsCount = args.filterChoiceCount;\n }\n var fPredicate = {};\n showSpinner(_this.spinner);\n _this.renderEmpty = false;\n if (_this.isForeignColumn(column) && val.length) {\n var colData = ('result' in column.dataSource) ? new DataManager(column.dataSource.result) :\n column.dataSource;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n colData.executeQuery(query).then(function (e) {\n var columnData = _this.options.column.columnData;\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: column });\n if (fPredicate.predicate.predicates.length) {\n foreignQuery.where(fPredicate.predicate);\n }\n else {\n _this.renderEmpty = true;\n }\n _this.options.column.columnData = columnData;\n if (_this.infiniteRenderMod) {\n _this.infiniteInitialLoad = isNullOrUndefined(_this.fullData) ? true : false;\n _this.makeInfiniteScrollRequest(foreignQuery);\n foreignQuery.requiresCount();\n }\n else {\n foreignQuery.take(filterargs.filterChoiceCount);\n }\n _this.search(filterargs, foreignQuery);\n });\n }\n else {\n if (_this.infiniteRenderMod && _this.parent.filterSettings.itemsCount) {\n _this.infiniteInitialLoad = isNullOrUndefined(_this.fullData) ? true : false;\n _this.makeInfiniteScrollRequest(query);\n query.requiresCount();\n }\n else {\n query.take(filterargs.filterChoiceCount);\n }\n _this.search(filterargs, query);\n }\n });\n };\n CheckBoxFilterBase.prototype.search = function (args, query) {\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.filterEvent(args, query);\n }\n else {\n this.processSearch(query);\n }\n };\n CheckBoxFilterBase.prototype.getPredicateFromCols = function (columns, isExecuteLocal) {\n var predicates = CheckBoxFilterBase.getPredicate(columns, isExecuteLocal);\n var predicateList = [];\n var fPredicate = {};\n var isGrid = this.parent.getForeignKeyColumns !== undefined;\n var foreignColumn = isGrid ? this.parent.getForeignKeyColumns() : [];\n for (var _i = 0, _a = Object.keys(predicates); _i < _a.length; _i++) {\n var prop = _a[_i];\n var col = void 0;\n if (isGrid && !this.parent.getColumnByField(prop)) {\n col = getColumnByForeignKeyValue(prop, foreignColumn);\n }\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(Predicate.or(fPredicate.predicate.predicates));\n }\n }\n else {\n predicateList.push(predicates[\"\" + prop]);\n }\n }\n return predicateList.length && Predicate.and(predicateList);\n };\n CheckBoxFilterBase.prototype.getQuery = function () {\n return this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n };\n CheckBoxFilterBase.prototype.getAllData = function () {\n var _this = this;\n this.customQuery = false;\n var query = this.getQuery();\n query.requiresCount(); //consider take query\n this.addDistinct(query);\n var args = {\n requestType: events.filterChoiceRequest, query: query, filterChoiceCount: null\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n if (this.infiniteRenderMod && this.parent.filterSettings.itemsCount) {\n args.filterChoiceCount = this.parent.filterSettings.itemsCount;\n }\n this.parent.trigger(events.actionBegin, args, function (args) {\n args.filterChoiceCount = !isNullOrUndefined(args.filterChoiceCount) ? args.filterChoiceCount : 1000;\n if (_this.infiniteRenderMod && _this.parent.filterSettings.itemsCount !== args.filterChoiceCount) {\n _this.parent.filterSettings.itemsCount = args.filterChoiceCount;\n }\n if (!_this.infiniteRenderMod) {\n query.take(args.filterChoiceCount);\n }\n if (!args.query.distincts.length || _this.infiniteRenderMod) {\n _this.customQuery = true;\n _this.queryGenerate(query);\n }\n if (_this.infiniteRenderMod) {\n _this.infiniteInitialLoad = isNullOrUndefined(_this.fullData) ? true : false;\n _this.makeInfiniteScrollRequest(query);\n }\n if (_this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.filterEvent(args, query);\n }\n else {\n _this.processDataOperation(query, true);\n }\n });\n };\n CheckBoxFilterBase.prototype.addDistinct = function (query) {\n var _this = this;\n var _a;\n var filteredColumn = DataUtil.distinct(this.options.filteredColumns, 'field');\n if (filteredColumn.indexOf(this.options.column.field) <= -1) {\n filteredColumn = filteredColumn.concat(this.options.column.field);\n }\n if (!this.infiniteRenderMod) {\n query.distinct(filteredColumn);\n }\n if (this.infiniteRenderMod && !this.options.isRemote && this.sInput.value === '') {\n this.options.dataSource = this.options.dataSource instanceof DataManager ?\n this.options.dataSource : new DataManager(this.options.dataSource);\n this.infinitePermenantLocalData = this.options.dataSource.dataSource.json.slice();\n this.options.dataSource.dataSource.json = DataUtil.distinct((_a = this.options.parentFilteredLocalRecords).concat.apply(_a, this.infinitePermenantLocalData), this.options.column.field, true);\n if (this.isForeignColumn(this.options.column)) {\n this.options.column.dataSource = this.options.column.dataSource instanceof DataManager ?\n this.options.column.dataSource : new DataManager(this.options.column.dataSource);\n this.options.dataSource.dataSource.json = this.options.dataSource.dataSource.json.map(function (item, i) {\n return Object.assign({}, item, _this.options.column.dataSource.dataSource.json[i]);\n });\n }\n }\n else if (this.infiniteRenderMod && this.options.isRemote) {\n query.select(this.options.column.field);\n query.sortBy(this.options.column.field, 'ascending');\n var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (moduleName && moduleName() && (moduleName() === 'ODataV4Adaptor' || moduleName() === 'WebApiAdaptor'\n || moduleName() === 'CustomDataAdaptor' || moduleName() === 'GraphQLAdaptor' || moduleName() === 'ODataAdaptor')) {\n query.distinct(filteredColumn);\n }\n }\n return query;\n };\n CheckBoxFilterBase.prototype.filterEvent = function (args, query) {\n var _this = this;\n var defObj = eventPromise(args, query);\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n _this.dataSuccess(e);\n });\n };\n CheckBoxFilterBase.prototype.infiniteScrollMouseKeyDownHandler = function () {\n EventHandler.remove(this.cBox, 'scroll', this.infiniteScrollHandler);\n };\n CheckBoxFilterBase.prototype.infiniteScrollMouseKeyUpHandler = function (e) {\n var _this = this;\n EventHandler.add(this.cBox, 'scroll', this.infiniteScrollHandler, this);\n var target = this.cBox;\n if (target.children.length > 1 && (target.scrollTop >= target.scrollHeight - target.offsetHeight || target.scrollTop <= 0)) {\n this.infiniteScrollHandler();\n }\n Global.timer = setTimeout(function () { _this.clickHandler(e); Global.timer = null; }, 0);\n };\n CheckBoxFilterBase.prototype.getListHeight = function (element) {\n var listDiv = createElement('div', { className: 'e-ftrchk', styles: 'visibility: hidden' });\n listDiv.innerHTML = '
A
';\n element.appendChild(listDiv);\n var rect = listDiv.getBoundingClientRect();\n element.removeChild(listDiv);\n var listHeight = Math.round(rect.height);\n return listHeight;\n };\n CheckBoxFilterBase.prototype.getShimmerTemplate = function () {\n return '';\n };\n CheckBoxFilterBase.prototype.showMask = function () {\n var maskRowCount = 5;\n var maskItemHeight;\n var maskList = this.parent.createElement('div', { id: this.id + this.options.type + '_CheckBoxMaskList',\n className: 'e-checkboxlist e-fields e-infinite-list e-masklist', styles: 'z-index: 10;' });\n var wrapperElem = this.cBox;\n this.removeMask();\n if (wrapperElem) {\n var computedStyle = getComputedStyle(wrapperElem);\n var height = wrapperElem.children.length ? parseInt(computedStyle.height) :\n Math.floor(parseInt(computedStyle.height.split('px')[0])) - 5;\n var backgroundColor = this.isExcel && !wrapperElem.children.length && !this.dlg.classList.contains('e-excelfilter') ?\n '' : getComputedStyle(this.dlg.querySelector('.e-dlg-content')).backgroundColor;\n maskList.style.cssText = 'width: ' + computedStyle.width + '; min-height: ' + computedStyle.minHeight + '; height: ' +\n height + 'px; margin: ' + computedStyle.margin + '; border-style: ' + computedStyle.borderStyle + '; border-width: '\n + computedStyle.borderWidth + '; border-color: ' + computedStyle.borderColor + '; position: absolute; background-color: ' +\n backgroundColor + ';';\n var liHeight = this.getListHeight(wrapperElem);\n maskRowCount = Math.floor(height / liHeight);\n maskRowCount = wrapperElem.children.length > maskRowCount ? wrapperElem.children.length : maskRowCount;\n maskItemHeight = liHeight + 'px';\n }\n var maskTemplate = '
'\n + '
'\n + this.getShimmerTemplate() + this.getShimmerTemplate() + '
';\n maskList.innerHTML = '';\n if (!wrapperElem.children.length) {\n this.spinner.insertAdjacentHTML('beforebegin', maskTemplate);\n var maskSpan = [].slice.call(this.spinner.parentElement\n .querySelectorAll('.e-mask:not(.e-mask-checkbox-filter-intent):not(.e-mask-checkbox-filter-span-intent)'));\n maskSpan[0].classList.add('e-mask-checkbox-filter-intent');\n maskSpan[1].classList.add('e-mask-checkbox-filter-span-intent');\n }\n this.spinner.insertBefore(maskList, this.cBox);\n for (var i = 0; maskRowCount && i < maskRowCount; i++) {\n maskList.innerHTML += maskTemplate;\n var maskSpan = [].slice.call(maskList\n .querySelectorAll('.e-mask:not(.e-mask-checkbox-filter-intent):not(.e-mask-checkbox-filter-span-intent)'));\n maskSpan[0].classList.add('e-mask-checkbox-filter-intent');\n maskSpan[1].classList.add('e-mask-checkbox-filter-span-intent');\n }\n if (this.cBox) {\n maskList.scrollTop = this.cBox.scrollTop;\n }\n };\n CheckBoxFilterBase.prototype.removeMask = function () {\n var maskLists = this.dialogObj.element.querySelectorAll('.e-mask-ftrchk');\n if (maskLists.length) {\n for (var i = 0; i < maskLists.length; i++) {\n remove(maskLists[i]);\n }\n }\n var maskParent = this.dialogObj.element.querySelector('.e-checkboxlist.e-masklist');\n if (maskParent) {\n remove(this.dialogObj.element.querySelector('.e-checkboxlist.e-masklist'));\n }\n };\n CheckBoxFilterBase.prototype.infiniteScrollHandler = function () {\n var target = this.cBox;\n if (target.scrollTop >= target.scrollHeight - target.offsetHeight && !this.infiniteQueryExecutionPending\n && this.infiniteLoadedElem.length <= (this.infiniteSkipCnt + this.parent.filterSettings.itemsCount)\n && this.cBox.children.length === this.parent.filterSettings.itemsCount * 3\n && (!this.infiniteDataCount || this.infiniteDataCount > (this.infiniteSkipCnt + this.parent.filterSettings.itemsCount))) {\n this.makeInfiniteScrollRequest();\n this.prevInfiniteScrollDirection = 'down';\n }\n else if (target.scrollTop >= target.scrollHeight - target.offsetHeight && !this.infiniteQueryExecutionPending\n && this.infiniteLoadedElem.length > (this.infiniteSkipCnt + this.parent.filterSettings.itemsCount)\n && this.cBox.children.length === this.parent.filterSettings.itemsCount * 3) {\n this.infiniteRemoveElements(([].slice.call(this.cBox.children)).splice(0, this.parent.filterSettings.itemsCount));\n this.infiniteSkipCnt += this.prevInfiniteScrollDirection === 'down' ? this.parent.filterSettings.itemsCount :\n (this.parent.filterSettings.itemsCount * 3);\n appendChildren(this.cBox, this.infiniteLoadedElem.slice(this.infiniteSkipCnt, this.parent.filterSettings.itemsCount + this.infiniteSkipCnt));\n this.prevInfiniteScrollDirection = 'down';\n }\n else if (target.scrollTop === 0 && !this.infiniteInitialLoad && !this.infiniteSearchValChange && this.infiniteSkipCnt\n && this.infiniteLoadedElem.length && this.infiniteLoadedElem.length > this.parent.filterSettings.itemsCount * 3\n && this.cBox.children.length === this.parent.filterSettings.itemsCount * 3) {\n this.infiniteRemoveElements(([].slice.call(this.cBox.children)).splice((this.parent.filterSettings.itemsCount * 2), this.parent.filterSettings.itemsCount));\n this.infiniteSkipCnt -= this.prevInfiniteScrollDirection === 'up' ? this.parent.filterSettings.itemsCount :\n (this.parent.filterSettings.itemsCount * 3);\n this.infiniteAppendElements([].slice.call(this.infiniteLoadedElem.slice(this.infiniteSkipCnt, this.infiniteSkipCnt + this.parent.filterSettings.itemsCount)));\n this.cBox.scrollTop = this.infiniteScrollAppendDiff;\n this.prevInfiniteScrollDirection = 'up';\n }\n else if (target.scrollTop === 0 && !this.infiniteInitialLoad && !this.infiniteSearchValChange && this.infiniteSkipCnt\n && this.infiniteLoadedElem.length && this.cBox.children.length < this.parent.filterSettings.itemsCount * 3) {\n this.infiniteRemoveElements(([].slice.call(this.cBox.children)).splice((this.parent.filterSettings.itemsCount * 2), this.infiniteDataCount % this.parent.filterSettings.itemsCount));\n this.infiniteSkipCnt = (Math.floor(this.infiniteDataCount / this.parent.filterSettings.itemsCount) - 3) *\n this.parent.filterSettings.itemsCount;\n this.infiniteAppendElements([].slice.call(this.infiniteLoadedElem.slice(this.infiniteSkipCnt, this.infiniteSkipCnt + this.parent.filterSettings.itemsCount)));\n this.cBox.scrollTop = this.infiniteScrollAppendDiff;\n this.prevInfiniteScrollDirection = 'up';\n }\n };\n CheckBoxFilterBase.prototype.infiniteRemoveElements = function (removeElem) {\n for (var i = 0; i < removeElem.length; i++) {\n remove(removeElem[i]);\n }\n };\n CheckBoxFilterBase.prototype.infiniteAppendElements = function (appendElem) {\n for (var i = 0; i < appendElem.length; i++) {\n this.cBox.insertBefore(appendElem[i], this.cBox.children[i]);\n }\n };\n CheckBoxFilterBase.prototype.makeInfiniteScrollRequest = function (query) {\n var _this = this;\n if (!this.infiniteInitialLoad && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n setTimeout(function () {\n if (_this.infiniteQueryExecutionPending) {\n _this.showMask();\n }\n }, 500);\n }\n else if (!this.infiniteInitialLoad) {\n createSpinner({ target: this.spinner, cssClass: this.parent.cssClass ? this.parent.cssClass : null }, this.parent.createElement);\n showSpinner(this.spinner);\n }\n var fName = 'fn';\n if (this.infiniteQuery && this.infiniteQuery.queries && this.infiniteQuery.queries.length) {\n for (var i = 0; i < this.infiniteQuery.queries.length; i++) {\n if (this.infiniteQuery.queries[i][\"\" + fName] === 'onTake'\n || this.infiniteQuery.queries[i][\"\" + fName] === 'onSkip') {\n this.infiniteQuery.queries.splice(i, 1);\n i--;\n }\n }\n }\n var existQuery = query ? true : false;\n query = query ? query : this.infiniteQuery;\n if (this.infiniteInitialLoad || this.infiniteSearchValChange) {\n this.infiniteSkipCnt = 0;\n }\n else {\n this.infiniteSkipCnt += this.parent.filterSettings.itemsCount;\n }\n query.skip(this.infiniteSkipCnt);\n if (this.infiniteInitialLoad || this.infiniteSearchValChange) {\n query.take(this.parent.filterSettings.itemsCount * 3);\n this.infiniteSkipCnt += this.parent.filterSettings.itemsCount * 2;\n }\n else {\n query.take(this.parent.filterSettings.itemsCount);\n }\n if (!existQuery) {\n this.processDataOperation(query);\n this.infiniteQueryExecutionPending = true;\n }\n };\n CheckBoxFilterBase.prototype.processDataOperation = function (query, isInitial) {\n var _this = this;\n this.options.dataSource = this.options.dataSource instanceof DataManager ?\n this.options.dataSource : new DataManager(this.options.dataSource);\n var allPromise = [];\n var runArray = [];\n if (this.isForeignColumn(this.options.column) && isInitial) {\n var colData = ('result' in this.options.column.dataSource) ?\n new DataManager(this.options.column.dataSource.result) :\n this.options.column.dataSource;\n this.foreignKeyQuery.params = query.params;\n allPromise.push(colData.executeQuery(this.foreignKeyQuery));\n runArray.push(function (data) { return _this.foreignKeyData = data; });\n }\n if (this.infiniteRenderMod) {\n this.infiniteQuery = query.clone();\n if (this.infiniteInitialLoad) {\n this.cBox.classList.add('e-checkbox-infinitescroll');\n EventHandler.add(this.cBox, 'scroll', this.infiniteScrollHandler, this);\n EventHandler.add(this.cBox, 'mouseup', this.infiniteScrollMouseKeyUpHandler, this);\n EventHandler.add(this.cBox, 'mousedown', this.infiniteScrollMouseKeyDownHandler, this);\n }\n else if (this.infiniteSearchValChange) {\n this.cBox.innerHTML = '';\n }\n }\n if (this.infiniteRenderMod && this.infiniteInitialLoad && !this.options.isRemote) {\n var field = this.isForeignColumn(this.options.column) ? this.options.foreignKeyValue :\n this.options.column.field;\n this.options.dataSource.executeQuery(new Query().sortBy(field, DataUtil.fnAscending)).then(function (e) {\n _this.options.dataSource.dataSource.json = e.result;\n _this.executeQueryOperations(query, allPromise, runArray);\n });\n }\n else {\n this.executeQueryOperations(query, allPromise, runArray);\n }\n };\n CheckBoxFilterBase.prototype.executeQueryOperations = function (query, allPromise, runArray) {\n var _this = this;\n allPromise.push(this.options.dataSource.executeQuery(query));\n runArray.push(this.dataSuccess.bind(this));\n var i = 0;\n Promise.all(allPromise).then(function (e) {\n _this.infiniteQueryExecutionPending = _this.infiniteRenderMod ? false : _this.infiniteQueryExecutionPending;\n for (var j = 0; j < e.length; j++) {\n _this.infiniteDataCount = _this.infiniteRenderMod && !_this.infiniteDataCount ? e[j].count : _this.infiniteDataCount;\n runArray[i++](e[parseInt(j.toString(), 10)].result);\n }\n }).catch(function () {\n if (_this.infiniteRenderMod && _this.parent.filterSettings && _this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n _this.parent.showMaskRow(undefined, _this.dialogObj.element);\n }\n });\n };\n CheckBoxFilterBase.prototype.dataSuccess = function (e) {\n if (!this.infiniteInitialLoad && this.infiniteDataCount && ((this.infiniteSkipCnt >= this.infiniteDataCount\n && !this.infiniteSearchValChange) || (e.length === 0))) {\n return;\n }\n this.fullData = e;\n var args1 = { dataSource: this.fullData, executeQuery: true, field: this.options.field };\n this.parent.notify(events.beforeCheckboxRenderer, args1);\n if (args1.executeQuery) {\n var query = new Query();\n if (!this.customQuery) {\n this.isExecuteLocal = true;\n this.queryGenerate(query);\n this.isExecuteLocal = false;\n }\n // query.select(this.options.field);\n var result = new DataManager(args1.dataSource).executeLocal(query);\n var col = this.options.column;\n this.filteredData = CheckBoxFilterBase.getDistinct(result, this.options.field, col, this.foreignKeyData, this).records || [];\n }\n var data = args1.executeQuery ? this.filteredData : args1.dataSource;\n this.processDataSource(null, true, data, args1);\n if (this.sInput && ((this.infiniteRenderMod && this.infiniteInitialLoad) || !this.infiniteRenderMod)) {\n this.sInput.focus();\n }\n if (this.infiniteInitialLoad || this.infiniteSearchValChange) {\n this.infiniteInitialLoad = false;\n this.infiniteSearchValChange = false;\n }\n var args = {\n requestType: events.filterAfterOpen,\n columnName: this.options.field, columnType: this.options.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrComplete, args);\n if (this.isCheckboxFilterTemplate) {\n hideSpinner(this.spinner);\n }\n };\n CheckBoxFilterBase.prototype.queryGenerate = function (query) {\n if (this.parent.searchSettings && this.parent.searchSettings.key.length) {\n 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 else if (this.infiniteRenderMod && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n this.removeMask();\n }\n };\n CheckBoxFilterBase.prototype.processSearch = function (query) {\n this.processDataOperation(query);\n };\n CheckBoxFilterBase.prototype.updateResult = function () {\n this.result = {};\n var predicate = this.infiniteRenderMod && this.existingPredicate[this.options.field] ?\n this.getPredicateFromCols(this.existingPredicate[this.options.field], this.isExecuteLocal) :\n this.getPredicateFromCols(this.options.filteredColumns, this.isExecuteLocal);\n var query = new Query();\n if (predicate) {\n query.where(predicate);\n }\n this.parent.notify(events.beforeCheckboxRendererQuery, { query: query });\n var result = new DataManager(this.fullData).executeLocal(query);\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n this.result[getObject(this.options.field, res)] = true;\n }\n };\n CheckBoxFilterBase.prototype.clickHandler = function (e) {\n var _a;\n if (!isNullOrUndefined(Global.timer)) {\n clearTimeout(Global.timer);\n }\n var target = e.target;\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && parentsUntil(target, 'e-mask-ftrchk')) {\n return;\n }\n var elem = parentsUntil(target, 'e-checkbox-wrapper');\n if (parentsUntil(target, 'e-searchbox')) {\n this.searchBoxClick(e);\n }\n if (elem && !this.isCheckboxFilterTemplate) {\n var selectAll = elem.querySelector('.e-selectall');\n if (selectAll) {\n this.updateAllCBoxes(!selectAll.classList.contains('e-check'));\n }\n else {\n toogleCheckbox(elem.parentElement);\n if (this.infiniteRenderMod && !elem.parentElement.querySelector('.e-add-current')) {\n this.localInfiniteSelectionInteracted = true;\n var caseSen = this.options.allowCaseSensitive;\n var span = elem.parentElement.querySelector('.e-frame');\n var input = span.previousSibling;\n var optr = input.checked ? 'equal' : 'notequal';\n var pred = input.checked ? 'or' : 'and';\n var defaults = { field: this.options.field, predicate: pred, uid: this.options.uid,\n operator: optr, type: this.options.type, matchCase: caseSen, ignoreAccent: this.options.ignoreAccent\n };\n var value = this.values[parentsUntil(input, 'e-ftrchk').getAttribute('uid')];\n this.updateInfiniteManualSelectPred(defaults, value);\n if (this.infiniteRenderMod && !this.options.isRemote && this.options.parentTotalDataCount\n && this.infiniteUnloadParentExistPred.length) {\n var predicate = this.getPredicateFromCols((_a = this.options.filteredColumns).concat.apply(_a, this.infiniteManualSelectMaintainPred), true);\n var query = new Query();\n if (predicate) {\n query.where(predicate);\n }\n var result = new DataManager(this.infinitePermenantLocalData).executeLocal(query);\n if (this.options.parentTotalDataCount !== result.length) {\n this.options.parentTotalDataCount = result.length;\n }\n if (!this.options.parentTotalDataCount && this.infiniteUnloadParentExistPred.length) {\n this.infiniteUnloadParentExistPred = [];\n }\n }\n if (this.infiniteUnloadParentExistPred.length && (this.options.parentTotalDataCount === this.infiniteDataCount\n || !this.options.parentTotalDataCount)) {\n this.infiniteUnloadParentExistPred = [];\n }\n }\n }\n this.updateIndeterminatenBtn();\n elem.querySelector('.e-chk-hidden').focus();\n }\n this.setFocus(parentsUntil(elem, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.updateInfiniteManualSelectPred = function (defaults, value) {\n for (var i = 0; i < this.infiniteManualSelectMaintainPred.length; i++) {\n var predmdl = this.infiniteManualSelectMaintainPred[i];\n if (predmdl.value + '' === value + '' && (predmdl.operator === 'equal' || predmdl.operator === 'notequal')) {\n this.infiniteManualSelectMaintainPred.splice(i, 1);\n break;\n }\n }\n if ((defaults.predicate === 'or' && (!this.localInfiniteSelectAllClicked || !this.infiniteLocalSelectAll))\n || (defaults.predicate === 'and' && (!this.localInfiniteSelectAllClicked || this.infiniteLocalSelectAll))) {\n this.infiniteManualSelectMaintainPred.push(extend({}, { value: value }, defaults));\n if (defaults.predicate === 'or') {\n this.options.parentTotalDataCount++;\n }\n else {\n this.options.parentTotalDataCount--;\n }\n }\n };\n /**\n * Method to set the next target element on keyboard navigation using arrow keys.\n *\n */\n CheckBoxFilterBase.prototype.focusNextOrPrev = function (e, focusableElements) {\n var nextIndex = (e.key === 'ArrowUp') ? focusableElements.indexOf(document.activeElement) - 1\n : focusableElements.indexOf(document.activeElement) + 1;\n var nextElement = focusableElements[((nextIndex + focusableElements.length) % focusableElements.length)];\n // Set focus on the next / previous element\n if (nextElement) {\n nextElement.focus();\n var target = nextElement.classList.contains('e-chk-hidden') ? parentsUntil(nextElement, 'e-ftrchk') : nextElement;\n this.setFocus(target);\n }\n };\n CheckBoxFilterBase.prototype.keyupHandler = function (e) {\n if ((e.key === 'Tab' && e.shiftKey) || e.key === 'Tab' || ((e.key === 'ArrowUp' || e.key === 'ArrowDown') && !e.altKey)) {\n this.setFocus(parentsUntil(e.target, 'e-ftrchk'));\n }\n if ((e.key === 'ArrowUp' || e.key === 'ArrowDown') && !e.altKey && this.parent.filterSettings.type === 'CheckBox') {\n e.preventDefault();\n var focusableElements = Array.from(this.dlg.querySelectorAll('input, button, [tabindex]:not([tabindex=\"-1\"])'));\n this.focusNextOrPrev(e, focusableElements);\n }\n };\n CheckBoxFilterBase.prototype.setFocus = function (elem) {\n var prevElem = this.dlg.querySelector('.e-chkfocus');\n if (prevElem) {\n prevElem.classList.remove('e-chkfocus');\n }\n if (elem && elem !== prevElem) {\n elem.classList.add('e-chkfocus');\n }\n };\n CheckBoxFilterBase.prototype.updateAllCBoxes = function (checked) {\n if (this.infiniteRenderMod) {\n this.localInfiniteSelectAllClicked = true;\n this.infiniteLocalSelectAll = checked;\n this.infiniteUnloadParentExistPred = [];\n this.infiniteManualSelectMaintainPred = [];\n }\n var cBoxes = this.infiniteRenderMod ?\n this.infiniteLoadedElem.map(function (arr) {\n return arr.querySelector('.e-frame');\n }) : [].slice.call(this.cBox.querySelectorAll('.e-frame:not(.e-add-current)'));\n for (var _i = 0, cBoxes_1 = cBoxes; _i < cBoxes_1.length; _i++) {\n var cBox = cBoxes_1[_i];\n removeAddCboxClasses(cBox, checked);\n setChecked(cBox.previousSibling, checked);\n }\n };\n CheckBoxFilterBase.prototype.dialogOpen = function () {\n if (this.parent.element.classList.contains('e-device')) {\n this.dialogObj.element.querySelector('.e-input-group').classList.remove('e-input-focus');\n if (!this.options.isResponsiveFilter) {\n this.dialogObj.element.querySelector('.e-btn').focus();\n }\n }\n };\n CheckBoxFilterBase.prototype.createCheckbox = function (value, checked, data) {\n var elem = checked ? this.cBoxTrue.cloneNode(true) :\n this.cBoxFalse.cloneNode(true);\n setChecked(elem.querySelector('input'), checked);\n var label = elem.querySelector('.e-label');\n var dummyData = extendObjWithFn({}, data, { column: this.options.column, parent: this.parent });\n var innerText = this.options.disableHtmlEncode ? 'textContent' : 'innerHTML';\n label[\"\" + innerText] = !isNullOrUndefined(value) && value.toString().length ?\n this.parent.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(value) : value : this.getLocalizedLabel('Blanks');\n var checkboxUid = getUid('cbox');\n label.setAttribute('id', checkboxUid + 'cboxLabel');\n elem.querySelector('input').setAttribute('aria-labelledby', label.id);\n if (label.innerHTML === this.getLocalizedLabel('Blanks')) {\n this.isBlanks = true;\n }\n if (typeof value === 'boolean') {\n label.innerHTML = value === true ? this.getLocalizedLabel('FilterTrue') : this.getLocalizedLabel('FilterFalse');\n }\n addClass([label], ['e-checkboxfiltertext']);\n if (this.options.template && data[this.options.column.field] !== this.getLocalizedLabel('SelectAll')\n && data[this.options.column.field] !== this.getLocalizedLabel('AddCurrentSelection')) {\n label.innerHTML = '';\n var isReactCompiler = this.parent.isReact && this.options.column.filter\n && typeof (this.options.column.filter.itemTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n this.options.template(dummyData, this.parent, 'filterItemTemplate', null, null, null, label);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(label, this.options.template(dummyData, this.parent, 'filterItemTemplate'));\n }\n }\n return elem;\n };\n CheckBoxFilterBase.prototype.updateIndeterminatenBtn = function () {\n var cnt = this.infiniteRenderMod ? this.infiniteLoadedElem.length : this.cBox.children.length - 1;\n var className = [];\n var disabled = false;\n var elem = this.infiniteRenderMod ? this.sBox.querySelector('.e-selectall') : this.cBox.querySelector('.e-selectall');\n var selected = this.infiniteRenderMod ? this.infiniteLoadedElem.filter(function (arr) { return arr.querySelector('.e-check'); }).length :\n this.cBox.querySelectorAll('.e-check:not(.e-selectall):not(.e-add-current)').length;\n if (this.cBox.querySelector('.e-add-current')) {\n cnt -= 1;\n }\n var btn;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n btn.disabled = false;\n }\n var input = elem.previousSibling;\n setChecked(input, false);\n input.indeterminate = false;\n if (this.infiniteRenderMod && this.sInput.value === '' && !this.options.parentCurrentViewDataCount && !this.localInfiniteSelectionInteracted\n && (!this.localInfiniteSelectAllClicked || (!this.infiniteLocalSelectAll && !selected)) && (cnt !== selected || cnt === selected)) {\n selected = 0;\n }\n else if (this.infiniteRenderMod && this.infiniteLoadedElem.length < this.infiniteDataCount\n && this.infiniteUnloadParentExistPred.length && (!selected || cnt === selected) && this.infiniteLocalSelectAll) {\n if (!selected) {\n selected += this.infiniteUnloadParentExistPred.length;\n }\n else {\n cnt += this.infiniteUnloadParentExistPred.length;\n }\n }\n if (cnt === selected) {\n if (this.infiniteRenderMod) {\n this.infiniteLocalSelectAll = true;\n this.localInfiniteSelectAllClicked = true;\n this.infiniteManualSelectMaintainPred = [];\n }\n className = ['e-check'];\n setChecked(input, true);\n }\n else if (selected) {\n className = ['e-stop'];\n input.indeterminate = true;\n }\n else {\n if (this.infiniteRenderMod) {\n this.infiniteLocalSelectAll = false;\n this.localInfiniteSelectAllClicked = true;\n this.infiniteManualSelectMaintainPred = [];\n }\n className = ['e-uncheck'];\n disabled = true;\n if (btn) {\n btn.disabled = true;\n }\n }\n if (btn) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([elem], className);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n };\n CheckBoxFilterBase.prototype.createFilterItems = function (data, isInitial, args1) {\n var _a, _b, _c;\n var cBoxes = this.parent.createElement('div');\n var btn;\n var disabled = false;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n }\n var nullCounter = -1;\n var key = 'ejValue';\n if (!args1.executeQuery) {\n key = args1.field;\n }\n for (var i = 0; i < data.length; i++) {\n var val = getValue(key, data[parseInt(i.toString(), 10)]);\n if (val === '' || isNullOrUndefined(val)) {\n nullCounter = nullCounter + 1;\n }\n }\n if (!this.infiniteRenderMod) {\n this.itemsCnt = nullCounter !== -1 ? data.length - nullCounter : data.length;\n }\n if (this.infiniteRenderMod && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n this.removeMask();\n }\n if (data.length && !this.renderEmpty) {\n var selectAllValue = this.getLocalizedLabel('SelectAll');\n var innerDiv = this.cBox.querySelector('.e-checkfltrnmdiv');\n if (innerDiv) {\n innerDiv.classList.remove('e-checkfltrnmdiv');\n }\n var checkBox = this.createCheckbox(selectAllValue, false, (_a = {}, _a[this.options.field] = selectAllValue, _a));\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([checkBox], this.parent.cssClass.split(' '));\n }\n else {\n addClass([checkBox], [this.parent.cssClass]);\n }\n }\n if (this.infiniteInitialLoad || !this.infiniteRenderMod) {\n var selectAll = createCboxWithWrap(getUid('cbox'), checkBox, 'e-ftrchk');\n selectAll.querySelector('.e-frame').classList.add('e-selectall');\n if (this.infiniteRenderMod) {\n this.sBox.insertBefore(selectAll, this.spinner);\n }\n else {\n cBoxes.appendChild(selectAll);\n }\n }\n else if (this.sBox.querySelector('.e-ftrchk .e-selectall')) {\n this.sBox.querySelector('.e-ftrchk .e-selectall').previousSibling.disabled = false;\n this.sBox.querySelector('.e-ftrchk .e-selectall').parentElement.classList.remove('e-checkbox-disabled');\n }\n var predicate = new Predicate('field', 'equal', this.options.field);\n if (this.options.foreignKeyValue) {\n predicate = predicate.or('field', 'equal', this.options.foreignKeyValue);\n }\n var isColFiltered = new DataManager(this.options.filteredColumns).executeLocal(new Query().where(predicate)).length;\n if (this.sInput.value) {\n var predicateCheckBox = this.createCheckbox(this.getLocalizedLabel('AddCurrentSelection'), false, (_b = {},\n _b[this.options.field] = this.getLocalizedLabel('AddCurrentSelection'),\n _b));\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([predicateCheckBox], this.parent.cssClass.split(' '));\n }\n else {\n addClass([predicateCheckBox], [this.parent.cssClass]);\n }\n }\n if ((this.infiniteRenderMod && (!isNullOrUndefined(this.sBox.children[2])\n && this.sBox.children[2].innerText !== 'Add current selection to filter')) || !this.infiniteRenderMod) {\n var predicateElement = createCboxWithWrap(getUid('cbox'), predicateCheckBox, 'e-ftrchk');\n predicateElement.querySelector('.e-frame').classList.add('e-add-current');\n if (this.infiniteRenderMod) {\n this.sBox.insertBefore(predicateElement, this.spinner);\n var checkBoxListElem = this.spinner.querySelector('.e-checkboxlist');\n var reduceHeight = Math.ceil(predicateElement.getBoundingClientRect().height);\n checkBoxListElem.style.height = (parseInt(getComputedStyle(checkBoxListElem).height.split('px')[0]) - reduceHeight)\n + 'px';\n checkBoxListElem.style.minHeight = checkBoxListElem.style.height;\n }\n else {\n cBoxes.appendChild(predicateElement);\n }\n }\n else if (this.sBox.querySelector('.e-ftrchk .e-add-current')) {\n this.sBox.querySelector('.e-ftrchk .e-add-current').previousSibling.disabled = false;\n this.sBox.querySelector('.e-ftrchk .e-add-current').parentElement.classList.remove('e-checkbox-disabled');\n }\n }\n else if (this.infiniteRenderMod && !isNullOrUndefined(this.sBox.children[2])\n && this.sBox.children[2].innerText === 'Add current selection to filter') {\n var checkBoxListElem = this.spinner.querySelector('.e-checkboxlist');\n var increaseHeight = Math.ceil(this.sBox.children[2].getBoundingClientRect().height);\n checkBoxListElem.style.height = (parseInt(getComputedStyle(checkBoxListElem).height.split('px')[0]) + increaseHeight)\n + 'px';\n checkBoxListElem.style.minHeight = checkBoxListElem.style.height;\n remove(this.sBox.children[2]);\n }\n var isRndere = void 0;\n for (var i = 0; i < data.length; i++) {\n var uid = getUid('cbox');\n this.values[\"\" + uid] = getValue(key, data[parseInt(i.toString(), 10)]);\n var value = getValue(this.options.field, data[parseInt(i.toString(), 10)]);\n if (this.options.formatFn) {\n value = this.valueFormatter.toView(value, this.options.formatFn);\n }\n var args_1 = { value: value, column: this.options.column, data: data[parseInt(i.toString(), 10)] };\n this.parent.notify(events.filterCboxValue, args_1);\n value = args_1.value;\n if ((value === '' || isNullOrUndefined(value))) {\n if (isRndere) {\n continue;\n }\n isRndere = true;\n }\n if (this.infiniteRenderMod) {\n this.updateInfiniteUnLoadedCheckboxExistPred(value, this.infiniteUnloadParentExistPred);\n }\n var checkbox = this.localInfiniteSelectAllClicked ?\n this.createCheckbox(value, this.infiniteLocalSelectAll, getValue('dataObj', data[i])) :\n this.createCheckbox(value, this.getCheckedState(isColFiltered, this.values[\"\" + uid]), getValue('dataObj', data[i]));\n cBoxes.appendChild(createCboxWithWrap(uid, checkbox, 'e-ftrchk'));\n if (this.infiniteRenderMod) {\n cBoxes.lastChild.style.height = this.getListHeight(this.cBox) + 'px';\n }\n }\n var scrollTop = this.cBox.scrollTop;\n if (!this.infiniteRenderMod || this.infiniteSearchValChange) {\n this.cBox.innerHTML = '';\n }\n else if (this.infiniteRenderMod && this.cBox.children.length) {\n this.infiniteRemoveElements(([].slice.call(this.cBox.children)).splice(0, this.parent.filterSettings.itemsCount));\n }\n if (this.infiniteRenderMod) {\n (_c = this.infiniteLoadedElem).push.apply(_c, [].slice.call(cBoxes.children));\n this.itemsCnt = nullCounter !== -1 ? this.infiniteLoadedElem.length - nullCounter : this.infiniteLoadedElem.length;\n }\n if (this.infiniteUnloadParentExistPred.length && (this.infiniteLoadedElem.length >= this.infiniteDataCount\n || !this.options.parentCurrentViewDataCount || (this.options.parentTotalDataCount === this.infiniteDataCount\n && this.options.parentCurrentViewDataCount))) {\n this.infiniteUnloadParentExistPred = [];\n }\n appendChildren(this.cBox, [].slice.call(cBoxes.children));\n if (this.infiniteRenderMod && !this.infiniteScrollAppendDiff) {\n this.infiniteScrollAppendDiff = Math.round(scrollTop - this.cBox.scrollTop);\n }\n this.updateIndeterminatenBtn();\n if (!this.infiniteRenderMod) {\n if (btn) {\n btn.disabled = false;\n }\n disabled = false;\n }\n else {\n if (btn.disabled) {\n disabled = true;\n }\n else {\n disabled = false;\n }\n }\n }\n else {\n cBoxes.appendChild(this.parent.createElement('span', { innerHTML: this.getLocalizedLabel('NoResult') }));\n this.cBox.innerHTML = '';\n if (this.infiniteRenderMod) {\n var selectAll = this.sBox.querySelector('.e-ftrchk .e-selectall');\n if (selectAll) {\n var selectAllParent = selectAll.parentElement.parentElement;\n if (selectAll.classList.contains('e-check')) {\n toogleCheckbox(selectAllParent);\n }\n else if (selectAll.classList.contains('e-stop')) {\n toogleCheckbox(selectAllParent);\n selectAll.classList.remove('e-stop');\n toogleCheckbox(selectAllParent);\n }\n selectAll.previousSibling.disabled = true;\n selectAll.parentElement.classList.add('e-checkbox-disabled');\n }\n var addCurrSelection = this.sBox.querySelector('.e-ftrchk .e-add-current');\n if (addCurrSelection) {\n var addCurrSelectionParent = addCurrSelection.parentElement.parentElement;\n if (addCurrSelection.classList.contains('e-check')) {\n toogleCheckbox(addCurrSelectionParent);\n }\n addCurrSelection.previousSibling.disabled = true;\n addCurrSelection.parentElement.classList.add('e-checkbox-disabled');\n }\n }\n this.cBox.appendChild(this.parent.createElement('div', { className: 'e-checkfltrnmdiv' }));\n appendChildren(this.cBox.children[0], [].slice.call(cBoxes.children));\n if (btn) {\n btn.disabled = true;\n }\n disabled = true;\n this.filterState = !disabled;\n }\n if (btn && data.length) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n var args = { requestType: events.filterChoiceRequest, dataSource: this.renderEmpty ? [] : data };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrComplete, args);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n if (this.infiniteRenderMod && this.infiniteInitialLoad) {\n this.cBox.style.marginTop = '0px';\n }\n hideSpinner(this.spinner);\n };\n CheckBoxFilterBase.prototype.updateInfiniteUnLoadedCheckboxExistPred = function (value, updatePredArr) {\n for (var j = 0; j < updatePredArr.length; j++) {\n var pred = updatePredArr[j];\n if (value === pred.value && (pred.operator === 'equal' || pred.operator === 'notequal')) {\n this.infiniteManualSelectMaintainPred.push(updatePredArr[j]);\n updatePredArr.splice(j, 1);\n j--;\n }\n }\n };\n CheckBoxFilterBase.prototype.getCheckedState = function (isColFiltered, value) {\n if (!this.isFiltered || !isColFiltered) {\n return true;\n }\n else {\n var checkState = this.sInput.value ? true : this.result[\"\" + value];\n if (this.infiniteRenderMod) {\n return checkState;\n }\n else {\n return this.options.operator === 'notequal' ? !checkState : checkState;\n }\n }\n };\n CheckBoxFilterBase.getDistinct = function (json, field, column, foreignKeyData, checkboxFilter) {\n var len = json.length;\n var result = [];\n var value;\n var ejValue = 'ejValue';\n var lookup = {};\n var isForeignKey = column && column.isForeignColumn ? column.isForeignColumn() : false;\n while (len--) {\n value = json[parseInt(len.toString(), 10)];\n if (column && column.type === 'dateonly' && typeof value[\"\" + field] === 'string' && value[\"\" + field]) {\n var arr = value[\"\" + field].split(/[^0-9.]/);\n value[\"\" + field] = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n value = getObject(field, value); //local remote diff, check with mdu\n var currentFilterValue = (typeof value === 'string') && !(isNullOrUndefined(checkboxFilter)) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !(isNullOrUndefined(checkboxFilter.parent)) && !(isNullOrUndefined(checkboxFilter.parent.filterSettings)) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !(isNullOrUndefined(checkboxFilter.parent.filterSettings.enableCaseSensitivity)) ? value.toLowerCase() : value;\n if (!(currentFilterValue in lookup)) {\n var obj = {};\n obj[\"\" + ejValue] = value;\n lookup[\"\" + currentFilterValue] = true;\n if (isForeignKey) {\n var foreignDataObj = getForeignData(column, {}, value, foreignKeyData)[0];\n setValue(events.foreignKeyData, foreignDataObj, json[parseInt(len.toString(), 10)]);\n value = getValue(column.foreignKeyValue, foreignDataObj);\n }\n setValue(field, isNullOrUndefined(value) ? null : value, obj);\n setValue('dataObj', json[parseInt(len.toString(), 10)], obj);\n result.push(obj);\n }\n }\n return DataUtil.group(DataUtil.sort(result, field, DataUtil.fnAscending), 'ejValue');\n };\n CheckBoxFilterBase.getPredicate = function (columns, isExecuteLocal) {\n var cols = DataUtil.distinct(columns, 'field', true) || [];\n var collection = [];\n var pred = {};\n for (var i = 0; i < cols.length; i++) {\n collection = new DataManager(columns).executeLocal(new Query().where('field', 'equal', cols[parseInt(i.toString(), 10)].field));\n if (collection.length !== 0) {\n pred[cols[parseInt(i.toString(), 10)].field] = CheckBoxFilterBase.generatePredicate(collection, isExecuteLocal);\n }\n }\n return pred;\n };\n CheckBoxFilterBase.generatePredicate = function (cols, isExecuteLocal) {\n var len = cols ? cols.length : 0;\n var predicate;\n var operate = 'or';\n var first = CheckBoxFilterBase.updateDateFilter(cols[0]);\n first.ignoreAccent = !isNullOrUndefined(first.ignoreAccent) ? first.ignoreAccent : false;\n if (first.type === 'date' || first.type === 'datetime' || first.type === 'dateonly') {\n predicate = getDatePredicate(first, first.type, isExecuteLocal);\n }\n else {\n predicate = first.ejpredicate ? first.ejpredicate :\n new Predicate(first.field, first.operator, first.value, !CheckBoxFilterBase.getCaseValue(first), first.ignoreAccent);\n }\n for (var p = 1; p < len; p++) {\n cols[parseInt(p.toString(), 10)] = CheckBoxFilterBase.updateDateFilter(cols[parseInt(p.toString(), 10)]);\n if (len > 2 && p > 1 && ((cols[p].predicate === 'or' && cols[p - 1].predicate === 'or')\n || (cols[p].predicate === 'and' && cols[p - 1].predicate === 'and'))) {\n if (cols[p].type === 'date' || cols[p].type === 'datetime' || cols[p].type === 'dateonly') {\n predicate.predicates.push(getDatePredicate(cols[parseInt(p.toString(), 10)], cols[p].type, isExecuteLocal));\n }\n else {\n predicate.predicates.push(new Predicate(cols[p].field, cols[parseInt(p.toString(), 10)].operator, cols[parseInt(p.toString(), 10)].value, !CheckBoxFilterBase.getCaseValue(cols[parseInt(p.toString(), 10)]), cols[parseInt(p.toString(), 10)].ignoreAccent));\n }\n }\n else {\n if (cols[p].type === 'date' || cols[p].type === 'datetime' || cols[p].type === 'dateonly') {\n if (cols[parseInt(p.toString(), 10)].predicate === 'and' && cols[parseInt(p.toString(), 10)].operator === 'equal') {\n predicate = predicate[\"\" + operate](getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type, isExecuteLocal), cols[parseInt(p.toString(), 10)].type, cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n else {\n predicate = predicate[(cols[parseInt(p.toString(), 10)].predicate)](getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type, isExecuteLocal), cols[parseInt(p.toString(), 10)].type, cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n }\n else {\n predicate = cols[parseInt(p.toString(), 10)].ejpredicate ?\n predicate[cols[parseInt(p.toString(), 10)]\n .predicate](cols[parseInt(p.toString(), 10)].ejpredicate) :\n predicate[(cols[parseInt(p.toString(), 10)].predicate)](cols[parseInt(p.toString(), 10)].field, cols[parseInt(p.toString(), 10)].operator, cols[parseInt(p.toString(), 10)].value, !CheckBoxFilterBase.getCaseValue(cols[parseInt(p.toString(), 10)]), cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n }\n }\n return predicate || null;\n };\n CheckBoxFilterBase.getCaseValue = function (filter) {\n if (isNullOrUndefined(filter.matchCase)) {\n if (filter.type === 'string' || isNullOrUndefined(filter.type) && typeof (filter.value) === 'string') {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return filter.matchCase;\n }\n };\n CheckBoxFilterBase.updateDateFilter = function (filter) {\n if ((filter.type === 'date' || filter.type === 'datetime' || filter.type === 'dateonly' || filter.value instanceof Date)) {\n filter.type = filter.type || 'date';\n }\n return filter;\n };\n return CheckBoxFilterBase;\n}());\nexport { CheckBoxFilterBase };\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate, Deferred, UrlAdaptor, RemoteSaveAdaptor } from '@syncfusion/ej2-data';\nimport { setFormatter, isGroupAdaptive, getColumnByForeignKeyValue, refreshFilteredColsUid } from '../base/util';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * Grid data module is used to generate query and data source.\n *\n * @hidden\n */\nvar Data = /** @class */ (function () {\n /**\n * Constructor for data module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n * @hidden\n */\n function Data(parent, serviceLocator) {\n this.dataState = { isPending: false, resolver: null, group: [] };\n this.foreignKeyDataState = { isPending: false, resolver: null };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.initDataManager();\n if (this.parent.isDestroyed || this.getModuleName() === 'foreignKey') {\n return;\n }\n this.parent.on(events.rowsAdded, this.addRows, this);\n this.parent.on(events.rowPositionChanged, this.reorderRows, this);\n this.parent.on(events.rowsRemoved, this.removeRows, this);\n this.parent.on(events.dataSourceModified, this.initDataManager, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.updateData, this.crudActions, this);\n this.parent.on(events.addDeleteAction, this.getData, this);\n this.parent.on(events.autoCol, this.refreshFilteredCols, this);\n this.parent.on(events.columnsPrepared, this.refreshFilteredCols, this);\n }\n Data.prototype.reorderRows = function (e) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, this.dataManager.dataSource.json.splice(e.fromIndex, 1)[0]);\n };\n Data.prototype.getModuleName = function () {\n return 'data';\n };\n /**\n * The function used to initialize dataManager and external query\n *\n * @returns {void}\n */\n Data.prototype.initDataManager = function () {\n var gObj = this.parent;\n this.dataManager = gObj.dataSource instanceof DataManager ? gObj.dataSource :\n (isNullOrUndefined(gObj.dataSource) ? new DataManager() : new DataManager(gObj.dataSource));\n if (gObj.isAngular && !(gObj.query instanceof Query)) {\n gObj.setProperties({ query: new Query() }, true);\n }\n else {\n this.isQueryInvokedFromData = true;\n if (!(gObj.query instanceof Query)) {\n gObj.query = new Query();\n }\n }\n };\n /**\n * The function is used to generate updated Query from Grid model.\n *\n * @param {boolean} skipPage - specifies the boolean to skip the page\n * @param {boolean} isAutoCompleteCall - specifies for auto complete call\n * @returns {Query} returns the Query\n * @hidden\n */\n Data.prototype.generateQuery = function (skipPage, isAutoCompleteCall) {\n var gObj = this.parent;\n var query = gObj.getQuery().clone();\n if (this.parent.columnQueryMode === 'ExcludeHidden') {\n query.select(this.parent.getColumns().filter(function (column) { return !(column.isPrimaryKey !== true && column.visible === false || column.field === undefined); }).map(function (column) { return column.field; }));\n }\n else if (this.parent.columnQueryMode === 'Schema') {\n var selectQueryFields = [];\n var columns = this.parent.columns;\n for (var i = 0; i < columns.length; i++) {\n selectQueryFields.push(columns[parseInt(i.toString(), 10)].field);\n }\n query.select(selectQueryFields);\n }\n this.filterQuery(query);\n this.searchQuery(query);\n this.aggregateQuery(query);\n this.sortQuery(query);\n if (isGroupAdaptive(this.parent)) {\n this.virtualGroupPageQuery(query);\n }\n else {\n this.pageQuery(query, skipPage);\n }\n if (isNullOrUndefined(isAutoCompleteCall) || !isAutoCompleteCall) {\n this.groupQuery(query);\n }\n return query;\n };\n /**\n * @param {Query} query - specifies the query\n * @returns {Query} - returns the query\n * @hidden\n */\n Data.prototype.aggregateQuery = function (query) {\n var rows = this.parent.aggregates;\n for (var i = 0; i < rows.length; i++) {\n var row = rows[parseInt(i.toString(), 10)];\n for (var j = 0; j < row.columns.length; j++) {\n var cols = row.columns[parseInt(j.toString(), 10)];\n var types = cols.type instanceof Array ? cols.type : [cols.type];\n for (var k = 0; k < types.length; k++) {\n query.aggregate(types[parseInt(k.toString(), 10)].toLowerCase(), cols.field);\n }\n }\n }\n return query;\n };\n Data.prototype.virtualGroupPageQuery = function (query) {\n var fName = 'fn';\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[parseInt(i.toString(), 10)][\"\" + fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n };\n Data.prototype.pageQuery = function (query, skipPage) {\n var gObj = this.parent;\n var fName = 'fn';\n var args = { query: query, skipPage: false };\n gObj.notify(events.setVirtualPageQuery, args);\n if (args.skipPage) {\n return query;\n }\n if ((gObj.allowPaging || gObj.enableVirtualization || gObj.enableInfiniteScrolling) && skipPage !== true) {\n gObj.pageSettings.currentPage = Math.max(1, gObj.pageSettings.currentPage);\n if (gObj.pageSettings.pageCount <= 0) {\n gObj.pageSettings.pageCount = 8;\n }\n if (gObj.pageSettings.pageSize <= 0) {\n gObj.pageSettings.pageSize = 12;\n }\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[parseInt(i.toString(), 10)][\"\" + fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n if (!isNullOrUndefined(gObj.infiniteScrollModule) && gObj.enableInfiniteScrolling) {\n this.parent.notify(events.infinitePageQuery, query);\n }\n else {\n query.page(gObj.pageSettings.currentPage, gObj.allowPaging && gObj.pagerModule &&\n (gObj.pagerModule.pagerObj.isAllPage && !gObj.isManualRefresh) &&\n (!this.dataManager.dataSource.offline && !(this.dataManager.adaptor instanceof RemoteSaveAdaptor)) ?\n null : gObj.pageSettings.pageSize);\n }\n }\n return query;\n };\n Data.prototype.groupQuery = function (query) {\n var gObj = this.parent;\n if (gObj.allowGrouping && gObj.groupSettings.columns.length) {\n if (this.parent.groupSettings.enableLazyLoading) {\n query.lazyLoad.push({ key: 'isLazyLoad', value: this.parent.groupSettings.enableLazyLoading });\n }\n var columns = gObj.groupSettings.columns;\n for (var i = 0, len = columns.length; i < len; i++) {\n var column = this.getColumnByField(columns[parseInt(i.toString(), 10)]);\n if (!column) {\n this.parent.log('initial_action', { moduleName: 'group', columnName: columns[parseInt(i.toString(), 10)] });\n }\n var isGrpFmt = column.enableGroupByFormat;\n var format = column.format;\n if (isGrpFmt) {\n query.group(columns[parseInt(i.toString(), 10)], this.formatGroupColumn.bind(this), format);\n }\n else {\n query.group(columns[parseInt(i.toString(), 10)], null);\n }\n }\n }\n return query;\n };\n Data.prototype.sortQuery = function (query) {\n var gObj = this.parent;\n if ((gObj.allowSorting || gObj.allowGrouping) && gObj.sortSettings.columns.length) {\n var columns = gObj.sortSettings.columns;\n var sortGrp = [];\n for (var i = columns.length - 1; i > -1; i--) {\n var col = this.getColumnByField(columns[parseInt(i.toString(), 10)].field);\n if (col) {\n col.setSortDirection(columns[parseInt(i.toString(), 10)].direction);\n }\n else {\n this.parent.log('initial_action', { moduleName: 'sort', columnName: columns[parseInt(i.toString(), 10)].field });\n return query;\n }\n var fn = columns[parseInt(i.toString(), 10)].direction;\n if (col.sortComparer) {\n this.parent.log('grid_sort_comparer');\n fn = !this.isRemote() ? col.sortComparer.bind(col) : columns[parseInt(i.toString(), 10)].direction;\n }\n if (gObj.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) === -1) {\n if (col.isForeignColumn() || col.sortComparer) {\n query.sortByForeignKey(col.field, fn, undefined, columns[parseInt(i.toString(), 10)].direction.toLowerCase());\n }\n else {\n query.sortBy(col.field, fn);\n }\n }\n else {\n sortGrp.push({ direction: fn, field: col.field });\n }\n }\n for (var i = 0, len = sortGrp.length; i < len; i++) {\n if (typeof sortGrp[parseInt(i.toString(), 10)].direction === 'string') {\n query.sortBy(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction);\n }\n else {\n var col = this.getColumnByField(sortGrp[parseInt(i.toString(), 10)].field);\n query.sortByForeignKey(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction, undefined, col.getSortDirection().toLowerCase());\n }\n }\n }\n return query;\n };\n 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, defaultFltrCols[parseInt(i.toString(), 10)].isForeignKey).uid;\n }\n var excelPredicate = CheckBoxFilterBase.getPredicate(defaultFltrCols);\n for (var _c = 0, _d = Object.keys(excelPredicate); _c < _d.length; _c++) {\n var prop = _d[_c];\n predicateList.push(excelPredicate[\"\" + prop]);\n }\n }\n if (foreignCols.length) {\n for (var _e = 0, foreignCols_1 = foreignCols; _e < foreignCols_1.length; _e++) {\n var col = foreignCols_1[_e];\n col.uid = col.uid || this.parent.grabColumnByFieldFromAllCols(col.field, col.isForeignKey).uid;\n var column_1 = this.parent.grabColumnByUidFromAllCols(col.uid);\n if (!column_1) {\n this.parent.log('initial_action', { moduleName: 'filter', columnName: col.field });\n }\n if (column_1.isForeignColumn() && getColumnByForeignKeyValue(col.field, foreignColumn) && !skipFoerign) {\n actualFilter.push(col);\n if (!column_1.columnData.length) {\n foreignColEmpty = true;\n }\n predicateList = this.fGeneratePredicate(column_1, predicateList);\n }\n else {\n var excelPredicate = CheckBoxFilterBase.getPredicate(columns);\n for (var _f = 0, _g = Object.keys(excelPredicate); _f < _g.length; _f++) {\n var prop = _g[_f];\n predicateList.push(excelPredicate[\"\" + prop]);\n }\n }\n }\n }\n if (predicateList.length && !foreignColEmpty) {\n query.where(Predicate.and(predicateList));\n }\n else {\n this.parent.notify(events.showEmptyGrid, {});\n }\n }\n return query;\n };\n Data.prototype.fGeneratePredicate = function (col, predicateList) {\n var fPredicate = {};\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(fPredicate.predicate);\n }\n }\n return predicateList;\n };\n /**\n * The function is used to get dataManager promise by executing given Query.\n *\n * @param {object} args - specifies the object\n * @param {string} args.requestType - Defines the request type\n * @param {string[]} args.foreignKeyData - Defines the foreignKeyData.string\n * @param {Object} args.data - Defines the data.\n * @param {number} args.index - Defines the index .\n * @param {Query} query - Defines the query which will execute along with data processing.\n * @returns {Promise} - returns the object\n * @hidden\n */\n Data.prototype.getData = function (args, query) {\n var _this = this;\n if (args === void 0) { args = { requestType: '' }; }\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ?\n args.foreignKeyData : this.parent.getPrimaryKeyFieldNames());\n this.parent.log('datasource_syntax_mismatch', { dataState: this.parent });\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n var def = this.eventPromise(args, query, key);\n return def.promise;\n }\n else {\n var crud = void 0;\n switch (args.requestType) {\n case 'delete':\n query = query ? query : this.generateQuery();\n // eslint-disable-next-line no-case-declarations\n var len = Object.keys(args.data).length;\n if (len === 1) {\n crud = this.dataManager.remove(key, args.data[0], query.fromTable, query);\n }\n else {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n changes.deletedRecords = args.data;\n crud = this.dataManager.saveChanges(changes, key, query.fromTable, query.requiresCount());\n }\n break;\n case 'save':\n query = query ? query : this.generateQuery();\n args.index = isNullOrUndefined(args.index) ? 0 : args.index;\n crud = this.dataManager.insert(args.data, query.fromTable, query, args.index);\n break;\n }\n var promise = 'promise';\n args[\"\" + promise] = crud;\n // eslint-disable-next-line no-prototype-builtins\n if (crud && !Array.isArray(crud) && !crud.hasOwnProperty('deletedRecords')) {\n return crud.then(function () {\n return _this.insert(query, args);\n });\n }\n else {\n return this.insert(query, args);\n }\n }\n };\n Data.prototype.insert = function (query, args) {\n if (args.requestType === 'save') {\n this.parent.notify(events.recordAdded, args);\n }\n return this.executeQuery(query);\n };\n Data.prototype.executeQuery = function (query) {\n var _this = this;\n if (this.dataManager.ready) {\n var deferred_1 = new Deferred();\n var ready = this.dataManager.ready;\n ready.then(function () {\n _this.dataManager.executeQuery(query).then(function (result) {\n deferred_1.resolve(result);\n });\n }).catch(function (e) {\n deferred_1.reject(e);\n });\n return deferred_1.promise;\n }\n else {\n return this.dataManager.executeQuery(query);\n }\n };\n Data.prototype.formatGroupColumn = function (value, field) {\n var serviceLocator = this.serviceLocator;\n var column = this.getColumnByField(field);\n var date = value;\n if (!column.type) {\n column.type = date.getDay ? (date.getHours() > 0 || date.getMinutes() > 0 ||\n date.getSeconds() > 0 || date.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n if (isNullOrUndefined(column.getFormatter())) {\n setFormatter(serviceLocator, column);\n }\n var formatVal = ValueFormatter.prototype.toView(value, column.getFormatter());\n return formatVal;\n };\n Data.prototype.crudActions = function (args) {\n var query = this.generateQuery();\n var promise = null;\n var pr = 'promise';\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ? args.foreignKeyData :\n this.parent.getPrimaryKeyFieldNames());\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.eventPromise(args, query, key);\n }\n switch (args.requestType) {\n case 'save':\n promise = this.dataManager.update(key, args.data, query.fromTable, query, args.previousData);\n break;\n }\n args[\"\" + pr] = promise ? promise : args[\"\" + pr];\n this.parent.notify(events.crudAction, args);\n };\n /**\n * @param {object} changes - specifies the changes\n * @param {string} key - specifies the key\n * @param {object} original - specifies the original data\n * @param {Query} query - specifies the query\n * @returns {Promise} returns the object\n * @hidden\n */\n Data.prototype.saveChanges = function (changes, key, original, query) {\n if (query === void 0) { query = this.generateQuery(); }\n query.requiresCount();\n if ('result' in this.parent.dataSource) {\n var deff = new Deferred();\n var args = {\n requestType: 'batchsave', changes: changes, key: key, query: query,\n endEdit: deff.resolve\n };\n this.setState({ isPending: true, resolver: deff.resolve });\n this.parent.trigger(events.dataSourceChanged, args);\n return deff.promise;\n }\n else {\n var promise = this.dataManager.saveChanges(changes, key, query.fromTable, query, original);\n return promise;\n }\n };\n Data.prototype.getKey = function (keys) {\n if (keys && keys.length) {\n return keys[0];\n }\n return undefined;\n };\n /**\n * @returns {boolean} returns whether its remote data\n * @hidden\n */\n Data.prototype.isRemote = function () {\n return this.dataManager.dataSource.offline !== true && this.dataManager.dataSource.url !== undefined &&\n this.dataManager.dataSource.url !== '';\n };\n Data.prototype.addRows = function (e) {\n for (var i = e.records.length; i > 0; i--) {\n if (this.parent.dataSource instanceof DataManager && this.dataManager.dataSource.offline) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, e.records[i - 1]);\n }\n else if (((!this.parent.getDataModule().isRemote()) && (!isNullOrUndefined(this.parent.dataSource))) &&\n (!this.parent.dataSource.result)) {\n this.parent.dataSource['splice'](e.toIndex, 0, e.records[i - 1]);\n }\n }\n };\n Data.prototype.removeRows = function (e) {\n var json = this.dataManager.dataSource.json;\n if (this.parent.dataSource instanceof DataManager && this.dataManager.dataSource.offline) {\n this.dataManager.dataSource.json = json.filter(function (value) { return e.records.indexOf(value) === -1; });\n }\n else if (((!this.parent.getDataModule().isRemote()) && (!isNullOrUndefined(this.parent.dataSource))) &&\n (!this.parent.dataSource.result)) {\n this.parent.dataSource = json.filter(function (value) { return e.records.indexOf(value) === -1; });\n }\n };\n Data.prototype.getColumnByField = function (field) {\n var col;\n return (this.parent.columnModel).some(function (column) {\n col = column;\n return column.field === field;\n }) && col;\n };\n Data.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.rowsAdded, this.addRows);\n this.parent.off(events.rowsRemoved, this.removeRows);\n this.parent.off(events.dataSourceModified, this.initDataManager);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.updateData, this.crudActions);\n this.parent.off(events.addDeleteAction, this.getData);\n this.parent.off(events.autoCol, this.refreshFilteredCols);\n this.parent.off(events.columnsPrepared, this.refreshFilteredCols);\n };\n Data.prototype.getState = function () {\n return this.dataState;\n };\n Data.prototype.setState = function (state) {\n return this.dataState = state;\n };\n Data.prototype.getForeignKeyDataState = function () {\n return this.foreignKeyDataState;\n };\n Data.prototype.setForeignKeyDataState = function (state) {\n this.foreignKeyDataState = state;\n };\n Data.prototype.getStateEventArgument = function (query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return extend(data, state.pvtData);\n };\n Data.prototype.eventPromise = function (args, query, key) {\n var _this = this;\n var dataArgs = args;\n var state = this.getStateEventArgument(query);\n var def = new Deferred();\n var deff = new Deferred();\n if ((args.requestType !== undefined || (this.parent.groupSettings.disablePageWiseAggregates && query.queries.some(function (query) { return query.fn === 'onGroup'; })))\n && this.dataState.isDataChanged !== false) {\n state.action = args;\n if (args.requestType === 'save' || args.requestType === 'delete') {\n var editArgs_1 = args;\n editArgs_1.key = key;\n var promise = 'promise';\n editArgs_1[\"\" + promise] = deff.promise;\n editArgs_1.state = state;\n this.setState({ isPending: true, resolver: deff.resolve });\n dataArgs.endEdit = deff.resolve;\n dataArgs.cancelEdit = deff.reject;\n this.parent.trigger(events.dataSourceChanged, editArgs_1);\n deff.promise.then(function () {\n _this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n if (editArgs_1.requestType === 'save') {\n _this.parent.notify(events.recordAdded, editArgs_1);\n }\n _this.parent.trigger(events.dataStateChange, state);\n })\n .catch(function () { return void 0; });\n }\n else {\n this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n this.parent.trigger(events.dataStateChange, state);\n }\n }\n else {\n this.setState({});\n def.resolve(this.parent.dataSource);\n }\n return def;\n };\n /**\n * Gets the columns where searching needs to be performed from the Grid.\n *\n * @returns {string[]} returns the searched column field names\n */\n Data.prototype.getSearchColumnFieldNames = function () {\n var colFieldNames = [];\n var columns = this.parent.getColumns();\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var col = columns_2[_i];\n if (col.allowSearching && !isNullOrUndefined(col.field)) {\n colFieldNames.push(col.field);\n }\n }\n return colFieldNames;\n };\n Data.prototype.refreshFilteredCols = function () {\n if (this.parent.allowFiltering && this.parent.filterSettings.columns.length) {\n refreshFilteredColsUid(this.parent, this.parent.filterSettings.columns);\n }\n };\n return Data;\n}());\nexport { Data };\n","import { ChildProperty, compile as baseTemplateComplier, setValue, Internationalization, isUndefined } from '@syncfusion/ej2-base';\nimport { extend as baseExtend, isNullOrUndefined, getValue, classList } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, addClass, attributes, remove, createElement, removeClass } from '@syncfusion/ej2-base';\nimport { isObject, select, selectAll } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate, UrlAdaptor, Deferred } from '@syncfusion/ej2-data';\nimport { Column } from '../models/column';\nimport { calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { Print } from '../actions/print';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\nimport * as literals from '../base/string-literals';\n//https://typescript.codeplex.com/discussions/401501\n/**\n * Function to check whether target object implement specific interface\n *\n * @param {Object} target - specifies the target\n * @param {string} checkFor - specifies the checkfors\n * @returns {boolean} returns the boolean\n * @hidden\n */\nexport function doesImplementInterface(target, checkFor) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return target.prototype && checkFor in target.prototype;\n}\n/**\n * Function to get value from provided data\n *\n * @param {string} field - specifies the field\n * @param {Object} data - specifies the data\n * @param {ColumnModel} column - specifies the column\n * @returns {Object} returns the object\n * @hidden\n */\n// eslint-disable-next-line\nexport function valueAccessor(field, data, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, data);\n}\n/**\n * Defines the method used to apply custom header cell values from external function and display this on each header cell rendered.\n *\n * @param {string} field - specifies the field\n * @param {ColumnModel} column - specifies the column\n * @returns {object} headerValueAccessor\n * @hidden\n */\nexport function headerValueAccessor(field, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, column);\n}\n/**\n * The function used to update Dom using requestAnimationFrame.\n *\n * @param {Function} updateFunction - Function that contains the actual action\n * @param {object} callBack - defines the callback\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function getUpdateUsingRaf(updateFunction, callBack) {\n requestAnimationFrame(function () {\n try {\n callBack(null, updateFunction());\n }\n catch (e) {\n callBack(e);\n }\n });\n}\n/**\n * @hidden\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @returns {boolean} Returns isExportColumns\n */\nexport function isExportColumns(exportProperties) {\n return !isNullOrUndefined(exportProperties) &&\n !isNullOrUndefined(exportProperties.columns) && exportProperties.columns.length > 0;\n}\n/**\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nexport function updateColumnTypeForExportColumns(exportProperties, gObj) {\n var exportColumns = exportProperties.columns;\n var gridColumns = gObj.columns;\n for (var i = 0; i < exportColumns.length; i++) {\n if (gridColumns.length - 1 >= i) {\n if (gridColumns[parseInt(i.toString(), 10)].columns) {\n for (var j = 0; j < gridColumns[parseInt(i.toString(), 10)].columns.length; j++) {\n exportColumns[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)]\n .type = gridColumns[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)].type;\n }\n }\n else {\n exportColumns[parseInt(i.toString(), 10)].type = gridColumns[parseInt(i.toString(), 10)].type;\n }\n }\n }\n}\n/**\n * @hidden\n * @param {IGrid} grid - Defines the grid\n * @returns {void}\n */\nexport function updatecloneRow(grid) {\n var nRows = [];\n var actualRows = grid.vRows;\n for (var i = 0; i < actualRows.length; i++) {\n if (actualRows[parseInt(i.toString(), 10)].isDataRow) {\n nRows.push(actualRows[parseInt(i.toString(), 10)]);\n }\n else if (!actualRows[parseInt(i.toString(), 10)].isDataRow) {\n nRows.push(actualRows[parseInt(i.toString(), 10)]);\n if (!actualRows[parseInt(i.toString(), 10)].isExpand && actualRows[parseInt(i.toString(), 10)].isCaptionRow) {\n i += getCollapsedRowsCount(actualRows[parseInt(i.toString(), 10)], grid);\n }\n }\n }\n grid.vcRows = nRows;\n}\nvar count = 0;\n/**\n * @hidden\n * @param {Row} val - Defines the value\n * @param {IGrid} grid - Defines the grid\n * @returns {number} Returns the collapsed row count\n */\nexport function getCollapsedRowsCount(val, grid) {\n count = 0;\n var gSummary = 'gSummary';\n var total = 'count';\n var gLen = grid.groupSettings.columns.length;\n var records = 'records';\n var items = 'items';\n var value = val[\"\" + gSummary];\n var dataRowCnt = 0;\n var agrCnt = 'aggregatesCount';\n if (value === val.data[\"\" + total]) {\n if (grid.groupSettings.columns.length && !isNullOrUndefined(val[\"\" + agrCnt]) && val[\"\" + agrCnt]) {\n if (grid.groupSettings.columns.length !== 1) {\n count += (val.indent !== 0 && (value) < 2) ? (val[\"\" + gSummary] * ((gLen - val.indent) + (gLen - val.indent) * val[\"\" + agrCnt])) :\n (val[\"\" + gSummary] * ((gLen - val.indent) + (gLen - val.indent - 1) * val[\"\" + agrCnt])) + val[\"\" + agrCnt];\n }\n else if (grid.groupSettings.columns.length === 1) {\n count += (val[\"\" + gSummary] * (gLen - val.indent)) + val[\"\" + agrCnt];\n }\n }\n else if (grid.groupSettings.columns.length) {\n if (grid.groupSettings.columns.length !== 1) {\n count += val[\"\" + gSummary] * (grid.groupSettings.columns.length - val.indent);\n }\n else {\n count += val[\"\" + gSummary];\n }\n }\n return count;\n }\n else {\n for (var i = 0, len = val.data[\"\" + items].length; i < len; i++) {\n var gLevel = val.data[\"\" + items][parseInt(i.toString(), 10)];\n count += gLevel[\"\" + items].length + ((gLen !== grid.columns.length) &&\n !isNullOrUndefined(gLevel[\"\" + items][\"\" + records]) ? gLevel[\"\" + items][\"\" + records].length : 0);\n dataRowCnt += (!isNullOrUndefined(gLevel[\"\" + items][\"\" + records]) && !isNullOrUndefined(val[\"\" + agrCnt])) ? gLevel[\"\" + items][\"\" + records].length :\n gLevel[\"\" + items].length;\n if (gLevel[\"\" + items].GroupGuid && gLevel[\"\" + items].childLevels !== 0) {\n recursive(gLevel);\n }\n }\n count += val.data[\"\" + items].length;\n if (!isNullOrUndefined(val[\"\" + agrCnt])) {\n if (val[\"\" + agrCnt] && count && dataRowCnt !== 0) {\n count += ((count - dataRowCnt) * val[\"\" + agrCnt]) + val[\"\" + agrCnt];\n }\n }\n }\n return count;\n}\n/**\n * @param {Object[]} row - Defines the row\n * @returns {void}\n * @hidden\n */\nexport function recursive(row) {\n var items = 'items';\n var rCount = 'count';\n for (var j = 0, length_1 = row[\"\" + items].length; j < length_1; j++) {\n var nLevel = row[\"\" + items][parseInt(j.toString(), 10)];\n count += nLevel[\"\" + rCount];\n if (nLevel[\"\" + items].childLevels !== 0) {\n recursive(nLevel);\n }\n }\n}\n/**\n * @param {Object[]} collection - Defines the array\n * @param {Object} predicate - Defines the predicate\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function iterateArrayOrObject(collection, predicate) {\n var result = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n var pred = predicate(collection[parseInt(i.toString(), 10)], i);\n if (!isNullOrUndefined(pred)) {\n result.push(pred);\n }\n }\n return result;\n}\n/**\n * @param {Object[]} array - Defines the array\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function iterateExtend(array) {\n var obj = [];\n for (var i = 0; i < array.length; i++) {\n obj.push(baseExtend({}, getActualProperties(array[parseInt(i.toString(), 10)]), {}, true));\n }\n return obj;\n}\n/**\n * @param {string | Function} template - Defines the template\n * @returns {Function} Returns the function\n * @hidden\n */\nexport function templateCompiler(template) {\n if (template) {\n try {\n var validSelector = template[0] !== '<';\n if (typeof template === 'function') {\n return baseTemplateComplier(template);\n }\n else if (validSelector && document.querySelectorAll(template).length) {\n return baseTemplateComplier(document.querySelector(template).innerHTML.trim());\n }\n else {\n return baseTemplateComplier(template);\n }\n }\n catch (e) {\n return baseTemplateComplier(template);\n }\n }\n return undefined;\n}\n/**\n * @param {Element} node - Defines the column\n * @param {Object} customAttributes - Defines the index\n * @returns {void}\n * @hidden\n */\nexport function setStyleAndAttributes(node, customAttributes) {\n var copyAttr = {};\n var literals = ['style', 'class'];\n //Dont touch the original object - make a copy\n baseExtend(copyAttr, customAttributes, {});\n if ('style' in copyAttr) {\n setStyleAttribute(node, copyAttr[literals[0]]);\n delete copyAttr[literals[0]];\n }\n if ('class' in copyAttr) {\n addClass([node], copyAttr[literals[1]]);\n delete copyAttr[literals[1]];\n }\n attributes(node, copyAttr);\n}\n/**\n * @param {Object} copied - Defines the column\n * @param {Object} first - Defines the inndex\n * @param {Object} second - Defines the second object\n * @param {string[]} exclude - Defines the exclude\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function extend(copied, first, second, exclude) {\n var moved = baseExtend(copied, first, second);\n var values = Object.keys(moved);\n for (var i = 0; i < values.length; i++) {\n if (exclude && exclude.indexOf(values[parseInt(i.toString(), 10)]) !== -1) {\n delete moved[values[parseInt(i.toString(), 10)]];\n }\n }\n return moved;\n}\n/**\n * @param {Column[]} columnModel - Defines the column\n * @param {number} ind - Defines the inndex\n * @returns {number} - Returns the columnindex\n * @hidden\n */\nexport function setColumnIndex(columnModel, ind) {\n if (ind === void 0) { ind = 0; }\n for (var i = 0, len = columnModel.length; i < len; i++) {\n if (columnModel[parseInt(i.toString(), 10)].columns) {\n columnModel[parseInt(i.toString(), 10)].index = isNullOrUndefined(columnModel[parseInt(i.toString(), 10)].index) ? ind\n : columnModel[parseInt(i.toString(), 10)].index;\n ind++;\n ind = setColumnIndex(columnModel[parseInt(i.toString(), 10)].columns, ind);\n }\n else {\n columnModel[parseInt(i.toString(), 10)].index = isNullOrUndefined(columnModel[parseInt(i.toString(), 10)].index) ? ind\n : columnModel[parseInt(i.toString(), 10)].index;\n ind++;\n }\n }\n return ind;\n}\n/**\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines the column\n * @param {boolean} autoWidth - Defines the autowidth\n * @param {IGrid} gObj - Defines the class name\n * @returns {Column} - Returns the columns\n * @hidden\n */\nexport function prepareColumns(columns, autoWidth, gObj) {\n for (var c = 0, len = columns.length; c < len; c++) {\n var column = void 0;\n if (typeof columns[parseInt(c.toString(), 10)] === 'string') {\n column = new Column({ field: columns[parseInt(c.toString(), 10)] }, gObj);\n }\n else if (!(columns[parseInt(c.toString(), 10)] instanceof Column) || columns[parseInt(c.toString(), 10)].columns) {\n if (!columns[parseInt(c.toString(), 10)].columns) {\n column = new Column(columns[parseInt(c.toString(), 10)], gObj);\n }\n else {\n columns[parseInt(c.toString(), 10)].columns = prepareColumns(columns[parseInt(c.toString(), 10)].columns, null, gObj);\n column = new Column(columns[parseInt(c.toString(), 10)], gObj);\n }\n }\n else {\n column = columns[parseInt(c.toString(), 10)];\n }\n if (column.type && column.type.toLowerCase() === 'checkbox') {\n column.allowReordering = false;\n }\n column.headerText = isNullOrUndefined(column.headerText) ? column.foreignKeyValue || column.field || '' : column.headerText;\n column.foreignKeyField = column.foreignKeyField || column.field;\n column.valueAccessor = (typeof column.valueAccessor === 'string' ? getValue(column.valueAccessor, window)\n : column.valueAccessor) || valueAccessor;\n column.width = autoWidth && isNullOrUndefined(column.width) ? 200 : column.width;\n if (isNullOrUndefined(column.visible)) {\n column.visible = true;\n }\n columns[parseInt(c.toString(), 10)] = column;\n }\n return columns;\n}\n/**\n * @param {HTMLElement} popUp - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the moouse event\n * @param {string} className - Defines the class name\n * @returns {void}\n * @hidden\n */\nexport function setCssInGridPopUp(popUp, e, className) {\n var popUpSpan = popUp.querySelector('span');\n var position = popUp.parentElement.getBoundingClientRect();\n var targetPosition = e.target.getBoundingClientRect();\n popUpSpan.className = className;\n popUp.style.display = '';\n var isBottomTail = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY) > popUp.offsetHeight + 10;\n popUp.style.top = targetPosition.top - position.top +\n (isBottomTail ? -(popUp.offsetHeight + 10) : popUp.offsetHeight + 10) + 'px'; //10px for tail element\n popUp.style.left = getPopupLeftPosition(popUp, e, targetPosition, position.left) + 'px';\n if (isBottomTail) {\n popUp.querySelector('.e-downtail').style.display = '';\n popUp.querySelector('.e-uptail').style.display = 'none';\n }\n else {\n popUp.querySelector('.e-downtail').style.display = 'none';\n popUp.querySelector('.e-uptail').style.display = '';\n }\n}\n/**\n * @param {HTMLElement} popup - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the mouse event\n * @param {Object} targetPosition - Defines the target position\n * @param {number} targetPosition.top - Defines the top position\n * @param {number} targetPosition.left - Defines the left position\n * @param {number} targetPosition.right - Defines the right position\n * @param {number} left - Defines the left position\n * @returns {number} Returns the popup left position\n * @hidden\n */\nfunction getPopupLeftPosition(popup, e, targetPosition, left) {\n var width = popup.offsetWidth / 2;\n var x = getPosition(e).x;\n if (x - targetPosition.left < width) {\n return targetPosition.left - left;\n }\n else if (targetPosition.right - x < width) {\n return targetPosition.right - left - width * 2;\n }\n else {\n return x - left - width;\n }\n}\n/**\n * @param {Object} obj - Defines the object\n * @returns {Object} Returns the Properties\n * @hidden\n */\nexport function getActualProperties(obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the string selector\n * @param {boolean} isID - Defines the isID\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function parentsUntil(elem, selector, isID) {\n var parent = elem;\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n break;\n }\n parent = parent.parentElement;\n }\n return parent;\n}\n/**\n * @param {Element} element - Defines the element\n * @param {Element} elements - Defines the element\n * @returns {number} Returns the element index\n * @hidden\n */\nexport function getElementIndex(element, elements) {\n var index = -1;\n for (var i = 0, len = elements.length; i < len; i++) {\n if (elements[parseInt(i.toString(), 10)].isEqualNode(element)) {\n index = i;\n break;\n }\n }\n return index;\n}\n/**\n * @param {Object} value - Defines the value\n * @param {Object} collection - defines the collection\n * @returns {number} Returns the array\n * @hidden\n */\nexport function inArray(value, collection) {\n for (var i = 0, len = collection.length; i < len; i++) {\n if (collection[parseInt(i.toString(), 10)] === value) {\n return i;\n }\n }\n return -1;\n}\n/**\n * @param {Object} collection - Defines the collection\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getActualPropFromColl(collection) {\n var coll = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n // eslint-disable-next-line no-prototype-builtins\n if (collection[parseInt(i.toString(), 10)].hasOwnProperty('properties')) {\n coll.push(collection[parseInt(i.toString(), 10)].properties);\n }\n else {\n coll.push(collection[parseInt(i.toString(), 10)]);\n }\n }\n return coll;\n}\n/**\n * @param {Element} target - Defines the target element\n * @param {string} selector - Defines the selector\n * @returns {void}\n * @hidden\n */\nexport function removeElement(target, selector) {\n var elements = [].slice.call(target.querySelectorAll(selector));\n for (var i = 0; i < elements.length; i++) {\n remove(elements[parseInt(i.toString(), 10)]);\n }\n}\n/**\n * @param {MouseEvent | TouchEvent} e Defines the mouse event\n * @returns {IPosition} Returns the position\n * @hidden\n */\nexport function getPosition(e) {\n var position = {};\n position.x = (isNullOrUndefined(e.clientX) ? e.changedTouches[0].clientX :\n e.clientX);\n position.y = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY);\n return position;\n}\nvar uid = 0;\n/**\n * @param {string} prefix - Defines the prefix string\n * @returns {string} Returns the uid\n * @hidden\n */\nexport function getUid(prefix) {\n return prefix + uid++;\n}\n/**\n * @param {Element | DocumentFragment} elem - Defines the element\n * @param {Element[] | NodeList} children - Defines the Element\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function appendChildren(elem, children) {\n for (var i = 0, len = children.length; i < len; i++) {\n if (len === children.length) {\n elem.appendChild(children[parseInt(i.toString(), 10)]);\n }\n else {\n elem.appendChild(children[0]);\n }\n }\n return elem;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the selector\n * @param {boolean} isID - Defines isID\n * @returns {Element} Return the element\n * @hidden\n */\nexport function parents(elem, selector, isID) {\n var parent = elem;\n var parents = [];\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\n/**\n * @param {AggregateType | string} type - Defines the type\n * @param {Object} data - Defines the data\n * @param {AggregateColumnModel} column - Defines the column\n * @param {Object} context - Defines the context\n * @returns {Object} Returns the calculated aggragate\n * @hidden\n */\nexport function calculateAggregate(type, data, column, context) {\n if (type === 'Custom') {\n var temp = column.customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n return temp ? temp.call(context, data, column) : '';\n }\n return (column.field in data || data instanceof Array) ? DataUtil.aggregates[type.toLowerCase()](data, column.field) : null;\n}\n/** @hidden */\nvar scrollWidth = null;\n/** @hidden\n * @returns {number} - Returns the scrollbarwidth\n */\nexport function getScrollBarWidth() {\n if (scrollWidth !== null) {\n return scrollWidth;\n }\n var divNode = document.createElement('div');\n var value = 0;\n divNode.style.cssText = 'width:100px;height: 100px;overflow: scroll;position: absolute;top: -9999px;';\n document.body.appendChild(divNode);\n value = (divNode.offsetWidth - divNode.clientWidth) | 0;\n document.body.removeChild(divNode);\n return scrollWidth = value;\n}\n/** @hidden */\nvar rowHeight;\n/**\n * @param {HTMLElement} element - Defines the element\n * @returns {number} Returns the roww height\n * @hidden\n */\nexport function getRowHeight(element) {\n if (rowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: literals.table, styles: 'visibility: hidden', attrs: { role: 'grid' } });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('td').getBoundingClientRect();\n element.removeChild(table);\n rowHeight = Math.ceil(rect.height);\n return rowHeight;\n}\n/** @hidden */\nvar actualRowHeight;\n/**\n * @param {HTMLElement} element - Defines the HTMl element\n * @returns {number} Returns the row height\n * @hidden\n */\nexport function getActualRowHeight(element) {\n if (actualRowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: literals.table, styles: 'visibility: hidden', attrs: { role: 'grid' } });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('tr').getBoundingClientRect();\n element.removeChild(table);\n return rect.height;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {boolean} - Returns is complex field\n * @hidden\n */\nexport function isComplexField(field) {\n return field.split('.').length > 1;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the get complex field ID\n * @hidden\n */\nexport function getComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/\\./g, '___');\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the parsed column field id\n * @hidden\n */\nexport function getParsedFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/[^a-zA-Z0-9_.]/g, '\\\\$&');\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the set complex field ID\n * @hidden\n */\nexport function setComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/___/g, '.');\n}\n/**\n * @param {Column} col - Defines the column\n * @param {string} type - Defines the type\n * @param {Element} elem - Defines th element\n * @returns {boolean} Returns is Editable\n * @hidden\n */\nexport function isEditable(col, type, elem) {\n var row = parentsUntil(elem, literals.row);\n var isOldRow = !row ? true : row && !row.classList.contains('e-insertedrow');\n if (type === 'beginEdit' && isOldRow) {\n if (col.isIdentity || col.isPrimaryKey || !col.allowEditing) {\n return false;\n }\n return true;\n }\n else if (type === 'add' && col.isIdentity) {\n return false;\n }\n else {\n if (isOldRow && !col.allowEditing && !col.isIdentity && !col.isPrimaryKey) {\n return false;\n }\n return true;\n }\n}\n/**\n * @param {IGrid} inst - Defines the IGrid\n * @returns {boolean} Returns is action prevent in boolean\n * @hidden\n */\nexport function isActionPrevent(inst) {\n var dlg = select('#' + inst.element.id + 'EditConfirm', inst.element);\n return inst.editSettings.mode === 'Batch' &&\n (selectAll('.e-updatedtd', inst.element).length || selectAll('.e-gridform.e-formvalidator', inst.element).length)\n && inst.editSettings.showConfirmDialog && (dlg ? dlg.classList.contains('e-popup-close') : true);\n}\n/**\n * @param {any} elem - Defines the element\n * @param {boolean} action - Defines the boolean for action\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function wrap(elem, action) {\n var clName = 'e-wrap';\n elem = elem instanceof Array ? elem : [elem];\n for (var i = 0; i < elem.length; i++) {\n if (action) {\n elem[parseInt(i.toString(), 10)].classList.add(clName);\n }\n else {\n elem[parseInt(i.toString(), 10)].classList.remove(clName);\n }\n }\n}\n/**\n * @param {ServiceLocator} serviceLocator - Defines the service locator\n * @param {Column} column - Defines the column\n * @returns {void}\n * @hidden\n */\nexport function setFormatter(serviceLocator, column) {\n var fmtr = serviceLocator.getService('valueFormatter');\n var format = 'format';\n var args;\n if (column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly') {\n args = { type: column.type === 'dateonly' ? 'date' : column.type, skeleton: column.format };\n if ((typeof (column.format) === 'string') && column.format !== 'yMd') {\n args[\"\" + format] = column.format;\n }\n }\n switch (column.type) {\n case 'date':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'dateonly':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'datetime':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'number':\n column.setFormatter(fmtr.getFormatFunction({ format: column.format }));\n column.setParser(fmtr.getParserFunction({ format: column.format }));\n break;\n }\n}\n/**\n * @param {Element} cells - Defines the cell element\n * @param {boolean} add - Defines the add\n * @param {string} args - Defines the args\n * @returns {void}\n * @hidden\n */\nexport function addRemoveActiveClasses(cells, add) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n for (var i = 0, len = cells.length; i < len; i++) {\n if (add) {\n classList(cells[parseInt(i.toString(), 10)], args.slice(), []);\n cells[parseInt(i.toString(), 10)].setAttribute('aria-selected', 'true');\n }\n else {\n classList(cells[parseInt(i.toString(), 10)], [], args.slice());\n cells[parseInt(i.toString(), 10)].removeAttribute('aria-selected');\n }\n }\n}\n/**\n * @param {string} result - Defines th string\n * @returns {string} Returns the distinct staing values\n * @hidden\n */\nexport function distinctStringValues(result) {\n var temp = {};\n var res = [];\n for (var i = 0; i < result.length; i++) {\n if (!(result[parseInt(i.toString(), 10)] in temp)) {\n res.push(result[parseInt(i.toString(), 10)].toString());\n temp[result[parseInt(i.toString(), 10)]] = 1;\n }\n }\n return res;\n}\n/**\n * @param {Element} target - Defines the target\n * @param {Dialog} dialogObj - Defines the dialog\n * @returns {void}\n * @hidden\n */\nexport function getFilterMenuPostion(target, dialogObj) {\n var elementVisible = dialogObj.element.style.display;\n dialogObj.element.style.display = 'block';\n var dlgWidth = dialogObj.width;\n var newpos = calculateRelativeBasedPosition(target, dialogObj.element);\n dialogObj.element.style.display = elementVisible;\n dialogObj.element.style.top = (newpos.top + target.getBoundingClientRect().height) - 5 + 'px';\n var leftPos = ((newpos.left - dlgWidth) + target.clientWidth);\n if (leftPos < 1) {\n dialogObj.element.style.left = (dlgWidth + leftPos) - 16 + 'px'; // right calculation\n }\n else {\n dialogObj.element.style.left = leftPos + -4 + 'px';\n }\n}\n/**\n * @param {Object} args - Defines the args\n * @param {Popup} args.popup - Defines the args for popup\n * @param {Dialog} dialogObj - Defines the dialog obj\n * @returns {void}\n * @hidden\n */\nexport function getZIndexCalcualtion(args, dialogObj) {\n args.popup.element.style.zIndex = (dialogObj.zIndex + 1).toString();\n}\n/**\n * @param {Element} elem - Defines the element\n * @returns {void}\n * @hidden\n */\nexport function toogleCheckbox(elem) {\n var span = elem.querySelector('.e-frame');\n var input = span.previousSibling;\n if (span.classList.contains('e-check')) {\n input.checked = false;\n classList(span, ['e-uncheck'], ['e-check']);\n }\n else {\n input.checked = true;\n classList(span, ['e-check'], ['e-uncheck']);\n }\n}\n/**\n * @param {HTMLInputElement} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nexport function setChecked(elem, checked) {\n elem.checked = checked;\n}\n/**\n * @param {string} uid - Defines the string\n * @param {Element} elem - Defines the Element\n * @param {string} className - Defines the classname\n * @returns {Element} Returns the box wrap\n * @hidden\n */\nexport function createCboxWithWrap(uid, elem, className) {\n var div = createElement('div', { className: className });\n div.appendChild(elem);\n div.setAttribute('uid', uid);\n return div;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nexport function removeAddCboxClasses(elem, checked) {\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n if (checked) {\n elem.classList.add('e-check');\n }\n else {\n elem.classList.add('e-uncheck');\n }\n}\n/**\n * Refresh the Row model's foreign data.\n *\n * @param {IRow} row - Grid Row model object.\n * @param {Column[]} columns - Foreign columns array.\n * @param {Object} data - Updated Row data.\n * @returns {void}\n * @hidden\n */\nexport function refreshForeignData(row, columns, data) {\n for (var i = 0; i < columns.length; i++) {\n setValue(columns[parseInt(i.toString(), 10)].field, getForeignData(columns[parseInt(i.toString(), 10)], data), row.foreignKeyData);\n }\n var cells = row.cells;\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].isForeignKey) {\n setValue('foreignKeyData', getValue(cells[parseInt(i.toString(), 10)].column.field, row.foreignKeyData), cells[parseInt(i.toString(), 10)]);\n }\n }\n}\n/**\n * Get the foreign data for the corresponding cell value.\n *\n * @param {Column} column - Foreign Key column\n * @param {Object} data - Row data.\n * @param {string | number} lValue - cell value.\n * @param {Object} foreignKeyData - foreign data source.\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getForeignData(column, data, lValue, foreignKeyData) {\n var fField = column.foreignKeyField;\n var key = (!isNullOrUndefined(lValue) ? lValue : valueAccessor(column.field, data, column));\n key = isNullOrUndefined(key) ? '' : key;\n var query = new Query();\n var fdata = foreignKeyData || ((column.dataSource instanceof DataManager) && column.dataSource.dataSource.json.length ?\n column.dataSource.dataSource.json : column.columnData);\n if (key.getDay) {\n query.where(getDatePredicate({ field: fField, operator: 'equal', value: key, matchCase: false }));\n }\n else {\n query.where(fField, '==', key, false);\n }\n return new DataManager(fdata).executeLocal(query);\n}\n/**\n * To use to get the column's object by the foreign key value.\n *\n * @param {string} foreignKeyValue - Defines ForeignKeyValue.\n * @param {Column[]} columns - Array of column object.\n * @returns {Column} Returns the element\n * @hidden\n */\nexport function getColumnByForeignKeyValue(foreignKeyValue, columns) {\n var column;\n return columns.some(function (col) {\n column = col;\n return col.foreignKeyValue === foreignKeyValue;\n }) && column;\n}\n/**\n * @param {number} value - Defines the date or month value\n * @returns {string} Returns string\n * @hidden\n */\nexport function padZero(value) {\n if (value < 10) {\n return '0' + value;\n }\n return String(value);\n}\n/**\n * @param {PredicateModel} filterObject - Defines the filterObject\n * @param {string} type - Defines the type\n * @param {boolean} isExecuteLocal - Defines whether the data actions performed in client and used for dateonly type field\n * @returns {Predicate} Returns the Predicate\n * @hidden\n */\nexport function getDatePredicate(filterObject, type, isExecuteLocal) {\n var datePredicate;\n var prevDate;\n var nextDate;\n var prevObj = baseExtend({}, getActualProperties(filterObject));\n var nextObj = baseExtend({}, getActualProperties(filterObject));\n if (isNullOrUndefined(filterObject.value) || filterObject.value === '') {\n datePredicate = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n return datePredicate;\n }\n var value = new Date(filterObject.value);\n if (type === 'dateonly' && !isExecuteLocal) {\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var dateOnlyString = prevObj.value.getFullYear() + '-' + padZero(prevObj.value.getMonth() + 1) + '-' + padZero(prevObj.value.getDate());\n var predicates = new Predicate(prevObj.field, prevObj.operator, dateOnlyString, false);\n datePredicate = predicates;\n }\n else {\n if (filterObject.operator === 'equal' || filterObject.operator === 'notequal') {\n if (type === 'datetime') {\n prevDate = new Date(value.setSeconds(value.getSeconds() - 1));\n nextDate = new Date(value.setSeconds(value.getSeconds() + 2));\n filterObject.value = new Date(value.setSeconds(nextDate.getSeconds() - 1));\n }\n else {\n prevDate = new Date(value.setHours(0) - 1);\n nextDate = new Date(value.setHours(24));\n }\n prevObj.value = prevDate;\n nextObj.value = nextDate;\n if (filterObject.operator === 'equal') {\n prevObj.operator = 'greaterthan';\n nextObj.operator = 'lessthan';\n }\n else if (filterObject.operator === 'notequal') {\n prevObj.operator = 'lessthanorequal';\n nextObj.operator = 'greaterthanorequal';\n }\n var predicateSt = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n var predicateEnd = new Predicate(nextObj.field, nextObj.operator, nextObj.value, false);\n datePredicate = filterObject.operator === 'equal' ? predicateSt.and(predicateEnd) : predicateSt.or(predicateEnd);\n }\n else {\n if (type === 'date' && (filterObject.operator === 'lessthanorequal' || filterObject.operator === 'greaterthan')) {\n prevObj.value = new Date(value.setHours(24) - 1);\n }\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var predicates = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n datePredicate = predicates;\n }\n }\n if (filterObject.setProperties) {\n filterObject.setProperties({ ejpredicate: datePredicate }, true);\n }\n else {\n filterObject.ejpredicate = datePredicate;\n }\n return datePredicate;\n}\n/**\n * @param {IGrid} grid - Defines the IGrid\n * @returns {boolean} Returns true if group adaptive is true\n * @hidden\n */\nexport function isGroupAdaptive(grid) {\n return grid.enableVirtualization && grid.groupSettings.columns.length > 0 && grid.isVirtualAdaptive &&\n !grid.groupSettings.enableLazyLoading;\n}\n/**\n * @param {string} field - Defines the Field\n * @param {Object} object - Defines the objec\n * @returns {any} Returns the object\n * @hidden\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getObject(field, object) {\n if (field === void 0) { field = ''; }\n if (field) {\n var value = object;\n var splits = field.split('.');\n for (var i = 0; i < splits.length && !isNullOrUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n if (isUndefined(value)) {\n var newCase = splits[parseInt(i.toString(), 10)].charAt(0).toUpperCase()\n + splits[parseInt(i.toString(), 10)].slice(1);\n value = object[\"\" + newCase] || object[(\"\" + newCase).charAt(0).toLowerCase() + (\"\" + newCase).slice(1)];\n }\n }\n return value;\n }\n}\n/**\n * @param {string | Object} format - defines the format\n * @param {string} colType - Defines the coltype\n * @returns {string} Returns the custom Data format\n * @hidden\n */\nexport function getCustomDateFormat(format, colType) {\n var intl = new Internationalization();\n var formatvalue;\n var formatter = 'format';\n var type = 'type';\n if (colType === 'date') {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[\"\" + type] ? format[\"\" + type] : 'date', format: format[\"\" + formatter] }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n else {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[\"\" + type] ? format[\"\" + type] : 'dateTime', format: format[\"\" + formatter] }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n return formatvalue;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getExpandedState(gObj, hierarchyPrintMode) {\n var rows = gObj.getRowsObject();\n var obj = {};\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.isExpand && !row.isDetailRow) {\n var index = gObj.allowPaging && gObj.printMode === 'AllPages' ? row.index +\n (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize : row.index;\n if (!isNullOrUndefined(index)) {\n obj[parseInt(index.toString(), 10)] = {};\n obj[parseInt(index.toString(), 10)].isExpand = true;\n if (gObj.childGrid) {\n obj[parseInt(index.toString(), 10)].gridModel = getPrintGridModel(row.childGrid, hierarchyPrintMode);\n obj[parseInt(index.toString(), 10)].gridModel.query = gObj.childGrid.query;\n }\n }\n }\n }\n return obj;\n}\n/**\n * @param {IGrid} gObj - Defines the grid objct\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {IGrid} Returns the IGrid\n * @hidden\n */\nexport function getPrintGridModel(gObj, hierarchyPrintMode) {\n if (hierarchyPrintMode === void 0) { hierarchyPrintMode = 'Expanded'; }\n var printGridModel = {};\n if (!gObj) {\n return printGridModel;\n }\n for (var _i = 0, _a = Print.printGridProp; _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'columns') {\n printGridModel[\"\" + key] = getActualPropFromColl(gObj.getColumns());\n }\n else if (key === 'allowPaging') {\n printGridModel[\"\" + key] = gObj.printMode === 'CurrentPage';\n }\n else {\n printGridModel[\"\" + key] = getActualProperties(gObj[\"\" + key]);\n }\n }\n printGridModel['enableHover'] = false;\n if ((gObj.childGrid || gObj.detailTemplate) && hierarchyPrintMode !== 'None') {\n printGridModel.expandedRows = getExpandedState(gObj, hierarchyPrintMode);\n }\n return printGridModel;\n}\n/**\n * @param {Object} copied - Defines the copied object\n * @param {Object} first - Defines the first object\n * @param {Object} second - Defines the second object\n * @param {boolean} deep - Defines the deep\n * @returns {Object} Returns the extended object\n * @hidden\n */\nexport function extendObjWithFn(copied, first, second, deep) {\n var res = copied || {};\n var len = arguments.length;\n if (deep) {\n len = len - 1;\n }\n for (var i = 1; i < len; i++) {\n // eslint-disable-next-line prefer-rest-params\n if (!arguments[parseInt(i.toString(), 10)]) {\n continue;\n }\n // eslint-disable-next-line prefer-rest-params\n var obj1 = arguments[parseInt(i.toString(), 10)];\n var keys = Object.keys(Object.getPrototypeOf(obj1)).length ?\n Object.keys(obj1).concat(getPrototypesOfObj(obj1)) : Object.keys(obj1);\n for (var i_1 = 0; i_1 < keys.length; i_1++) {\n var source = res[keys[parseInt(i_1.toString(), 10)]];\n var cpy = obj1[keys[parseInt(i_1.toString(), 10)]];\n var cln = void 0;\n if (deep && (isObject(cpy) || Array.isArray(cpy))) {\n if (isObject(cpy)) {\n cln = source ? source : {};\n res[keys[parseInt(i_1.toString(), 10)]] = baseExtend({}, cln, cpy, deep);\n }\n else {\n cln = source ? source : [];\n res[keys[parseInt(i_1.toString(), 10)]] = baseExtend([], cln, cpy, deep);\n }\n }\n else {\n res[keys[parseInt(i_1.toString(), 10)]] = cpy;\n }\n }\n }\n return res;\n}\n/**\n * @param {Object} obj - Defines the obj\n * @returns {string[]} Returns the string\n * @hidden\n */\nfunction getPrototypesOfObj(obj) {\n var keys = [];\n while (Object.getPrototypeOf(obj) && Object.keys(Object.getPrototypeOf(obj)).length) {\n keys = keys.concat(Object.keys(Object.getPrototypeOf(obj)));\n obj = Object.getPrototypeOf(obj);\n }\n return keys;\n}\n/**\n * @param {Column[]} column - Defines the Column\n * @returns {number} Returns the column Depth\n * @hidden\n */\nexport function measureColumnDepth(column) {\n var max = 0;\n for (var i = 0; i < column.length; i++) {\n var depth = checkDepth(column[parseInt(i.toString(), 10)], 0);\n if (max < depth) {\n max = depth;\n }\n }\n return max + 1;\n}\n/**\n * @param {Column} col - Defines the Column\n * @param {number} index - Defines the index\n * @returns {number} Returns the depth\n * @hidden\n */\nexport function checkDepth(col, index) {\n var max = index;\n var indices = [];\n if (col.columns) {\n index++;\n for (var i = 0; i < col.columns.length; i++) {\n indices[parseInt(i.toString(), 10)] = checkDepth(col.columns[parseInt(i.toString(), 10)], index);\n }\n for (var j = 0; j < indices.length; j++) {\n if (max < indices[parseInt(j.toString(), 10)]) {\n max = indices[parseInt(j.toString(), 10)];\n }\n }\n index = max;\n }\n return index;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {PredicateModel[]} filteredCols - Defines the PredicateModel\n * @returns {void}\n * @hidden\n */\nexport function refreshFilteredColsUid(gObj, filteredCols) {\n for (var i = 0; i < filteredCols.length; i++) {\n filteredCols[parseInt(i.toString(), 10)].uid = filteredCols[parseInt(i.toString(), 10)].isForeignKey ?\n getColumnByForeignKeyValue(filteredCols[parseInt(i.toString(), 10)].field, gObj.getForeignKeyColumns()).uid\n : gObj.enableColumnVirtualization ? getColumnModelByFieldName(gObj, filteredCols[parseInt(i.toString(), 10)].field).uid\n : gObj.getColumnByField(filteredCols[parseInt(i.toString(), 10)].field).uid;\n }\n}\n/** @hidden */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Global;\n(function (Global) {\n // eslint-disable-next-line prefer-const\n Global.timer = null;\n})(Global || (Global = {}));\n/**\n * @param {Element} element - Defines the element\n * @returns {Object} Returns the transform values\n * @hidden\n */\nexport function getTransformValues(element) {\n var style = document.defaultView.getComputedStyle(element, null);\n var transformV = style.getPropertyValue('transform');\n var replacedTv = transformV.replace(/,/g, '');\n var translateX = parseFloat((replacedTv).split(' ')[4]);\n var translateY = parseFloat((replacedTv).split(' ')[5]);\n return { width: translateX, height: translateY };\n}\n/**\n * @param {Element} rootElement - Defines the root Element\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\nexport function applyBiggerTheme(rootElement, element) {\n if (rootElement.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n}\n/**\n * @param {IGrid} gObj - Defines grid object\n * @returns {number} - Returns scroll width\n * @hidden\n */\nexport function getScrollWidth(gObj) {\n var scrollElem = gObj.getContent().firstElementChild;\n return scrollElem.scrollWidth > scrollElem.offsetWidth ? getScrollBarWidth() : 0;\n}\n/**\n * @param {IGrid} gObj - Defines grid object\n * @param {number} idx - Defines the index\n * @returns {number} Returns colSpan index\n * @hidden\n */\nexport function resetColspanGroupCaption(gObj, idx) {\n var colspan = 0;\n var cols = gObj.getColumns();\n var width = idx * 30;\n if (gObj.isRowDragable()) {\n colspan++;\n width += 30;\n }\n colspan += (gObj.groupSettings.columns.length - idx);\n width += (30 * (gObj.groupSettings.columns.length - idx));\n var gridWidth = (gObj.width === 'auto' ? gObj.element.offsetWidth : parseInt(gObj.width.toString(), 10)) -\n getScrollWidth(gObj);\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseInt(cols[parseInt(i.toString(), 10)].width.toString(), 10);\n colspan++;\n }\n if (width > gridWidth) {\n colspan--;\n break;\n }\n }\n return colspan;\n}\n/**\n * @param {HTMLElement} tr - Defines the tr Element\n * @param {IGrid} gObj - Defines grid object\n * @returns {void}\n * @hidden\n */\nexport function groupCaptionRowLeftRightPos(tr, gObj) {\n var width = 0;\n for (var j = 0; j < tr.childNodes.length; j++) {\n var td = tr.childNodes[parseInt(j.toString(), 10)];\n td.classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td, width, gObj.enableRtl, 'Left');\n if (td.classList.contains('e-indentcell') || td.classList.contains('e-recordplusexpand') ||\n td.classList.contains('e-recordpluscollapse')) {\n width += 30;\n }\n if (td.classList.contains('e-groupcaption')) {\n var colspan = parseInt(td.getAttribute('colspan'), 10);\n if (gObj.isRowDragable()) {\n colspan--;\n width += 30;\n }\n colspan = colspan - (gObj.groupSettings.columns.length - j);\n width = width + (30 * (gObj.groupSettings.columns.length - j));\n var cols = gObj.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if ((parseInt(td.getAttribute('colspan'), 10) > 1) &&\n (parseInt(cols[parseInt(i.toString(), 10)].width.toString(), 10)\n + width) > (parseInt(gObj.width.toString(), 10) - getScrollWidth(gObj))) {\n var newColspan = resetColspanGroupCaption(gObj, j);\n td.setAttribute('colspan', newColspan.toString());\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseInt(cols[parseInt(i.toString(), 10)].width.toString(), 10);\n colspan--;\n }\n if (colspan === 0) {\n break;\n }\n }\n }\n if (td.classList.contains('e-summarycell')) {\n var uid_1 = td.getAttribute('e-mappinguid');\n var column = gObj.getColumnByUid(uid_1);\n width += parseInt(column.width.toString(), 10);\n }\n }\n}\n/**\n * @param {Element} row - Defines row element\n * @param {IGrid} gridObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nexport function ensureLastRow(row, gridObj) {\n var content = gridObj.getContent().firstElementChild;\n return row && (row.getBoundingClientRect().top - content.getBoundingClientRect().top +\n gridObj.getRowHeight()) > content.offsetHeight;\n}\n/**\n * @param {Element} row - Defines row element\n * @param {number} rowTop - Defines row top number\n * @returns {boolean} Returns first row is true\n * @hidden\n */\nexport function ensureFirstRow(row, rowTop) {\n return row && row.getBoundingClientRect().top < rowTop;\n}\n/**\n * @param {number} index - Defines index\n * @param {IGrid} gObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nexport function isRowEnteredInGrid(index, gObj) {\n var rowHeight = gObj.getRowHeight();\n var startIndex = gObj.getContent().firstElementChild.scrollTop / rowHeight;\n var endIndex = startIndex + (gObj.getContent().firstElementChild.offsetHeight / rowHeight);\n return index < endIndex && index > startIndex;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} data - Defines the query\n * @returns {number} Returns the edited data index\n * @hidden\n */\nexport function getEditedDataIndex(gObj, data) {\n var keyField = gObj.getPrimaryKeyFieldNames()[0];\n var dataIndex;\n gObj.getCurrentViewRecords().filter(function (e, index) {\n if (keyField.includes('.')) {\n var currentValue = getObject(keyField, e);\n var originalValue = getObject(keyField, data);\n if (currentValue === originalValue) {\n dataIndex = index;\n }\n }\n else {\n if (e[\"\" + keyField] === data[\"\" + keyField]) {\n dataIndex = index;\n }\n }\n });\n return dataIndex;\n}\n/**\n * @param {Object} args - Defines the argument\n * @param {Query} query - Defines the query\n * @returns {FilterStateObj} Returns the filter state object\n * @hidden\n */\nexport function eventPromise(args, query) {\n var state = getStateEventArgument(query);\n var def = new Deferred();\n state.dataSource = def.resolve;\n state.action = args;\n return { state: state, deffered: def };\n}\n/**\n * @param {Query} query - Defines the query\n * @returns {Object} Returns the state event argument\n * @hidden\n */\nexport function getStateEventArgument(query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return data;\n}\n/**\n * @param {IGrid} gObj - Defines the Igrid\n * @returns {boolean} Returns the ispercentageWidth\n * @hidden\n */\nexport function ispercentageWidth(gObj) {\n var columns = gObj.getVisibleColumns();\n var percentageCol = 0;\n var undefinedWidthCol = 0;\n for (var i = 0; i < columns.length; i++) {\n if (isUndefined(columns[parseInt(i.toString(), 10)].width)) {\n undefinedWidthCol++;\n }\n else if (columns[parseInt(i.toString(), 10)].width.toString().indexOf('%') !== -1) {\n percentageCol++;\n }\n }\n return (gObj.width === 'auto' || typeof (gObj.width) === 'string' && gObj.width.indexOf('%') !== -1) &&\n !gObj.groupSettings.showGroupedColumn && gObj.groupSettings.columns.length\n && percentageCol && !undefinedWidthCol;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {Row[]} rows - Defines the row\n * @param {HTMLTableRowElement[]} rowElms - Row elements\n * @param {number} index - Row index\n * @param {number} startRowIndex - Start Row Index\n * @returns {void}\n * @hidden\n */\nexport function resetRowIndex(gObj, rows, rowElms, index, startRowIndex) {\n var startIndex = index ? index : 0;\n for (var i = startRowIndex ? startRowIndex : 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)] && rows[parseInt(i.toString(), 10)].isDataRow) {\n rows[parseInt(i.toString(), 10)].index = startIndex;\n rows[parseInt(i.toString(), 10)].isAltRow = gObj.enableAltRow ? startIndex % 2 !== 0 : false;\n rowElms[parseInt(i.toString(), 10)].setAttribute(literals.dataRowIndex, startIndex.toString());\n rowElms[parseInt(i.toString(), 10)].setAttribute(literals.ariaRowIndex, (startIndex + 1).toString());\n if (rows[parseInt(i.toString(), 10)].isAltRow) {\n rowElms[parseInt(i.toString(), 10)].classList.add('e-altrow');\n }\n else {\n rowElms[parseInt(i.toString(), 10)].classList.remove('e-altrow');\n }\n for (var j = 0; j < rowElms[parseInt(i.toString(), 10)].cells.length; j++) {\n rowElms[parseInt(i.toString(), 10)].cells[parseInt(j.toString(), 10)].setAttribute('index', startIndex.toString());\n }\n startIndex++;\n }\n }\n if (!rows.length) {\n gObj.renderModule.emptyRow(true);\n }\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @returns {void}\n * @hidden\n */\nexport function resetCachedRowIndex(gObj) {\n var rowObjects = gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings.enableCache ?\n gObj.getRowsObject() : gObj.vRows;\n var rowElements = gObj.getRows();\n for (var i = 0, startIndex = 0, k = 0; i < rowObjects.length; i++) {\n var rowObject = rowObjects[parseInt(i.toString(), 10)];\n if (rowObject.isDataRow) {\n rowObject.index = startIndex;\n rowObject.isAltRow = gObj.enableAltRow ? startIndex % 2 !== 0 : false;\n var rowElement = gObj.getRowElementByUID(rowObject.uid);\n if (!isNullOrUndefined(rowElement)) {\n rowElements[parseInt(k.toString(), 10)] = rowElement;\n rowElement.setAttribute(literals.dataRowIndex, startIndex.toString());\n rowElement.setAttribute(literals.ariaRowIndex, (startIndex + 1).toString());\n if (rowObject.isAltRow) {\n rowElement.classList.add('e-altrow');\n }\n else {\n rowElement.classList.remove('e-altrow');\n }\n for (var j = 0; j < rowElement.cells.length; j++) {\n rowElement.cells[parseInt(j.toString(), 10)].setAttribute('index', startIndex.toString());\n }\n k++;\n }\n startIndex++;\n }\n }\n if (gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings.enableCache) {\n gObj.infiniteScrollModule.resetInfiniteCache(rowObjects);\n }\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {RowDropEventArgs} args - Defines the row drop event argument\n * @param {HTMLTableRowElement[]} tr - Row elements\n * @param {Row} dropRObj - dropped row object\n * @returns {void}\n * @hidden\n */\nexport function groupReorderRowObject(gObj, args, tr, dropRObj) {\n var rowObjects = gObj.enableVirtualization ? gObj.vRows : gObj.getRowsObject();\n var orderChangeRowObjects = [];\n var dropRowObject = dropRObj ? dropRObj :\n gObj.getRowObjectFromUID(args.target.closest('tr').getAttribute('data-uid'));\n var rowObjectDropIndex;\n for (var i = 0; i < args.rows.length; i++) {\n var orderChangeRowObject = gObj.getRowObjectFromUID(args.rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n if (dropRowObject === orderChangeRowObject) {\n rowObjectDropIndex = rowObjects.indexOf(dropRowObject);\n }\n orderChangeRowObjects.push(rowObjects.splice(rowObjects.indexOf(orderChangeRowObject), 1)[0]);\n }\n if (isNullOrUndefined(rowObjectDropIndex)) {\n rowObjectDropIndex = rowObjects.indexOf(dropRowObject);\n if (args.fromIndex > args.dropIndex) {\n rowObjects.splice.apply(rowObjects, [rowObjectDropIndex, 0].concat(orderChangeRowObjects));\n }\n else {\n rowObjects.splice.apply(rowObjects, [rowObjectDropIndex + 1, 0].concat(orderChangeRowObjects));\n }\n }\n else {\n rowObjects.splice.apply(rowObjects, [rowObjectDropIndex, 0].concat(orderChangeRowObjects));\n }\n if (!gObj.enableVirtualization && !gObj.infiniteScrollSettings.enableCache) {\n var record = {};\n var currentViewData = gObj.getCurrentViewRecords();\n for (var i = 0, len = tr.length; i < len; i++) {\n var index = parseInt(tr[parseInt(i.toString(), 10)].getAttribute(literals.dataRowIndex), 10);\n record[parseInt(i.toString(), 10)] = currentViewData[parseInt(index.toString(), 10)];\n }\n var rows = gObj.getRows();\n for (var i = 0, len = tr.length; i < len; i++) {\n rows[parseInt(i.toString(), 10)] = tr[parseInt(i.toString(), 10)];\n currentViewData[parseInt(i.toString(), 10)] = record[parseInt(i.toString(), 10)];\n }\n }\n if (gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings.enableCache) {\n gObj.infiniteScrollModule.resetInfiniteCache(rowObjects);\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} changes - Defines the changes\n * @param {string} type - Defines the type\n * @param {string} keyField - Defines the keyfield\n * @returns {void}\n * @hidden\n */\nexport function compareChanges(gObj, changes, type, keyField) {\n var newArray = gObj.dataToBeUpdated[\"\" + type].concat(changes[\"\" + type]).reduce(function (r, o) {\n r[o[\"\" + keyField]] = r[o[\"\" + keyField]] === undefined ? o : Object.assign(r[o[\"\" + keyField]], o);\n return r;\n }, {});\n gObj.dataToBeUpdated[\"\" + type] = Object.keys(newArray).map(function (k) { return newArray[\"\" + k]; });\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nexport function setRowElements(gObj) {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-row:not(.e-addedrow):not(.e-cloneproperties .e-row)'));\n}\n/**\n * @param {Element} row - Defines the row\n * @param {number} start - Defines the start index\n * @param {number} end - Defines the end index\n * @returns {void}\n * @hidden\n */\nexport function sliceElements(row, start, end) {\n var cells = row.children;\n var len = cells.length;\n var k = 0;\n for (var i = 0; i < len; i++, k++) {\n if (i >= start && i < end) {\n continue;\n }\n row.removeChild(row.children[parseInt(k.toString(), 10)]);\n k--;\n }\n}\n/**\n * @param {Column} column - Defines the column\n * @param {string} uid - Defines the uid\n * @returns {boolean} Returns is child column\n * @hidden\n */\nexport function isChildColumn(column, uid) {\n var uids = [];\n uids.push(column.uid);\n pushuid(column, uids);\n if (uids.indexOf(uid) > -1) {\n return true;\n }\n else {\n return false;\n }\n}\n/**\n * @param {Column} column - Defines the column\n * @param {string[]} uids - Defines the uid\n * @returns {void}\n * @hidden\n */\nexport function pushuid(column, uids) {\n for (var i = 0; i < column.columns.length; i++) {\n if (column.columns[parseInt(i.toString(), 10)].uid) {\n uids.push(column.columns[parseInt(i.toString(), 10)].uid);\n }\n if (column.columns[parseInt(i.toString(), 10)].columns &&\n column.columns[parseInt(i.toString(), 10)].columns.length) {\n pushuid(column.columns[parseInt(i.toString(), 10)], uids);\n }\n }\n}\n/**\n * @param {Column} column - Defines the column\n * @returns {string} Returns the direction\n * @hidden\n */\nexport function frozenDirection(column) {\n if (column.columns[0].freeze || column.columns[0].isFrozen) {\n if (column.columns[0].freeze === 'Left' || column.columns[0].isFrozen) {\n return 'Left';\n }\n else if (column.columns[0].freeze === 'Right') {\n return 'Right';\n }\n else if (column.columns[0].freeze === 'Fixed') {\n return 'Fixed';\n }\n else {\n return 'None';\n }\n }\n else {\n if (column.columns[0].columns && column.columns[0].columns.length) {\n return frozenDirection(column.columns[0]);\n }\n else {\n return 'None';\n }\n }\n}\n/**\n * @param {Element} row - Defines the row\n * @returns {void}\n * @hidden\n */\nexport function addFixedColumnBorder(row) {\n if (row.querySelector('.e-fixedfreeze')) {\n var cells = [].slice.call(row.querySelectorAll('.e-filterbarcell:not(.e-hide),.e-summarycell:not(.e-hide),.e-headercell:not(.e-hide),.e-rowcell:not(.e-hide)'));\n for (var j = 0; j < cells.length; j++) {\n if (cells[parseInt(j.toString(), 10)].classList.contains('e-fixedfreeze') && (!(cells[j - 1]) ||\n (cells[j - 1] && !cells[j - 1].classList.contains('e-fixedfreeze')))) {\n cells[parseInt(j.toString(), 10)].classList.add('e-freezeleftborder');\n }\n if (cells[parseInt(j.toString(), 10)].classList.contains('e-fixedfreeze') && (!(cells[j + 1]) ||\n (cells[j + 1] && !cells[j + 1].classList.contains('e-fixedfreeze')))) {\n cells[parseInt(j.toString(), 10)].classList.add('e-freezerightborder');\n }\n }\n }\n}\n/**\n * @param {HTMLElement} node - Defines the row\n * @param {number} width - Defines the width\n * @param {boolean} isRtl - Boolean property\n * @param {string} position - Defines the position\n * @returns {void}\n * @hidden\n */\nexport function applyStickyLeftRightPosition(node, width, isRtl, position) {\n if (position === 'Left') {\n if (isRtl) {\n node.style.right = width + 'px';\n }\n else {\n node.style.left = width + 'px';\n }\n }\n if (position === 'Right') {\n if (isRtl) {\n node.style.left = width + 'px';\n }\n else {\n node.style.right = width + 'px';\n }\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @param {Column} column - Defines the column\n * @param {Element} node - Defines the Element\n * @param {number} colSpan - Defines the colSpan value\n * @returns {void}\n * @hidden\n */\nexport function resetColandRowSpanStickyPosition(gObj, column, node, colSpan) {\n var columns = gObj.getColumns();\n var index = column.index;\n if (column.freeze === 'Left' && column.border !== 'Left') {\n var idx = index + (colSpan - 1);\n while (columns[parseInt(idx.toString(), 10)].visible === false) {\n idx++;\n }\n if (columns[parseInt(idx.toString(), 10)].border === 'Left') {\n node.classList.add('e-freezeleftborder');\n }\n }\n else if (column.freeze === 'Right' || column.freeze === 'Fixed') {\n var width = 0;\n for (var j = index + 1; j < index + colSpan; j++) {\n if (j === columns.length) {\n break;\n }\n if (columns[parseInt(j.toString(), 10)].visible) {\n width += parseInt(columns[parseInt(j.toString(), 10)].width.toString(), 10);\n }\n else {\n colSpan++;\n }\n }\n if (gObj.enableRtl) {\n node.style.left = parseInt(node.style.left, 10) - width + 'px';\n }\n else {\n node.style.right = parseInt(node.style.right, 10) - width + 'px';\n }\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @param {number} rowIndex - Defines the row index\n * @param {number} colIndex - Defines the colum index\n * @returns {void}\n * @hidden\n */\nexport function getCellFromRow(gObj, rowIndex, colIndex) {\n var row = (gObj.getRowByIndex(rowIndex));\n for (var i = 0; i < row.cells.length; i++) {\n if (row.cells[parseInt(i.toString(), 10)].getAttribute('data-colindex') === colIndex.toString()) {\n return row.cells[parseInt(i.toString(), 10)];\n }\n }\n return null;\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @param {Column} column - Defines the column\n * @param {Element} node - Defines the Element\n * @returns {void}\n * @hidden\n */\nexport function addStickyColumnPosition(gObj, column, node) {\n if (column.freeze === 'Left' || column.isFrozen) {\n node.classList.add('e-leftfreeze');\n if (column.border === 'Left') {\n node.classList.add('e-freezeleftborder');\n }\n if (column.index === 0) {\n applyStickyLeftRightPosition(node, (gObj.getIndentCount() * 30), gObj.enableRtl, 'Left');\n if (gObj.enableColumnVirtualization) {\n column.valueX = (gObj.getIndentCount() * 30);\n }\n }\n else {\n var cols = gObj.getColumns();\n var width = gObj.getIndentCount() * 30;\n for (var i = 0; i < cols.length; i++) {\n if (column.uid === cols[parseInt(i.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, gObj.enableRtl, 'Left');\n if (gObj.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n }\n else if (column.freeze === 'Right') {\n node.classList.add('e-rightfreeze');\n var cols = gObj.getColumns();\n if (column.border === 'Right') {\n node.classList.add('e-freezerightborder');\n }\n if (column.index === cols[cols.length - 1].index) {\n var width = gObj.getFrozenMode() === 'Right' && gObj.isRowDragable() ? 30 : 0;\n applyStickyLeftRightPosition(node, width, gObj.enableRtl, 'Right');\n if (gObj.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n else {\n var width = gObj.getFrozenMode() === 'Right' && gObj.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (column.uid === cols[parseInt(i.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, gObj.enableRtl, 'Right');\n if (gObj.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n }\n else if (column.freeze === 'Fixed') {\n node.classList.add('e-fixedfreeze');\n var cols = gObj.getColumns();\n var width = 0;\n if (gObj.getVisibleFrozenLeftCount()) {\n width = gObj.getIndentCount() * 30;\n }\n else if (gObj.getFrozenMode() === 'Right') {\n width = gObj.groupSettings.columns.length * 30;\n }\n for (var i = 0; i < cols.length; i++) {\n if (column.uid === cols[parseInt(i.toString(), 10)].uid) {\n break;\n }\n if ((cols[parseInt(i.toString(), 10)].freeze === 'Left' || cols[parseInt(i.toString(), 10)].isFrozen) ||\n cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n applyStickyLeftRightPosition(node, (width - 1), gObj.enableRtl, 'Left');\n width = gObj.getFrozenMode() === 'Right' && gObj.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (column.uid === cols[parseInt(i.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].freeze === 'Right' || cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n applyStickyLeftRightPosition(node, (width - 1), gObj.enableRtl, 'Right');\n }\n else {\n node.classList.add('e-unfreeze');\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid Object\n * @param {Column} col - Defines the column\n * @param {number} rowIndex - Defines the rowindex\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function getCellsByTableName(gObj, col, rowIndex) {\n return [].slice.call(gObj.getDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell));\n}\n/**\n * @param {IGrid} gObj - Defines the column\n * @param {Column} col - Defines the index\n * @param {number} rowIndex - Defines the rules\n * @param {number} index - Defines the movable column rules\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getCellByColAndRowIndex(gObj, col, rowIndex, index) {\n return getCellsByTableName(gObj, col, rowIndex)[parseInt(index.toString(), 10)];\n}\n/**\n * @param {Column} col - Defines the column\n * @param {number} index - Defines the index\n * @param {Object} rules - Defines the rules\n * @param {Object} mRules - Defines the movable column rules\n * @param {Object} frRules - Defines the Frozen rules\n * @param {number} len - Defines the length\n * @param {boolean} isCustom - Defines custom form validation\n * @returns {void}\n * @hidden\n */\nexport function setValidationRuels(col, index, rules, mRules, frRules, len, isCustom) {\n if (isCustom) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else {\n if (col.getFreezeTableName() === literals.frozenLeft\n || (!index && col.getFreezeTableName() === literals.frozenRight) || len === 1) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === 'movable' || !col.getFreezeTableName()) {\n mRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n frRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n }\n}\n/**\n * @param {string} numberFormat - Format\n * @param {string} type - Value type\n * @param {boolean} isExcel - Boolean property\n * @param {string} currencyCode - Specifies the currency code to be used for formatting.\n * @returns {string} returns formated value\n * @hidden\n */\nexport function getNumberFormat(numberFormat, type, isExcel, currencyCode) {\n var format;\n var intl = new Internationalization();\n if (type === 'number') {\n try {\n format = intl.getNumberPattern({ format: numberFormat, currency: currencyCode, useGrouping: true }, true);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n else if (type === 'date' || type === 'time' || type === 'datetime') {\n try {\n format = intl.getDatePattern({ skeleton: numberFormat, type: type }, isExcel);\n if (isNullOrUndefined(format)) {\n // eslint-disable-next-line\n throw 'error';\n }\n }\n catch (error) {\n try {\n format = intl.getDatePattern({ format: numberFormat, type: type }, isExcel);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n }\n else {\n format = numberFormat;\n }\n if (type !== 'number') {\n var patternRegex = /G|H|c|'| a|yy|y|EEEE|E/g;\n var mtch_1 = { 'G': '', 'H': 'h', 'c': 'd', '\\'': '\"', ' a': ' AM/PM', 'yy': 'yy', 'y': 'yyyy', 'EEEE': 'dddd', 'E': 'ddd' };\n format = format.replace(patternRegex, function (pattern) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return mtch_1[\"\" + pattern];\n });\n }\n return format;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @returns {void}\n * @hidden\n */\nexport function addBiggerDialog(gObj) {\n if (gObj.enableAdaptiveUI) {\n var dialogs = document.getElementsByClassName('e-responsive-dialog');\n for (var i = 0; i < dialogs.length; i++) {\n dialogs[parseInt(i.toString(), 10)].classList.add('e-bigger');\n }\n }\n}\n/**\n * @param {string} value - specifies the trr\n * @param {Object} mapObject - specifies the idx\n * @returns {Object | string} returns object or string\n * @hidden\n */\nexport function performComplexDataOperation(value, mapObject) {\n var returnObj;\n var length = value.split('.').length;\n var splits = value.split('.');\n var duplicateMap = mapObject;\n for (var i = 0; i < length; i++) {\n returnObj = duplicateMap[splits[parseInt(i.toString(), 10)]];\n duplicateMap = returnObj;\n }\n return returnObj;\n}\n/**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row} rows - specifies the rows\n * @param {IGrid} parent - Grid instance\n * @param {boolean} isContent - check for content renderer\n * @returns {void}\n * @hidden\n */\nexport function setDisplayValue(tr, idx, displayVal, rows, parent, isContent) {\n var trs = Object.keys(tr);\n var actualIndex = idx;\n for (var i = 0; i < trs.length; i++) {\n var td = tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)];\n if (parent && !parent.isFrozenGrid() && !parent.isRowDragable()) {\n td = (!isNullOrUndefined(td) && (parseInt(td.getAttribute('data-colindex'), 10) === idx ||\n (parentsUntil(td, 'e-addedrow') && td.parentElement.childNodes[parseInt(idx.toString(), 10)] === td)))\n ? td : tr[parseInt(i.toString(), 10)].querySelector(\"td[data-colindex=\\\"\" + idx + \"\\\"]\");\n if (isNullOrUndefined(td)) {\n continue;\n }\n else {\n idx = (parent.getContentTable().querySelector('.e-detailrowcollapse, .e-detailrowexpand')) ?\n (td.cellIndex - 1) : td.cellIndex;\n }\n }\n if (tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell').length && td) {\n setStyleAttribute(tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)], { 'display': displayVal });\n if (tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)].classList.contains('e-hide')) {\n removeClass([tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)]], ['e-hide']);\n }\n if ((isContent && parent.isRowDragable()) || (parent && parent.isDetail())) {\n var index = idx + 1;\n rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(index.toString(), 10)].visible = displayVal === '' ? true : false;\n }\n else {\n if (!isNullOrUndefined(rows[trs[parseInt(i.toString(), 10)]])) {\n rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(idx.toString(), 10)].visible = displayVal === '' ? true : false;\n if (rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(idx.toString(), 10)].visible === false) {\n tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)].classList.add('e-hide');\n }\n }\n }\n idx = actualIndex;\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function addRemoveEventListener(parent, evt, isOn, module) {\n for (var _i = 0, evt_1 = evt; _i < evt_1.length; _i++) {\n var inst = evt_1[_i];\n if (isOn) {\n parent.on(inst.event, inst.handler, module);\n }\n else {\n parent.off(inst.event, inst.handler);\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function createEditElement(parent, column, classNames, attr) {\n var complexFieldName = getComplexFieldID(column.field);\n attr = Object.assign(attr, {\n id: parent.element.id + complexFieldName,\n name: complexFieldName, 'e-mappinguid': column.uid\n });\n return parent.createElement('input', {\n className: classNames, attrs: attr\n });\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @param {string} uid - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nexport function getColumnModelByUid(gObj, uid) {\n var column;\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.uid === uid) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @param {string} field - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nexport function getColumnModelByFieldName(gObj, field) {\n var column;\n if (!gObj.columnModel) {\n gObj.getColumns();\n }\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.field === field) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {string} id - Defines component id\n * @param {string[]} evts - Defines events\n * @param {object} handlers - Defines event handlers\n * @param {any} instance - Defines class instance\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function registerEventHandlers(id, evts, handlers, instance) {\n instance.eventHandlers[\"\" + id] = {};\n for (var i = 0; i < evts.length; i++) {\n instance.eventHandlers[\"\" + id][evts[parseInt(i.toString(), 10)]] = handlers[evts[parseInt(i.toString(), 10)]];\n }\n}\n/**\n * @param {any} component - Defines component instance\n * @param {string[]} evts - Defines events\n * @param {any} instance - Defines class instance\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function removeEventHandlers(component, evts, instance) {\n for (var i = 0; i < evts.length; i++) {\n if (component.isDestroyed) {\n break;\n }\n component.removeEventListener(evts[parseInt(i.toString(), 10)], instance.eventHandlers[component.element.id][evts[parseInt(i.toString(), 10)]]);\n }\n}\n/**\n * @param {IGrid | IXLFilter} parent - Defines parent instance\n * @param {string[]} templates - Defines the templates name which are needs to clear\n * @returns {void}\n * @hidden\n */\nexport function clearReactVueTemplates(parent, templates) {\n parent.destroyTemplate(templates);\n if (parent.isReact) {\n parent.renderTemplates();\n }\n}\n/**\n *\n * @param { Element } row - Defines row element\n * @returns { number } row index\n */\nexport function getRowIndexFromElement(row) {\n return parseInt(row.getAttribute(literals.dataRowIndex), 10);\n}\n/**\n *\n * @param { string[] } fields - Defines grouped fields\n * @param { values } values - Defines caption keys\n * @param { any } instance - Defines dynamic class instance\n * @returns { Predicate } returns filter predicate\n */\n// eslint-disable-next-line\nexport function generateExpandPredicates(fields, values, instance) {\n var filterCols = [];\n for (var i = 0; i < fields.length; i++) {\n var column = instance.parent.getColumnByField(fields[parseInt(i.toString(), 10)]);\n var value = values[parseInt(i.toString(), 10)] === 'null' ? null : values[parseInt(i.toString(), 10)];\n var pred = {\n field: fields[parseInt(i.toString(), 10)], predicate: 'or', uid: column.uid, operator: 'equal', type: column.type,\n matchCase: instance.allowCaseSensitive, ignoreAccent: instance.parent.filterSettings.ignoreAccent\n };\n if (value === '' || isNullOrUndefined(value)) {\n filterCols = filterCols.concat(CheckBoxFilterBase.generateNullValuePredicates(pred));\n }\n else {\n filterCols.push(extend({}, { value: value }, pred));\n }\n }\n return CheckBoxFilterBase.getPredicate(filterCols);\n}\n/**\n *\n * @param { Predicate } pred - Defines filter predicate\n * @returns { Predicate[] } Returns formed predicate\n */\nexport function getPredicates(pred) {\n var predicateList = [];\n for (var _i = 0, _a = Object.keys(pred); _i < _a.length; _i++) {\n var prop = _a[_i];\n predicateList.push(pred[\"\" + prop]);\n }\n return predicateList;\n}\n/**\n *\n * @param { number } index - Defines group caption indent\n * @param { Row[] } rowsObject - Defines rows object\n * @returns { { fields: string[], keys: string[] } } Returns grouped keys and values\n */\nexport function getGroupKeysAndFields(index, rowsObject) {\n var fields = [];\n var keys = [];\n for (var i = index; i >= 0; i--) {\n if (rowsObject[parseInt(i.toString(), 10)].isCaptionRow\n && fields.indexOf(rowsObject[parseInt(i.toString(), 10)].data.field) === -1\n && (rowsObject[parseInt(i.toString(), 10)].indent < rowsObject[parseInt(index.toString(), 10)].indent || i === index)) {\n fields.push(rowsObject[parseInt(i.toString(), 10)].data.field);\n keys.push(rowsObject[parseInt(i.toString(), 10)].data.key);\n if (rowsObject[parseInt(i.toString(), 10)].indent === 0) {\n break;\n }\n }\n }\n return { fields: fields, keys: keys };\n}\n// eslint-disable-next-line\n/**\n *\n * @param { number[][] } checkActiveMatrix - Defines matrix to check\n * @param { number[] } checkCellIndex - Defines index to check\n * @param { boolean } next - Defines select next or previous index\n * @returns { number[] } - Returns next active current index\n */\nexport function findCellIndex(checkActiveMatrix, checkCellIndex, next) {\n var activeMatrix = checkActiveMatrix;\n var cellIndex = checkCellIndex;\n var currentCellIndexPass = false;\n if (next) {\n for (var i = cellIndex[0]; i < activeMatrix.length; i++) {\n var rowCell = activeMatrix[parseInt(i.toString(), 10)];\n for (var j = 0; j < rowCell.length; j++) {\n if (currentCellIndexPass && activeMatrix[parseInt(i.toString(), 10)][parseInt(j.toString(), 10)] === 1) {\n cellIndex = [i, j];\n return cellIndex;\n }\n if (!currentCellIndexPass && cellIndex.toString() === [i, j].toString()) {\n currentCellIndexPass = true;\n }\n }\n }\n }\n else {\n for (var i = cellIndex[0]; i >= 0; i--) {\n var rowCell = activeMatrix[parseInt(i.toString(), 10)];\n for (var j = rowCell.length - 1; j >= 0; j--) {\n if (currentCellIndexPass && activeMatrix[parseInt(i.toString(), 10)][parseInt(j.toString(), 10)] === 1) {\n cellIndex = [i, j];\n return cellIndex;\n }\n if (!currentCellIndexPass && cellIndex.toString() === [i, j].toString()) {\n currentCellIndexPass = true;\n }\n }\n }\n }\n return cellIndex;\n}\n/**\n *\n * @param { string } string - Defines string need to capitalized first letter\n * @returns { string } - Returns capitalized first letter string\n */\nexport function capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Row\n *\n * @hidden\n */\nvar Row = /** @class */ (function () {\n function Row(options, parent) {\n merge(this, options);\n this.parent = parent;\n }\n Row.prototype.clone = function () {\n var row = new Row({});\n merge(row, this);\n row.cells = this.cells.map(function (cell) { return cell.clone(); });\n return row;\n };\n /**\n * Replaces the row data and grid refresh the particular row element only.\n *\n * @param {Object} data - To update new data for the particular row.\n * @returns {void}\n */\n Row.prototype.setRowValue = function (data) {\n if (!this.parent) {\n return;\n }\n var key = this.data[this.parent.getPrimaryKeyFieldNames()[0]];\n this.parent.setRowData(key, data);\n };\n /**\n * Replaces the given field value and refresh the particular cell element only.\n *\n * @param {string} field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n * @returns {void}\n */\n Row.prototype.setCellValue = function (field, value) {\n if (!this.parent) {\n return;\n }\n var isValDiff = !(this.data[\"\" + field].toString() === value.toString());\n if (isValDiff) {\n var pKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var key = this.data[\"\" + pKeyField];\n this.parent.setCellValue(key, field, value);\n this.makechanges(pKeyField, this.data);\n }\n else {\n return;\n }\n };\n Row.prototype.makechanges = function (key, data) {\n if (!this.parent) {\n return;\n }\n var gObj = this.parent;\n var dataManager = gObj.getDataModule().dataManager;\n dataManager.update(key, data);\n };\n return Row;\n}());\nexport { Row };\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Cell\n *\n * @hidden\n */\nvar Cell = /** @class */ (function () {\n function Cell(options) {\n this.isSpanned = false;\n this.isRowSpanned = false;\n merge(this, options);\n }\n Cell.prototype.clone = function () {\n var cell = new Cell({});\n merge(cell, this);\n return cell;\n };\n return Cell;\n}());\nexport { Cell };\n","import { isNullOrUndefined, attributes } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject } from '../base/util';\nimport { CellType } from '../base/enum';\n/**\n * `CellMergeRender` module.\n *\n * @hidden\n */\nvar CellMergeRender = /** @class */ (function () {\n function CellMergeRender(serviceLocator, parent) {\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n }\n CellMergeRender.prototype.render = function (cellArgs, row, i, td) {\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[parseInt(i.toString(), 10)].cellType\n || CellType.Data);\n var colSpan = row.cells[parseInt(i.toString(), 10)].cellSpan ? row.cells[parseInt(i.toString(), 10)].cellSpan :\n (cellArgs.colSpan + i) <= row.cells.length ? cellArgs.colSpan : row.cells.length - i;\n var rowSpan = cellArgs.rowSpan;\n var visible = 0;\n var spannedCell;\n if (row.index > 0) {\n var rowsObject = this.parent.getRowsObject();\n var cells = this.parent.groupSettings.columns.length > 0 &&\n !rowsObject[row.index - 1].isDataRow ? rowsObject[row.index].cells : rowsObject[row.index - 1].cells;\n var targetCell_1 = row.cells[parseInt(i.toString(), 10)];\n var uid_1 = 'uid';\n spannedCell = cells.filter(function (cell) { return cell.column.uid === targetCell_1.column[\"\" + uid_1]; })[0];\n }\n var colSpanLen = spannedCell && spannedCell.colSpanRange > 1 && spannedCell.rowSpanRange > 1 ?\n spannedCell.colSpanRange : colSpan;\n for (var j = i + 1; j < i + colSpanLen && j < row.cells.length; j++) {\n if (row.cells[parseInt(j.toString(), 10)].visible === false) {\n visible++;\n }\n else {\n row.cells[parseInt(j.toString(), 10)].isSpanned = true;\n }\n }\n if (visible > 0) {\n for (var j = i + colSpan; j < i + colSpan + visible && j < row.cells.length; j++) {\n row.cells[parseInt(j.toString(), 10)].isSpanned = true;\n }\n if (i + colSpan + visible >= row.cells.length) {\n colSpan -= (i + colSpan + visible) - row.cells.length;\n }\n }\n if (row.cells[parseInt(i.toString(), 10)].cellSpan) {\n row.data[cellArgs.column.field] = row.cells[parseInt(i.toString(), 10)].spanText;\n td = cellRenderer.render(row.cells[parseInt(i.toString(), 10)], row.data, { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' });\n }\n if (colSpan > 1) {\n attributes(td, { 'colSpan': colSpan.toString(), 'aria-colSpan': colSpan.toString() });\n }\n if (rowSpan > 1) {\n attributes(td, { 'rowspan': rowSpan.toString(), 'aria-rowspan': rowSpan.toString() });\n row.cells[parseInt(i.toString(), 10)].isRowSpanned = true;\n row.cells[parseInt(i.toString(), 10)].rowSpanRange = Number(rowSpan);\n if (colSpan > 1) {\n row.cells[parseInt(i.toString(), 10)].colSpanRange = Number(colSpan);\n }\n }\n if (row.index > 0 && (spannedCell.rowSpanRange > 1)) {\n row.cells[parseInt(i.toString(), 10)].isSpanned = true;\n row.cells[parseInt(i.toString(), 10)].rowSpanRange = Number(spannedCell.rowSpanRange - 1);\n row.cells[parseInt(i.toString(), 10)].colSpanRange = spannedCell.rowSpanRange > 0 ? spannedCell.colSpanRange : 1;\n }\n if (this.parent.enableColumnVirtualization && !row.cells[parseInt(i.toString(), 10)].cellSpan &&\n !this.containsKey(cellArgs.column.field, cellArgs.data[cellArgs.column.field])) {\n this.backupMergeCells(cellArgs.column.field, cellArgs.data[cellArgs.column.field], cellArgs.colSpan);\n }\n return td;\n };\n CellMergeRender.prototype.backupMergeCells = function (fName, data, span) {\n this.setMergeCells(this.generteKey(fName, data), span);\n };\n CellMergeRender.prototype.generteKey = function (fname, data) {\n return fname + '__' + data.toString();\n };\n CellMergeRender.prototype.splitKey = function (key) {\n return key.split('__');\n };\n CellMergeRender.prototype.containsKey = function (fname, data) {\n // eslint-disable-next-line no-prototype-builtins\n return this.getMergeCells().hasOwnProperty(this.generteKey(fname, data));\n };\n CellMergeRender.prototype.getMergeCells = function () {\n return this.parent.mergeCells;\n };\n CellMergeRender.prototype.setMergeCells = function (key, span) {\n this.parent.mergeCells[\"\" + key] = span;\n };\n CellMergeRender.prototype.updateVirtualCells = function (rows) {\n var mCells = this.getMergeCells();\n for (var _i = 0, _a = Object.keys(mCells); _i < _a.length; _i++) {\n var key = _a[_i];\n var value = mCells[\"\" + key];\n var merge = this.splitKey(key);\n var columnIndex = this.getIndexFromAllColumns(merge[0]);\n var vColumnIndices = this.parent.getColumnIndexesInView();\n var span = value - (vColumnIndices[0] - columnIndex);\n if (columnIndex < vColumnIndices[0] && span > 1) {\n for (var _b = 0, rows_1 = rows; _b < rows_1.length; _b++) {\n var row = rows_1[_b];\n if (row.data[merge[0]].toString() === merge[1].toString()) {\n row.cells[0].cellSpan = span;\n row.cells[0].spanText = merge[1];\n break;\n }\n }\n }\n }\n return rows;\n };\n CellMergeRender.prototype.getIndexFromAllColumns = function (field) {\n var index = iterateArrayOrObject(this.parent.getVisibleColumns(), function (item, index) {\n if (item.field === field) {\n return index;\n }\n return undefined;\n })[0];\n return index;\n };\n return CellMergeRender;\n}());\nexport { CellMergeRender };\n","/**\n * Specifies class names\n */\n/** @hidden */\nexport var rowCell = 'e-rowcell';\n/** @hidden */\nexport var gridHeader = 'e-gridheader';\n/** @hidden */\nexport var gridContent = 'e-gridcontent';\n/** @hidden */\nexport var gridFooter = 'e-gridfooter';\n/** @hidden */\nexport var headerContent = 'e-headercontent';\n/** @hidden */\nexport var movableContent = 'e-movablecontent';\n/** @hidden */\nexport var movableHeader = 'e-movableheader';\n/** @hidden */\nexport var frozenContent = 'e-frozencontent';\n/** @hidden */\nexport var frozenHeader = 'e-frozenheader';\n/** @hidden */\nexport var content = 'e-content';\n/** @hidden */\nexport var table = 'e-table';\n/** @hidden */\nexport var row = 'e-row';\n/** @hidden */\nexport var gridChkBox = 'e-gridchkbox';\n/** @hidden */\nexport var editedRow = 'e-editedrow';\n/** @hidden */\nexport var addedRow = 'e-addedrow';\n/**\n * Specifies repeated strings\n */\n/** @hidden */\nexport var changedRecords = 'changedRecords';\n/** @hidden */\nexport var addedRecords = 'addedRecords';\n/** @hidden */\nexport var deletedRecords = 'deletedRecords';\n/** @hidden */\nexport var leftRight = 'Left-Right';\n/** @hidden */\nexport var frozenRight = 'frozen-right';\n/** @hidden */\nexport var frozenLeft = 'frozen-left';\n/** @hidden */\nexport var dataColIndex = 'data-colindex';\n/** @hidden */\nexport var ariaColIndex = 'aria-colindex';\n/** @hidden */\nexport var dataRowIndex = 'data-rowindex';\n/** @hidden */\nexport var ariaRowIndex = 'aria-rowindex';\n/** @hidden */\nexport var tbody = 'tbody';\n/** @hidden */\nexport var colGroup = 'colgroup';\n/** @hidden */\nexport var open = 'open';\n/** @hidden */\nexport var change = 'change';\n/** @hidden */\nexport var focus = 'focus';\n/** @hidden */\nexport var create = 'created';\n/** @hidden */\nexport var beforeOpen = 'beforeOpen';\n/** @hidden */\nexport var downArrow = 'downArrow';\n/** @hidden */\nexport var upArrow = 'upArrow';\n/** @hidden */\nexport var pageUp = 'PageUp';\n/** @hidden */\nexport var pageDown = 'PageDown';\n/** @hidden */\nexport var enter = 'enter';\n/** @hidden */\nexport var shiftEnter = 'shiftEnter';\n/** @hidden */\nexport var tab = 'tab';\n/** @hidden */\nexport var shiftTab = 'shiftTab';\n/** @hidden */\nexport var initialFrozenColumnIndex = 'initialFrozenColumnIndex';\n","import { isNullOrUndefined, extend, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { attributes as addAttributes } from '@syncfusion/ej2-base';\nimport { rowDataBound, queryCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, getObject, extendObjWithFn, applyStickyLeftRightPosition, groupCaptionRowLeftRightPos, resetColspanGroupCaption, resetColandRowSpanStickyPosition } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport * as literals from '../base/string-literals';\n/**\n * RowRenderer class which responsible for building row content.\n *\n * @hidden\n */\nvar RowRenderer = /** @class */ (function () {\n function RowRenderer(serviceLocator, cellType, parent) {\n this.isSpan = false;\n this.cellType = cellType;\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n this.element = this.parent.createElement('tr', { attrs: { role: 'row' } });\n }\n /* eslint-disable */\n /**\n * Function to render the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the columns\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @param {Element} cloneNode - specifies the cloneNode\n * @returns {Element} returns the element\n */\n /* eslint-enable */\n RowRenderer.prototype.render = function (row, columns, attributes, rowTemplate, cloneNode) {\n return this.refreshRow(row, columns, attributes, rowTemplate, cloneNode);\n };\n /* eslint-disable */\n /**\n * Function to refresh the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the column\n * @param {boolean} isChanged - specifies isChanged\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.refresh = function (row, columns, isChanged, attributes, rowTemplate) {\n var _this = this;\n if (isChanged) {\n row.data = extendObjWithFn({}, row.changes);\n this.refreshMergeCells(row);\n }\n var node = this.parent.element.querySelector('[data-uid=' + row.uid + ']');\n var tr = this.refreshRow(row, columns, attributes, rowTemplate, null, isChanged);\n var cells = [].slice.call(tr.cells);\n var tempCells = [].slice.call(node.querySelectorAll('.e-templatecell'));\n if (this.parent.isReact && tempCells.length) {\n var _loop_1 = function (col) {\n if (col.template) {\n setTimeout(function () {\n _this.parent.refreshReactColumnTemplateByUid(col.uid, true);\n }, 0);\n return \"break\";\n }\n };\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n var state_1 = _loop_1(col);\n if (state_1 === \"break\")\n break;\n }\n }\n var attr = [].slice.call(tr.attributes);\n attr.map(function (item) {\n node.setAttribute(item['name'], item['value']);\n });\n node.innerHTML = '';\n for (var _a = 0, cells_1 = cells; _a < cells_1.length; _a++) {\n var cell = cells_1[_a];\n node.appendChild(cell);\n }\n };\n // tslint:disable-next-line:max-func-body-length\n RowRenderer.prototype.refreshRow = function (row, columns, attributes, rowTemplate, cloneNode, isEdit) {\n var tr = !isNullOrUndefined(cloneNode) ? cloneNode : this.element.cloneNode();\n var rowArgs = { data: row.data };\n var cellArgs = { data: row.data };\n var chekBoxEnable = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox' && col.field; })[0];\n var value = false;\n var isFrozen = this.parent.isFrozenGrid();\n if (chekBoxEnable) {\n value = getObject(chekBoxEnable.field, rowArgs.data);\n }\n var selIndex = this.parent.getSelectedRowIndexes();\n if (row.isDataRow) {\n row.isSelected = selIndex.indexOf(row.index) > -1 || value;\n }\n if (row.isDataRow && this.parent.isCheckBoxSelection\n && this.parent.checkAllRows === 'Check' && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n row.isSelected = true;\n if (selIndex.indexOf(row.index) === -1) {\n selIndex.push(row.index);\n }\n }\n this.buildAttributeFromRow(tr, row);\n addAttributes(tr, extend({}, attributes, {}));\n setStyleAndAttributes(tr, row.attributes);\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var _loop_2 = function (i, len) {\n var cell = row.cells[parseInt(i.toString(), 10)];\n cell.isSelected = row.isSelected;\n cell.isColumnSelected = cell.column.isSelected;\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[parseInt(i.toString(), 10)].cellType\n || CellType.Data);\n var attrs = { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' };\n if (row.isExpand && row.cells[parseInt(i.toString(), 10)].cellType === CellType.DetailExpand) {\n attrs['class'] = this_1.parent.isPrinting ? 'e-detailrowcollapse' : 'e-detailrowexpand';\n }\n var td = cellRenderer.render(row.cells[parseInt(i.toString(), 10)], row.data, attrs, row.isExpand, isEdit);\n if (row.cells[parseInt(i.toString(), 10)].cellType !== CellType.Filter) {\n if (row.cells[parseInt(i.toString(), 10)].cellType === CellType.Data\n || row.cells[parseInt(i.toString(), 10)].cellType === CellType.CommandColumn) {\n var isReactChild = this_1.parent.parentDetails && this_1.parent.parentDetails.parentInstObj &&\n this_1.parent.parentDetails.parentInstObj.isReact;\n if (((this_1.parent.isReact && this_1.parent.requireTemplateRef) || (isReactChild &&\n this_1.parent.parentDetails.parentInstObj.requireTemplateRef)) && cell.isTemplate) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this_1;\n thisRef_1.parent.renderTemplates(function () {\n if (typeof (cell.column.template) !== 'string') {\n var ariaAttr = td.getAttribute('aria-label');\n td.setAttribute('aria-label', td.innerText + ariaAttr);\n }\n thisRef_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[parseInt(i.toString(), 10)].foreignKeyData,\n requestType: thisRef_1.parent.requestTypeAction\n }));\n });\n }\n else {\n this_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[parseInt(i.toString(), 10)].foreignKeyData,\n requestType: this_1.parent.requestTypeAction\n }));\n }\n var isRowSpanned = false;\n if (row.index > 0 && (this_1.isSpan || (this_1.parent.isSpan && isEdit))) {\n var rowsObject = this_1.parent.getRowsObject();\n var prevRowCells = this_1.parent.groupSettings.columns.length > 0 &&\n !rowsObject[row.index - 1].isDataRow ? rowsObject[row.index].cells : rowsObject[row.index - 1].cells;\n var uid_1 = 'uid';\n var prevRowCell = prevRowCells.filter(function (cell) {\n return cell.column.uid === row.cells[parseInt(i.toString(), 10)].column[\"\" + uid_1];\n })[0];\n isRowSpanned = prevRowCell.isRowSpanned ? prevRowCell.isRowSpanned : prevRowCell.rowSpanRange > 1;\n }\n if ((cellArgs.rowSpan > 1 || cellArgs.colSpan > 1)) {\n this_1.resetrowSpanvalue(this_1.parent.frozenRows > row.index ? this_1.parent.frozenRows :\n this_1.parent.currentViewData.length, cellArgs, row.index);\n if (cellArgs.column.visible === false) {\n cellArgs.colSpan = 1;\n }\n else {\n if (isFrozen) {\n var columns_2 = this_1.parent.getColumns();\n var right = this_1.parent.getFrozenRightColumnsCount();\n var left = this_1.parent.getFrozenLeftCount();\n var movableCount = columns_2.length - right;\n var cellIdx = cellArgs.column.index;\n if (left > cellIdx && left < (cellIdx + cellArgs.colSpan)) {\n var colSpan = (cellIdx + cellArgs.colSpan) - left;\n cellArgs.colSpan = cellArgs.colSpan - colSpan;\n }\n else if (movableCount <= cellIdx && columns_2.length < (cellIdx + cellArgs.colSpan)) {\n var colSpan = (cellIdx + cellArgs.colSpan) - columns_2.length;\n cellArgs.colSpan = cellArgs.colSpan - colSpan;\n }\n else if (cellArgs.column.freeze === 'Fixed') {\n var colSpan = 1;\n var index = cellIdx;\n for (var j = index + 1; j < index + cellArgs.colSpan; j++) {\n if (columns_2[parseInt(j.toString(), 10)].freeze === 'Fixed') {\n colSpan++;\n }\n else {\n break;\n }\n }\n cellArgs.colSpan = colSpan;\n }\n else if (movableCount > cellIdx && movableCount < (cellIdx + cellArgs.colSpan)) {\n var colSpan = (cellIdx + cellArgs.colSpan) - movableCount;\n cellArgs.colSpan = cellArgs.colSpan - colSpan;\n }\n }\n }\n }\n if (cellArgs.colSpan > 1 || row.cells[parseInt(i.toString(), 10)].cellSpan > 1 || cellArgs.rowSpan > 1\n || isRowSpanned) {\n this_1.parent.isSpan = true;\n this_1.isSpan = true;\n var cellMerge = new CellMergeRender(this_1.serviceLocator, this_1.parent);\n td = cellMerge.render(cellArgs, row, i, td);\n if (isFrozen) {\n resetColandRowSpanStickyPosition(this_1.parent, cellArgs.column, td, cellArgs.colSpan);\n }\n }\n }\n if (isFrozen && this_1.isSpan) {\n var rowsObject = this_1.parent.getRowsObject();\n var isRtl = this_1.parent.enableRtl;\n if (rowsObject[row.index - 1]) {\n var prevRowCells = rowsObject[row.index - 1].cells;\n var prevRowCell = prevRowCells[i - 1];\n var nextRowCell = prevRowCells[i + 1];\n var direction = prevRowCells[parseInt(i.toString(), 10)].column.freeze;\n if (prevRowCell && (prevRowCell.isRowSpanned || prevRowCell.rowSpanRange > 1) && prevRowCell.visible) {\n if (prevRowCell.column.freeze === 'Fixed' && direction === 'Fixed') {\n td.classList.add(isRtl ? 'e-removefreezerightborder' : 'e-removefreezeleftborder');\n }\n else if (!isRtl && i === 1 && direction === 'Left') {\n td.classList.add('e-addfreezefirstchildborder');\n }\n }\n if (nextRowCell && (nextRowCell.isRowSpanned || nextRowCell.rowSpanRange > 1) && nextRowCell.visible &&\n nextRowCell.column.freeze === 'Fixed' && direction === 'Fixed' && cellArgs.colSpan < 2) {\n td.classList.add(isRtl ? 'e-removefreezeleftborder' : 'e-removefreezerightborder');\n }\n }\n }\n if (cellArgs.rowSpan > 1 && this_1.parent.currentViewData.length - row.index === cellArgs.rowSpan) {\n td.classList.add('e-row-span-lastrowcell');\n }\n if (!row.cells[parseInt(i.toString(), 10)].isSpanned) {\n tr.appendChild(td);\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = row.cells.length; i < len; i++) {\n _loop_2(i, len);\n }\n var emptyColspan = 0;\n if (this.parent.groupSettings.columns.length && this.parent.getFrozenLeftColumnsCount()) {\n if (tr.classList.contains('e-groupcaptionrow')) {\n var freezeCells = [].slice.call(tr.querySelectorAll('.e-leftfreeze,.e-unfreeze,.e-rightfreeze,.e-fixedfreeze,.e-freezerightborder,.e-freezeleftborder'));\n if (freezeCells.length) {\n removeClass(freezeCells, ['e-leftfreeze', 'e-unfreeze', 'e-rightfreeze', 'e-fixedfreeze', 'e-freezerightborder', 'e-freezeleftborder']);\n }\n if (tr.querySelector('.e-summarycell')) {\n groupCaptionRowLeftRightPos(tr, this.parent);\n }\n else {\n for (var j = 0; j < tr.childNodes.length; j++) {\n var td = tr.childNodes[parseInt(j.toString(), 10)];\n td.classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td, j * 30, this.parent.enableRtl, 'Left');\n if (td.classList.contains('e-groupcaption')) {\n var oldColspan = parseInt(td.getAttribute('colspan'), 10);\n var colspan = resetColspanGroupCaption(this.parent, j);\n td.setAttribute('colspan', colspan.toString());\n emptyColspan = oldColspan - colspan;\n }\n }\n if (emptyColspan) {\n var td = this.parent.createElement('TD', {\n className: 'e-groupcaption',\n attrs: { colspan: emptyColspan.toString(), id: this.parent.element.id + 'captioncell', tabindex: '-1' }\n });\n tr.appendChild(td);\n }\n }\n }\n if (tr.querySelectorAll('.e-leftfreeze').length &&\n (tr.querySelectorAll('.e-indentcell').length || tr.querySelectorAll('.e-grouptopleftcell').length)) {\n var td = tr.querySelectorAll('.e-indentcell, .e-grouptopleftcell');\n for (var i = 0; i < td.length; i++) {\n td[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td[parseInt(i.toString(), 10)], i * 30, this.parent.enableRtl, 'Left');\n }\n }\n }\n var args = { row: tr, rowHeight: this.parent.rowHeight };\n if (row.isDataRow) {\n var eventArg_1 = extend(rowArgs, args);\n eventArg_1.isSelectable = true;\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var cellTemplate = eventArg_1.row.querySelectorAll('.e-templatecell');\n if (((this.parent.isReact && this.parent.requireTemplateRef) || (isReactChild &&\n this.parent.parentDetails.parentInstObj.requireTemplateRef)) && cellTemplate.length) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this;\n thisRef_2.parent.renderTemplates(function () {\n thisRef_2.parent.trigger(rowDataBound, eventArg_1);\n if (!eventArg_1.isSelectable) {\n row.isSelectable = eventArg_1.isSelectable;\n thisRef_2.disableRowSelection(thisRef_2, row, args, eventArg_1);\n }\n });\n }\n else {\n this.parent.trigger(rowDataBound, eventArg_1);\n }\n row.isSelectable = eventArg_1.isSelectable;\n var isDraggable = this.parent.isRowDragable();\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n var primaryKey_1 = this.parent.getPrimaryKeyFieldNames()[0];\n var pKey_1 = row.data ? row.data[\"\" + primaryKey_1] : null;\n var SelectedRecords = eventArg_1.isSelectable ? this.parent.partialSelectedRecords :\n this.parent.disableSelectedRecords;\n if (!SelectedRecords.some(function (data) { return data[\"\" + primaryKey_1] === pKey_1; })) {\n SelectedRecords.push(row.data);\n }\n }\n if (!eventArg_1.isSelectable) {\n this.disableRowSelection(this, row, args, eventArg_1);\n }\n if (this.parent.childGrid || isDraggable || this.parent.detailTemplate) {\n var td = tr.querySelectorAll('.e-rowcell:not(.e-hide)')[0];\n if (td) {\n td.classList.add('e-detailrowvisible');\n }\n }\n }\n if (this.parent.enableVirtualization) {\n rowArgs.rowHeight = this.parent.rowHeight;\n }\n if (rowArgs.rowHeight) {\n tr.style.height = rowArgs.rowHeight + 'px';\n }\n else if (this.parent.rowHeight && (tr.querySelector('.e-headercell') || tr.querySelector('.e-groupcaption'))) {\n tr.style.height = this.parent.rowHeight + 'px';\n }\n if (row.cssClass) {\n tr.classList.add(row.cssClass);\n }\n if (row.lazyLoadCssClass) {\n tr.classList.add(row.lazyLoadCssClass);\n }\n if (this.parent.rowRenderingMode === 'Vertical' && this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Header'\n || this.parent.textWrapSettings.wrapMode === 'Both')) {\n tr.classList.add('e-verticalwrap');\n }\n var vFTable = this.parent.enableColumnVirtualization;\n if (!vFTable && this.parent.aggregates.length && this.parent.element.scrollHeight > this.parent.height) {\n for (var i = 0; i < this.parent.aggregates.length; i++) {\n var property = 'properties';\n var column = 'columns';\n if (this.parent.aggregates[parseInt(i.toString(), 10)][\"\" + property][\"\" + column][0].footerTemplate) {\n var summarycell = [].slice.call(tr.getElementsByClassName('e-summarycell'));\n if (summarycell.length) {\n var lastSummaryCell = (summarycell[summarycell.length - 1]);\n addClass([lastSummaryCell], ['e-lastsummarycell']);\n var firstSummaryCell = (summarycell[0]);\n addClass([firstSummaryCell], ['e-firstsummarycell']);\n }\n }\n }\n }\n return tr;\n };\n RowRenderer.prototype.resetrowSpanvalue = function (rowCount, cellArgs, rowIndex) {\n if (rowCount > rowIndex && rowCount < rowIndex + cellArgs.rowSpan) {\n var rowSpan = (rowIndex + cellArgs.rowSpan) - rowCount;\n cellArgs.rowSpan = cellArgs.rowSpan - rowSpan;\n }\n };\n RowRenderer.prototype.disableRowSelection = function (thisRef, row, args, eventArg) {\n var selIndex = this.parent.getSelectedRowIndexes();\n this.parent.selectionModule.isPartialSelection = true;\n row.isSelected = false;\n var selRowIndex = selIndex.indexOf(row.index);\n if (selRowIndex > -1) {\n selIndex.splice(selRowIndex, 1);\n }\n var chkBox = args.row.querySelectorAll('.e-rowcell.e-gridchkbox');\n var isDrag = eventArg.row.querySelector('.e-rowdragdrop');\n var cellIdx = thisRef.parent.groupSettings.columns.length + (isDrag || thisRef.parent.isDetail() ? 1 : 0);\n for (var i = 0; i < chkBox.length; i++) {\n chkBox[parseInt(i.toString(), 10)].firstElementChild.classList.add('e-checkbox-disabled');\n chkBox[parseInt(i.toString(), 10)].querySelector('.e-frame').classList.remove('e-check');\n }\n if (row.cells.length) {\n for (var i = cellIdx; i < row.cells.length; i++) {\n var cell = eventArg.row.querySelector('.e-rowcell[data-colindex=\"' + row.cells[parseInt(i.toString(), 10)].index + '\"]');\n if (cell) {\n removeClass([cell], ['e-selectionbackground', 'e-active']);\n }\n }\n }\n if (isDrag) {\n removeClass([isDrag], ['e-selectionbackground', 'e-active']);\n }\n };\n ;\n RowRenderer.prototype.refreshMergeCells = function (row) {\n for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n cell.isSpanned = false;\n }\n return row;\n };\n /* eslint-disable */\n /**\n * Function to check and add alternative row css class.\n *\n * @param {Element} tr - specifies the tr element\n * @param {Row} row - specifies the row\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.buildAttributeFromRow = function (tr, row) {\n var attr = {};\n var prop = { 'rowindex': literals.dataRowIndex, 'dataUID': 'data-uid', 'ariaSelected': 'aria-selected' };\n var classes = [];\n if (row.isDataRow) {\n classes.push(literals.row);\n }\n if (row.isAltRow) {\n classes.push('e-altrow');\n }\n if (row.isCaptionRow) {\n classes.push('e-groupcaptionrow');\n }\n if (row.isAggregateRow && row.parentUid) {\n classes.push('e-groupfooterrow');\n }\n if (!isNullOrUndefined(row.index)) {\n attr[literals.ariaRowIndex] = row.index + 1;\n attr[prop.rowindex] = row.index;\n }\n if (row.rowSpan) {\n attr.rowSpan = row.rowSpan;\n }\n if (row.uid) {\n attr[prop.dataUID] = row.uid;\n }\n if (row.isSelected) {\n attr[prop.ariaSelected] = true;\n }\n if (row.visible === false) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(tr, attr);\n };\n return RowRenderer;\n}());\nexport { RowRenderer };\n","import { isNullOrUndefined, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Row } from '../models/row';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\nimport { getUid } from '../base/util';\nimport { getForeignData } from '../../grid/base/util';\nimport * as events from '../base/constant';\n/**\n * RowModelGenerator is used to generate grid data rows.\n *\n * @hidden\n */\nvar RowModelGenerator = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function RowModelGenerator(parent) {\n this.parent = parent;\n }\n RowModelGenerator.prototype.generateRows = function (data, args) {\n var rows = [];\n var startIndex = this.parent.enableVirtualization && args ? args.startIndex : 0;\n startIndex = this.parent.enableInfiniteScrolling && args ? this.getInfiniteIndex(args) : startIndex;\n if (this.parent.enableImmutableMode && args && args.startIndex) {\n startIndex = args.startIndex;\n }\n for (var i = 0, len = Object.keys(data).length; i < len; i++, startIndex++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(data[parseInt(i.toString(), 10)], startIndex);\n }\n return rows;\n };\n RowModelGenerator.prototype.ensureColumns = function () {\n //TODO: generate dummy column for group, detail here;\n var cols = [];\n if (this.parent.detailTemplate || this.parent.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n cols.push(this.generateCell(args, null, CellType.DetailExpand));\n }\n if (this.parent.isRowDragable()) {\n cols.push(this.generateCell({}, null, CellType.RowDragIcon));\n }\n return cols;\n };\n RowModelGenerator.prototype.generateRow = function (data, index, cssClass, indent, pid, tIndex, parentUid) {\n var options = {};\n options.foreignKeyData = {};\n options.uid = getUid('grid-row');\n options.data = data;\n options.index = index;\n options.indent = indent;\n options.tIndex = tIndex;\n options.isDataRow = true;\n options.parentGid = pid;\n options.parentUid = parentUid;\n if (this.parent.isPrinting) {\n if (this.parent.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (this.parent.hierarchyPrintMode === 'Expanded' && this.parent.expandedRows && this.parent.expandedRows[parseInt(index.toString(), 10)]) {\n options.isExpand = this.parent.expandedRows[parseInt(index.toString(), 10)].isExpand;\n }\n }\n options.cssClass = cssClass;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isSelected = this.parent.getSelectedRowIndexes().indexOf(index) > -1;\n this.refreshForeignKeyRow(options);\n var cells = this.ensureColumns();\n var row = new Row(options, this.parent);\n row.cells = this.parent.getFrozenMode() === 'Right' ? this.generateCells(options).concat(cells)\n : cells.concat(this.generateCells(options));\n return row;\n };\n RowModelGenerator.prototype.refreshForeignKeyRow = function (options) {\n var foreignKeyColumns = this.parent.getForeignKeyColumns();\n for (var i = 0; i < foreignKeyColumns.length; i++) {\n setValue(foreignKeyColumns[parseInt(i.toString(), 10)].field, getForeignData(foreignKeyColumns[parseInt(i.toString(), 10)], options.data), options.foreignKeyData);\n }\n };\n RowModelGenerator.prototype.generateCells = function (options) {\n var dummies = this.parent.getColumns();\n var tmp = [];\n for (var i = 0; i < dummies.length; i++) {\n tmp.push(this.generateCell(dummies[parseInt(i.toString(), 10)], options.uid, isNullOrUndefined(dummies[parseInt(i.toString(), 10)].commands) ? undefined : CellType.CommandColumn, null, i, options.foreignKeyData));\n }\n return tmp;\n };\n /**\n *\n * @param {Column} column - Defines column details\n * @param {string} rowId - Defines row id\n * @param {CellType} cellType - Defines cell type\n * @param {number} colSpan - Defines colSpan\n * @param {number} oIndex - Defines index\n * @param {Object} foreignKeyData - Defines foreign key data\n * @returns {Cell} returns cell model\n * @hidden\n */\n RowModelGenerator.prototype.generateCell = function (column, rowId, cellType, colSpan, oIndex, foreignKeyData) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(column.field || column.template),\n 'isTemplate': !isNullOrUndefined(column.template),\n 'rowID': rowId,\n 'column': column,\n 'cellType': !isNullOrUndefined(cellType) ? cellType : CellType.Data,\n 'colSpan': colSpan,\n 'commands': column.commands,\n 'isForeignKey': column.isForeignColumn && column.isForeignColumn(),\n 'foreignKeyData': column.isForeignColumn && column.isForeignColumn() && getValue(column.field, foreignKeyData)\n };\n if (opt.isDataCell || opt.column.type === 'checkbox' || opt.commands) {\n opt.index = oIndex;\n }\n return new Cell(opt);\n };\n RowModelGenerator.prototype.refreshRows = function (input) {\n for (var i = 0; i < input.length; i++) {\n this.refreshForeignKeyRow(input[parseInt(i.toString(), 10)]);\n input[parseInt(i.toString(), 10)].cells = this.generateCells(input[parseInt(i.toString(), 10)]);\n }\n return input;\n };\n RowModelGenerator.prototype.getInfiniteIndex = function (args) {\n return args.requestType === 'infiniteScroll' || args.requestType === 'delete' || args.action === 'add'\n ? (isNullOrUndefined(args.startIndex) ? args['index'] : args.startIndex) : 0;\n };\n return RowModelGenerator;\n}());\nexport { RowModelGenerator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { Column } from '../models/column';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { calculateAggregate, getUid } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\n/**\n * Summary row model generator\n *\n * @hidden\n */\nvar SummaryModelGenerator = /** @class */ (function () {\n /**\n * Constructor for Summary row model generator\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function SummaryModelGenerator(parent) {\n this.parent = parent;\n }\n SummaryModelGenerator.prototype.getData = function () {\n var _this = this;\n var rows = [];\n var row = this.parent.aggregates.slice();\n for (var i = 0; i < row.length; i++) {\n var columns = row[parseInt(i.toString(), 10)].columns.filter(function (column) {\n return !(column.footerTemplate || column.groupFooterTemplate || column.groupCaptionTemplate)\n || _this.columnSelector(column);\n });\n if (columns.length) {\n rows.push({ columns: columns });\n }\n }\n return rows;\n };\n SummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.footerTemplate !== undefined;\n };\n SummaryModelGenerator.prototype.getColumns = function (start) {\n var columns = [];\n if (this.parent.detailTemplate || !isNullOrUndefined(this.parent.childGrid)) {\n columns.push(new Column({}));\n }\n if (this.parent.allowGrouping) {\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n columns.push(new Column({}));\n }\n }\n if (this.parent.isRowDragable() && !start) {\n columns.push(new Column({}));\n }\n columns.push.apply(columns, this.parent.getColumns());\n return columns;\n };\n SummaryModelGenerator.prototype.generateRows = function (input, args, start, end, columns) {\n if (input.length === 0) {\n if (args === undefined || !args.count) {\n return [];\n }\n }\n var data = this.buildSummaryData(input, args);\n var rows = [];\n var row = this.getData();\n for (var i = 0; i < row.length; i++) {\n rows.push(this.getGeneratedRow(row[parseInt(i.toString(), 10)], data[parseInt(i.toString(), 10)], args ? args.level : undefined, start, end, args ? args.parentUid : undefined, columns));\n }\n return rows;\n };\n SummaryModelGenerator.prototype.getGeneratedRow = function (summaryRow, data, raw, start, end, parentUid, columns) {\n var tmp = [];\n var indents = this.getIndentByLevel();\n var isDetailGridAlone = !isNullOrUndefined(this.parent.childGrid);\n var indentLength = this.parent.getIndentCount();\n if (this.parent.groupSettings.columns.length && this.parent.allowRowDragAndDrop) {\n indents.push('e-indentcelltop');\n }\n else if (this.parent.isRowDragable() && !start) {\n indents = ['e-indentcelltop'];\n }\n var values = columns ? columns : this.getColumns(start);\n for (var i = 0; i < values.length; i++) {\n tmp.push(this.getGeneratedCell(values[parseInt(i.toString(), 10)], summaryRow, i >= indentLength ? this.getCellType() :\n i === 0 && this.parent.childGrid ? CellType.DetailFooterIntent : CellType.Indent, indents[parseInt(i.toString(), 10)], isDetailGridAlone));\n }\n var row = new Row({ data: data, attributes: { class: 'e-summaryrow' } });\n row.cells = tmp;\n row.uid = getUid('grid-row');\n row.parentUid = parentUid;\n row.isAggregateRow = true;\n row.visible = tmp.some(function (cell) { return cell.isDataCell && cell.visible; });\n return row;\n };\n SummaryModelGenerator.prototype.getGeneratedCell = function (column, summaryRow, cellType, indent, isDetailGridAlone) {\n //Get the summary column by display\n var sColumn = summaryRow.columns.filter(function (scolumn) { return scolumn.columnName === column.field; })[0];\n var attrs = {\n 'style': { 'textAlign': column.textAlign },\n 'e-mappinguid': column.uid, index: column.index\n };\n if (indent) {\n attrs.class = indent;\n }\n if (isNullOrUndefined(indent) && isDetailGridAlone) {\n attrs.class = 'e-detailindentcelltop';\n }\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(sColumn),\n 'isTemplate': sColumn && !isNullOrUndefined(sColumn.footerTemplate\n || sColumn.groupFooterTemplate || sColumn.groupCaptionTemplate),\n 'column': sColumn || {},\n 'attributes': attrs,\n 'cellType': cellType\n };\n opt.column.headerText = column.headerText;\n return new Cell(opt);\n };\n SummaryModelGenerator.prototype.buildSummaryData = function (data, args) {\n var dummy = [];\n var summaryRows = this.getData();\n var single = {};\n for (var i = 0; i < summaryRows.length; i++) {\n single = {};\n var column = summaryRows[parseInt(i.toString(), 10)].columns;\n for (var j = 0; j < column.length; j++) {\n single = this.setTemplate(column[parseInt(j.toString(), 10)], (args && args.aggregates) ? args : data, single);\n }\n dummy.push(single);\n }\n return dummy;\n };\n SummaryModelGenerator.prototype.getIndentByLevel = function () {\n return this.parent.groupSettings.columns.map(function () { return 'e-indentcelltop'; });\n };\n SummaryModelGenerator.prototype.setTemplate = function (column, data, single) {\n var types = column.type;\n var helper = {};\n var formatFn = column.getFormatter() || (function () { return function (a) { return a; }; })();\n var group = data;\n if (!(types instanceof Array)) {\n types = [column.type];\n }\n for (var i = 0; i < types.length; i++) {\n var key = column.field + ' - ' + types[parseInt(i.toString(), 10)].toLowerCase();\n var disp = column.columnName;\n var val = types[parseInt(i.toString(), 10)] !== 'Custom' && group.aggregates && key in group.aggregates ? group.aggregates[\"\" + key] :\n calculateAggregate(types[parseInt(i.toString(), 10)], group.aggregates ? group : data, column, this.parent);\n single[\"\" + disp] = single[\"\" + disp] || {};\n single[\"\" + disp][\"\" + key] = val;\n single[\"\" + disp][types[parseInt(i.toString(), 10)]] = !isNullOrUndefined(val) ? formatFn(val) : ' ';\n if (group.field) {\n single[\"\" + disp].field = group.field;\n single[\"\" + disp].key = group.key;\n }\n }\n helper.format = column.getFormatter();\n column.setTemplate(helper);\n return single;\n };\n SummaryModelGenerator.prototype.getCellType = function () {\n return CellType.Summary;\n };\n return SummaryModelGenerator;\n}());\nexport { SummaryModelGenerator };\nvar GroupSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(GroupSummaryModelGenerator, _super);\n function GroupSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GroupSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupFooterTemplate !== undefined;\n };\n GroupSummaryModelGenerator.prototype.getIndentByLevel = function (level) {\n if (level === void 0) { level = this.parent.groupSettings.columns.length; }\n if (this.parent.allowRowDragAndDrop && this.parent.groupSettings.columns.length) {\n level -= 1;\n }\n return this.parent.groupSettings.columns.map(function (v, indx) { return indx <= level - 1 ? '' : 'e-indentcelltop'; });\n };\n GroupSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.GroupSummary;\n };\n return GroupSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { GroupSummaryModelGenerator };\nvar CaptionSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(CaptionSummaryModelGenerator, _super);\n function CaptionSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CaptionSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupCaptionTemplate !== undefined;\n };\n CaptionSummaryModelGenerator.prototype.getData = function () {\n var initVal = { columns: [] };\n return [_super.prototype.getData.call(this).reduce(function (prev, cur) {\n prev.columns = prev.columns.concat(cur.columns);\n return prev;\n }, initVal)];\n };\n CaptionSummaryModelGenerator.prototype.isEmpty = function () {\n return (this.getData()[0].columns || []).length === 0;\n };\n CaptionSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.CaptionSummary;\n };\n return CaptionSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { CaptionSummaryModelGenerator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { isNullOrUndefined, extend, setValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { getForeignData, getUid } from '../../grid/base/util';\n/**\n * GroupModelGenerator is used to generate group caption rows and data rows.\n *\n * @hidden\n */\nvar GroupModelGenerator = /** @class */ (function (_super) {\n __extends(GroupModelGenerator, _super);\n function GroupModelGenerator(parent) {\n var _this = _super.call(this, parent) || this;\n _this.rows = [];\n /** @hidden */\n _this.index = 0;\n _this.infiniteChildCount = 0;\n _this.renderInfiniteAgg = true;\n _this.parent = parent;\n _this.summaryModelGen = new GroupSummaryModelGenerator(parent);\n _this.captionModelGen = new CaptionSummaryModelGenerator(parent);\n return _this;\n }\n GroupModelGenerator.prototype.generateRows = function (data, args) {\n if (this.parent.groupSettings.columns.length === 0) {\n return _super.prototype.generateRows.call(this, data, args);\n }\n this.isInfiniteScroll = (args.requestType === 'infiniteScroll');\n this.rows = [];\n this.index = this.parent.enableVirtualization || this.isInfiniteScroll ? args.startIndex : 0;\n for (var i = 0, len = data.length; i < len; i++) {\n this.infiniteChildCount = 0;\n this.renderInfiniteAgg = true;\n this.getGroupedRecords(0, data[parseInt(i.toString(), 10)], data.level, i, undefined, this.rows.length);\n }\n this.index = 0;\n if (this.parent.isCollapseStateEnabled()) {\n this.ensureRowVisibility();\n }\n return this.rows;\n };\n GroupModelGenerator.prototype.getGroupedRecords = function (index, data, raw, parentid, childId, tIndex, parentUid) {\n var _a;\n var level = raw;\n if (isNullOrUndefined(data.items)) {\n if (isNullOrUndefined(data.GroupGuid)) {\n this.rows = this.rows.concat(this.generateDataRows(data, index, parentid, this.rows.length, parentUid));\n }\n else {\n for (var j = 0, len = data.length; j < len; j++) {\n this.getGroupedRecords(index, data[parseInt(j.toString(), 10)], data.level, parentid, index, this.rows.length, parentUid);\n }\n }\n }\n else {\n var preCaption = void 0;\n var captionRow = this.generateCaptionRow(data, index, parentid, childId, tIndex, parentUid);\n if (this.isInfiniteScroll) {\n preCaption = this.getPreCaption(index, captionRow.data.key);\n }\n if (!preCaption) {\n this.rows = this.rows.concat(captionRow);\n }\n else {\n captionRow.uid = preCaption.uid;\n }\n if (data.items && data.items.length) {\n this.getGroupedRecords(index + 1, data.items, data.items.level, parentid, index + 1, this.rows.length, captionRow.uid);\n }\n if (this.parent.aggregates.length && this.isRenderAggregate(captionRow)) {\n var rowCnt = this.rows.length;\n (_a = this.rows).push.apply(_a, this.summaryModelGen.generateRows(data, { level: level, parentUid: captionRow.uid }));\n for (var i = rowCnt - 1; i >= 0; i--) {\n if (this.rows[parseInt(i.toString(), 10)].isCaptionRow) {\n this.rows[parseInt(i.toString(), 10)].aggregatesCount = this.rows.length - rowCnt;\n }\n else if (!this.rows[parseInt(i.toString(), 10)].isCaptionRow && !this.rows[parseInt(i.toString(), 10)].isDataRow) {\n break;\n }\n }\n }\n if (preCaption) {\n this.setInfiniteRowVisibility(preCaption);\n }\n }\n };\n GroupModelGenerator.prototype.isRenderAggregate = function (data) {\n if (this.parent.enableInfiniteScrolling) {\n if (!this.renderInfiniteAgg) {\n return false;\n }\n this.getPreCaption(data.indent, data.data.key);\n this.renderInfiniteAgg = data.data.count === this.infiniteChildCount;\n return this.renderInfiniteAgg;\n }\n return !this.parent.enableInfiniteScrolling;\n };\n GroupModelGenerator.prototype.getPreCaption = function (indent, key) {\n var rowObj = this.parent.getRowsObject().concat(this.rows);\n var preCap;\n this.infiniteChildCount = 0;\n var i = rowObj.length;\n while (i--) {\n if (rowObj[parseInt(i.toString(), 10)].isCaptionRow && rowObj[parseInt(i.toString(), 10)].indent === indent) {\n var groupKey = rowObj[parseInt(i.toString(), 10)].data.key;\n if ((groupKey instanceof Date && groupKey.toString() === key.toString()) || groupKey === key) {\n preCap = rowObj[parseInt(i.toString(), 10)];\n }\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === indent || rowObj[parseInt(i.toString(), 10)].indent < indent) {\n break;\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === indent + 1) {\n this.infiniteChildCount++;\n }\n }\n return preCap;\n };\n GroupModelGenerator.prototype.getCaptionRowCells = function (field, indent, data) {\n var cells = [];\n var visibles = [];\n var column = this.parent.getColumnByField(field);\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization) {\n column = this.parent.columns.filter(function (c) { return c.field === field; })[0];\n }\n var groupedLen = this.parent.groupSettings.columns.length;\n var gObj = this.parent;\n if (!this.parent.enableColumnVirtualization || indexes.indexOf(indent) !== -1) {\n for (var i = 0; i < indent; i++) {\n cells.push(this.generateIndentCell());\n }\n cells.push(this.generateCell({}, null, CellType.Expand));\n }\n indent = this.parent.enableColumnVirtualization ? 1 :\n (this.parent.getVisibleColumns().length + groupedLen + (gObj.detailTemplate || gObj.childGrid ? 1 : 0) -\n indent + (this.parent.getVisibleColumns().length ? -1 : 0));\n //Captionsummary cells will be added here.\n if (this.parent.aggregates.length && !this.captionModelGen.isEmpty()) {\n var captionCells = this.captionModelGen.generateRows(data)[0];\n extend(data, captionCells.data);\n var cIndex_1 = 0;\n captionCells.cells.some(function (cell, index) { cIndex_1 = index; return cell.visible && cell.isDataCell; });\n visibles = captionCells.cells.slice(cIndex_1).filter(function (cell) { return cell.visible; });\n if (captionCells.visible && visibles[0].column.field === this.parent.getVisibleColumns()[0].field) {\n visibles = visibles.slice(1);\n }\n if (this.parent.getVisibleColumns().length === 1) {\n visibles = [];\n }\n indent = indent - visibles.length;\n }\n var cols = (!this.parent.enableColumnVirtualization ? [column] : this.parent.getColumns());\n var wFlag = true;\n for (var j = 0; j < cols.length; j++) {\n var tmpFlag = wFlag && indexes.indexOf(indent) !== -1;\n if (tmpFlag) {\n wFlag = false;\n }\n var cellType = !this.parent.enableColumnVirtualization || tmpFlag ?\n CellType.GroupCaption : CellType.GroupCaptionEmpty;\n indent = this.parent.enableColumnVirtualization && cellType === CellType.GroupCaption ? indent + groupedLen : indent;\n if (gObj.isRowDragable()) {\n indent++;\n }\n cells.push(this.generateCell(column, null, cellType, indent));\n }\n cells.push.apply(cells, visibles);\n return cells;\n };\n /**\n * @param {GroupedData} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} parentID - specifies the parentID\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the TIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row} returns the Row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateCaptionRow = function (data, indent, parentID, childID, tIndex, parentUid) {\n var options = {};\n var records = 'records';\n var col = this.parent.getColumnByField(data.field);\n options.data = extend({}, data);\n if (col) {\n options.data.field = data.field;\n }\n options.isDataRow = false;\n options.isExpand = !this.parent.groupSettings.enableLazyLoading && !this.parent.isCollapseStateEnabled();\n options.parentGid = parentID;\n options.childGid = childID;\n options.tIndex = tIndex;\n options.isCaptionRow = true;\n options.parentUid = parentUid;\n options.gSummary = !isNullOrUndefined(data.items[\"\" + records]) ? data.items[\"\" + records].length : data.items.length;\n options.uid = getUid('grid-row');\n var row = new Row(options);\n row.indent = indent;\n this.getForeignKeyData(row);\n row.cells = this.getCaptionRowCells(data.field, indent, row.data);\n return row;\n };\n GroupModelGenerator.prototype.getForeignKeyData = function (row) {\n var data = row.data;\n var col = this.parent.getColumnByField(data.field);\n if (col && col.isForeignColumn && col.isForeignColumn()) {\n var fkValue = (isNullOrUndefined(data.key) ? '' : col.valueAccessor(col.foreignKeyValue, getForeignData(col, {}, data.key)[0], col));\n setValue('foreignKey', fkValue, row.data);\n }\n };\n /**\n * @param {Object[]} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the tIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row[]} returns the row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateDataRows = function (data, indent, childID, tIndex, parentUid) {\n var rows = [];\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = data.length; i < len; i++, tIndex++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(data[parseInt(i.toString(), 10)], this.index, i ? undefined : 'e-firstchildrow', indent, childID, tIndex, parentUid);\n for (var j = 0; j < indent; j++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(indent) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.unshift(this.generateIndentCell());\n }\n this.index++;\n }\n return rows;\n };\n GroupModelGenerator.prototype.generateIndentCell = function () {\n return this.generateCell({}, null, CellType.Indent);\n };\n GroupModelGenerator.prototype.refreshRows = function (input) {\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0; i < input.length; i++) {\n if (input[parseInt(i.toString(), 10)].isDataRow) {\n input[parseInt(i.toString(), 10)].cells = this.generateCells(input[parseInt(i.toString(), 10)]);\n for (var j = 0; j < input[parseInt(i.toString(), 10)].indent; j++) {\n if (this.parent.enableColumnVirtualization\n && indexes.indexOf(input[parseInt(i.toString(), 10)].indent) === -1) {\n continue;\n }\n input[parseInt(i.toString(), 10)].cells.unshift(this.generateIndentCell());\n }\n }\n else {\n var cRow = this.generateCaptionRow(input[parseInt(i.toString(), 10)].data, input[parseInt(i.toString(), 10)].indent);\n input[parseInt(i.toString(), 10)].cells = cRow.cells;\n }\n }\n return input;\n };\n GroupModelGenerator.prototype.setInfiniteRowVisibility = function (caption) {\n if (!caption.isExpand || caption.visible === false) {\n for (var _i = 0, _a = this.rows; _i < _a.length; _i++) {\n var row = _a[_i];\n if (row.parentUid === caption.uid) {\n row.visible = false;\n if (row.isCaptionRow) {\n this.setInfiniteRowVisibility(row);\n }\n }\n }\n }\n };\n GroupModelGenerator.prototype.ensureRowVisibility = function () {\n for (var i = 0; i < this.rows.length; i++) {\n var row = this.rows[parseInt(i.toString(), 10)];\n if (!row.isCaptionRow) {\n continue;\n }\n for (var j = i + 1; j < this.rows.length; j++) {\n var childRow = this.rows[parseInt(j.toString(), 10)];\n if (row.uid === childRow.parentUid) {\n this.rows[parseInt(j.toString(), 10)].visible = row.isExpand;\n }\n }\n }\n };\n return GroupModelGenerator;\n}(RowModelGenerator));\nexport { GroupModelGenerator };\n","import { Droppable } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, remove, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { getUpdateUsingRaf, appendChildren, setDisplayValue, clearReactVueTemplates, getScrollBarWidth, getScrollWidth, getTransformValues } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from './row-renderer';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport { isGroupAdaptive, addFixedColumnBorder } from '../base/util';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar ContentRender = /** @class */ (function () {\n /**\n * Constructor for content renderer module\n *\n * @param {IGrid} parent - specifies the Igrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n */\n function ContentRender(parent, serviceLocator) {\n var _this = this;\n this.rows = [];\n this.freezeRows = [];\n this.movableRows = [];\n this.freezeRowElements = [];\n /** @hidden */\n this.currentInfo = {};\n /** @hidden */\n this.prevCurrentView = [];\n this.isLoaded = true;\n this.drop = function (e) {\n _this.parent.notify(events.columnDrop, { target: e.target, droppedElement: e.droppedElement });\n remove(e.droppedElement);\n };\n this.infiniteCache = {};\n /** @hidden */\n this.visibleRows = [];\n this.visibleFrozenRows = [];\n this.rightFreezeRows = [];\n this.isAddRows = false;\n this.isInfiniteFreeze = false;\n this.useGroupCache = false;\n /** @hidden */\n this.tempFreezeRows = [];\n this.rafCallback = function (args) {\n var arg = args;\n return function () {\n _this.ariaService.setBusy(_this.getPanel().querySelector('.' + literals.content), false);\n if (_this.parent.isDestroyed) {\n return;\n }\n var rows = _this.rows.slice(0);\n if (_this.parent.enableInfiniteScrolling) {\n if (_this.parent.groupSettings.enableLazyLoading) {\n for (var i = 0; i < _this.visibleRows.length; i++) {\n _this.setRowsInLazyGroup(_this.visibleRows[parseInt(i.toString(), 10)], i);\n }\n }\n rows = _this.parent.getRowsObject();\n var prevPage = arg.prevPage;\n if (_this.parent.infiniteScrollSettings.enableCache && prevPage) {\n var maxBlock = _this.parent.infiniteScrollSettings.maxBlocks;\n rows = [];\n var rowIdx = (parseInt(_this.rowElements[0].getAttribute('data-rowindex'), 10) + 1);\n var startIdx = Math.ceil(rowIdx / _this.parent.pageSettings.pageSize);\n for (var i = 0, count = startIdx; i < maxBlock; i++, count++) {\n if (_this.infiniteCache[parseInt(count.toString(), 10)]) {\n rows = rows.concat(_this.infiniteCache[parseInt(count.toString(), 10)]);\n }\n }\n }\n }\n _this.parent.notify(events.contentReady, { rows: rows, args: arg });\n if (_this.parent.editSettings.showAddNewRow && _this.parent.addNewRowFocus) {\n _this.parent.notify(events.showAddNewRowFocus, {});\n _this.parent.addNewRowFocus = false;\n }\n if (_this.parent.autoFit) {\n _this.parent.preventAdjustColumns();\n }\n if (!_this.parent.isInitialLoad) {\n _this.parent.focusModule.setFirstFocusableTabIndex();\n }\n if (_this.isLoaded) {\n _this.parent.isManualRefresh = false;\n if (_this.parent.enableInfiniteScrolling && _this.parent.groupSettings.enableLazyLoading && args.requestType === 'sorting') {\n _this.parent.infiniteScrollModule['groupCaptionAction'] = undefined;\n }\n var isReactChild = _this.parent.parentDetails && _this.parent.parentDetails.parentInstObj &&\n _this.parent.parentDetails.parentInstObj.isReact;\n if ((_this.parent.isReact || isReactChild) && _this.parent.element.querySelectorAll('.e-templatecell').length) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = _this;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(events.dataBound, {}, function () {\n if (thisRef_1.parent.allowTextWrap) {\n thisRef_1.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n });\n }\n else {\n _this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n }\n if (_this.parent.allowTextWrap && _this.parent.height === 'auto') {\n if (_this.parent.getContentTable().scrollHeight > _this.parent.getContent().clientHeight) {\n _this.parent.scrollModule.setPadding();\n }\n else {\n _this.parent.scrollModule.removePadding();\n }\n }\n }\n if (arg) {\n var action = (arg.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, arg);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.isLoaded) {\n _this.parent.hideSpinner();\n }\n };\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.widthService = serviceLocator.getService('widthService');\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.parent.enableDeepCompare = this.parent.getDataModule().isRemote();\n this.generator = this.getModelGenerator();\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization && !this.parent.enableVirtualization\n && !this.parent.groupSettings.enableLazyLoading) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.colGroupRefresh, this.colGroupRefresh, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.refreshInfiniteModeBlocks, this.refreshContentRows, this);\n this.parent.on(events.beforeCellFocused, this.beforeCellFocused, this);\n this.parent.on(events.destroy, this.droppableDestroy, this);\n }\n ContentRender.prototype.beforeCellFocused = function (e) {\n if (e.byKey && (e.keyArgs.action === 'upArrow' || e.keyArgs.action === 'downArrow')) {\n this.pressedKey = e.keyArgs.action;\n }\n else {\n this.pressedKey = undefined;\n }\n };\n /**\n * The function is used to render grid content div\n *\n * @returns {void}\n */\n ContentRender.prototype.renderPanel = function () {\n var gObj = this.parent;\n var div = this.parent.element.querySelector('.' + literals.gridContent);\n if (div) {\n this.ariaService.setOptions(this.parent.element.querySelector('.' + literals.content), { busy: false });\n this.setPanel(div);\n return;\n }\n div = this.parent.createElement('div', { className: literals.gridContent });\n var innerDiv = this.parent.createElement('div', {\n className: literals.content\n });\n this.ariaService.setOptions(innerDiv, { busy: false });\n if (this.parent.enableColumnVirtualization && this.parent.isFrozenGrid()) {\n this.renderHorizontalScrollbar(div);\n innerDiv.classList.add('e-virtual-content');\n }\n div.appendChild(innerDiv);\n this.setPanel(div);\n gObj.element.appendChild(div);\n };\n ContentRender.prototype.renderHorizontalScrollbar = function (element) {\n var parent = this.parent.createElement('div', { className: 'e-movablescrollbar' });\n var child = this.parent.createElement('div', { className: 'e-movablechild' });\n var scrollbarHeight = getScrollBarWidth().toString();\n this.setScrollbarHeight(child, scrollbarHeight);\n this.setScrollbarHeight(parent, scrollbarHeight);\n parent.appendChild(child);\n element.appendChild(parent);\n };\n ContentRender.prototype.setScrollbarHeight = function (ele, height) {\n ele.style.minHeight = height + 'px';\n ele.style.maxHeight = height + 'px';\n };\n /**\n * The function is used to render grid content table\n *\n * @returns {void}\n */\n ContentRender.prototype.renderTable = function () {\n var contentDiv = this.getPanel();\n var virtualTable = contentDiv.querySelector('.e-virtualtable');\n var virtualTrack = contentDiv.querySelector('.e-virtualtrack');\n if (this.parent.enableVirtualization && !isNullOrUndefined(virtualTable) && !isNullOrUndefined(virtualTrack)) {\n remove(virtualTable);\n remove(virtualTrack);\n }\n contentDiv.appendChild(this.createContentTable('_content_table'));\n this.setTable(contentDiv.querySelector('.' + literals.table));\n if (this.parent.selectionSettings.type === 'Multiple') {\n this.ariaService.setOptions(this.parent.element, {\n multiselectable: true\n });\n }\n this.initializeContentDrop();\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().classList.add('e-frozenhdr');\n }\n };\n /**\n * The function is used to create content table elements\n *\n * @param {string} id - specifies the id\n * @returns {Element} returns the element\n * @hidden\n */\n ContentRender.prototype.createContentTable = function (id) {\n var innerDiv = this.getPanel().firstElementChild;\n if (this.getTable()) {\n remove(this.getTable());\n }\n var table = innerDiv.querySelector('.' + literals.table) ? innerDiv.querySelector('.' + literals.table) :\n this.parent.createElement('table', {\n className: literals.table, attrs: {\n cellspacing: '0.25px', role: 'presentation',\n id: this.parent.element.id + id\n }\n });\n this.setColGroup(this.parent.getHeaderTable().querySelector(literals.colGroup).cloneNode(true));\n table.appendChild(this.getColGroup());\n table.appendChild(this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }));\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * Refresh the content of the Grid.\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n // tslint:disable-next-line:max-func-body-length\n ContentRender.prototype.refreshContentRows = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n if (gObj.currentViewData.length === 0) {\n return;\n }\n if (gObj.editSettings && gObj.editModule && gObj.editSettings.mode === 'Batch' && gObj.editModule.formObj\n && gObj.editSettings.showConfirmDialog === false) {\n gObj.editModule.destroyForm();\n }\n var dataSource = this.currentMovableRows || gObj.currentViewData;\n var isReact = gObj.isReact && !isNullOrUndefined(gObj.rowTemplate);\n var frag = isReact ? gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }) : document.createDocumentFragment();\n if (!this.initialPageRecords) {\n this.initialPageRecords = extend([], dataSource);\n }\n var hdrfrag = isReact ? gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }) : document.createDocumentFragment();\n var refFrag;\n var refHdrfrag;\n if (gObj.isReact && gObj.rowTemplate) {\n refFrag = frag;\n refHdrfrag = hdrfrag;\n }\n var columns = gObj.getColumns();\n var tr;\n var hdrTbody;\n var trElement;\n var row = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInfiniteScroll = this.parent.enableInfiniteScrolling\n && args.requestType === 'infiniteScroll';\n var isColumnVirtualInfiniteProcess = this.isInfiniteColumnvirtualization() && args.requestType !== 'virtualscroll';\n gObj.notify(events.destroyChildGrid, {});\n this.rowElements = [];\n this.rows = [];\n this.tempFreezeRows = [];\n var tbdy;\n var tableName;\n var isGroupFrozenHdr = this.parent.frozenRows && this.parent.groupSettings.columns.length ? true : false;\n if (isGroupAdaptive(gObj)) {\n if (['sorting', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder', 'save', 'delete']\n .some(function (value) { return args.requestType === value; })) {\n this.emptyVcRows();\n }\n }\n var modelData;\n modelData = this.checkCache(modelData, args);\n if (!this.isAddRows && !this.useGroupCache) {\n modelData = this.generator.generateRows(dataSource, args);\n }\n this.setGroupCache(modelData, args);\n this.parent.notify(events.setInfiniteCache, { isInfiniteScroll: isInfiniteScroll, modelData: modelData, args: args });\n var isFrozenLeft = false;\n /* eslint-disable */\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 this.tbody = this.getTable().querySelector(literals.tbody);\n var startIndex = 0;\n var blockLoad = true;\n if (isGroupAdaptive(gObj) && gObj.vcRows.length) {\n var top_1 = 'top';\n var scrollTop = !isNullOrUndefined(args.virtualInfo.offsets) ? args.virtualInfo.offsets.top :\n (!isNullOrUndefined(args.scrollTop) ? args.scrollTop[\"\" + top_1] : 0);\n if (scrollTop !== 0) {\n var offsets_1 = gObj.vGroupOffsets;\n var bSize = gObj.pageSettings.pageSize / 2;\n var values = Object.keys(offsets_1).map(function (key) { return offsets_1[\"\" + key]; });\n for (var m = 0; m < values.length; m++) {\n if (scrollTop < values[parseInt(m.toString(), 10)]) {\n if (!isNullOrUndefined(args.virtualInfo) && args.virtualInfo.direction === 'up') {\n startIndex = m > 0 ? ((m - 1) * bSize) : (m * bSize);\n break;\n }\n else {\n startIndex = m * bSize;\n if (this.parent.contentModule.isEndBlock(m) || this.parent.contentModule.isEndBlock(m + 1)) {\n args.virtualInfo.blockIndexes = [m, m + 1];\n }\n break;\n }\n }\n }\n if (Math.round(scrollTop + this.contentPanel.firstElementChild.offsetHeight) >=\n this.contentPanel.firstElementChild.scrollHeight && !args.rowObject) {\n blockLoad = false;\n }\n }\n }\n var isVFFrozenOnly = gObj.frozenRows && this.parent.enableVirtualization\n && args.requestType === 'reorder';\n if ((gObj.frozenRows && args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo.axis === 'X') || isVFFrozenOnly) {\n var bIndex = args.virtualInfo.blockIndexes;\n var page = args.virtualInfo.page;\n args.virtualInfo.blockIndexes = [1, 2];\n if (isVFFrozenOnly) {\n args.virtualInfo.page = 1;\n }\n var data = isVFFrozenOnly ? this.initialPageRecords : dataSource;\n var mhdrData = this.vgenerator\n .generateRows(data, args);\n mhdrData.splice(this.parent.frozenRows);\n for (var i = 0; i < this.parent.frozenRows; i++) {\n // mhdrData[parseInt(i.toString(), 10)].cells.splice(0, this.parent.getFrozenColumns());\n tr = row.render(mhdrData[parseInt(i.toString(), 10)], columns);\n addFixedColumnBorder(tr);\n hdrfrag.appendChild(tr);\n }\n args.virtualInfo.blockIndexes = bIndex;\n args.virtualInfo.page = page;\n if (isVFFrozenOnly && args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n }\n this.virtualFrozenHdrRefresh(hdrfrag, modelData, row, args, dataSource, columns);\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).refRowsObj[this.parent.pageSettings.currentPage] = [];\n }\n if (this.parent.enableInfiniteScrolling && this.parent.groupSettings.enableLazyLoading && args.requestType === 'delete') { // || (this.parent.infiniteScrollSettings && this.parent.infiniteScrollSettings.enableCache))\n this.visibleRows = [];\n }\n var _loop_1 = function (i, len) {\n this_1.rows.push(modelData[parseInt(i.toString(), 10)]);\n if (this_1.parent.groupSettings.enableLazyLoading && !this_1.useGroupCache && this_1.parent.groupSettings.columns.length) {\n (this_1.parent.enableVirtualization ? this_1.parent.lazyLoadRender :\n this_1.parent.contentModule).refRowsObj[this_1.parent.pageSettings.currentPage].push(modelData[parseInt(i.toString(), 10)]);\n this_1.setRowsInLazyGroup(modelData[parseInt(i.toString(), 10)], i);\n if (isNullOrUndefined(modelData[parseInt(i.toString(), 10)].indent)) {\n return \"continue\";\n }\n }\n this_1.setInfiniteVisibleRows(args, modelData[parseInt(i.toString(), 10)]);\n if (isGroupAdaptive(gObj) && args.virtualInfo && args.virtualInfo.blockIndexes\n && (this_1.rowElements.length >= (args.virtualInfo.blockIndexes.length * this_1.parent.contentModule.getBlockSize()))\n && blockLoad) {\n this_1.parent.currentViewData['records'] = this_1.rows.map(function (m) { return m.data; });\n return \"break\";\n }\n if (!gObj.rowTemplate) {\n tr = row.render(modelData[parseInt(i.toString(), 10)], columns);\n addFixedColumnBorder(tr);\n var isVFreorder = this_1.ensureFrozenHeaderRender(args);\n if (gObj.frozenRows && (i < gObj.frozenRows || isGroupFrozenHdr) && !isInfiniteScroll && args.requestType !== 'virtualscroll' && isVFreorder\n && this_1.ensureVirtualFrozenHeaderRender(args)) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n var rowIdx = parseInt(tr.getAttribute('data-rowindex'), 10);\n if (rowIdx + 1 === gObj.frozenRows) {\n isGroupFrozenHdr = false;\n }\n if (modelData[parseInt(i.toString(), 10)].isExpand) {\n gObj.notify(events.expandChildGrid, tr.cells[gObj.groupSettings.columns.length]);\n }\n }\n else {\n var rowTemplateID = gObj.element.id + 'rowTemplate';\n var elements = void 0;\n if (gObj.isReact) {\n var isHeader = gObj.frozenRows && i < gObj.frozenRows;\n var copied = extend({ index: i }, dataSource[parseInt(i.toString(), 10)]);\n gObj.getRowTemplate()(copied, gObj, 'rowTemplate', rowTemplateID, null, null, isHeader ? hdrfrag : frag);\n if (gObj.requireTemplateRef) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this_1;\n thisRef_2.parent.renderTemplates(function () {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = refHdrfrag.childNodes[parseInt(i.toString(), 10)];\n }\n else {\n trElement = refFrag.childNodes[parseInt(i.toString(), 10)];\n }\n var arg = { data: modelData[parseInt(i.toString(), 10)].data,\n row: trElement ? trElement : tr };\n thisRef_2.parent.trigger(events.rowDataBound, arg);\n if (modelData[parseInt(i.toString(), 10)].isDataRow || (thisRef_2.parent.enableVirtualization &&\n thisRef_2.parent.groupSettings.enableLazyLoading)) {\n thisRef_2.rowElements.push(arg.row);\n }\n thisRef_2.ariaService.setOptions(thisRef_2.parent.element, {\n colcount: gObj.getColumns().length.toString()\n });\n if (i === modelData.length - 1) {\n refFrag = null;\n refHdrfrag = null;\n }\n });\n return \"continue\";\n }\n }\n else {\n elements = gObj.getRowTemplate()(extend({ index: i }, dataSource[parseInt(i.toString(), 10)]), gObj, 'rowTemplate', rowTemplateID, undefined, undefined, undefined, this_1.parent['root']);\n }\n if (!gObj.isReact && elements[0].tagName === 'TBODY') {\n for (var j = 0; j < elements.length; j++) {\n var isTR = elements[parseInt(j.toString(), 10)].nodeName.toLowerCase() === 'tr';\n if (isTR || (elements[parseInt(j.toString(), 10)].querySelectorAll && elements[parseInt(j.toString(), 10)].querySelectorAll('tr').length)) {\n tr = isTR ? elements[parseInt(j.toString(), 10)] : elements[parseInt(j.toString(), 10)].querySelector('tr');\n }\n }\n if (gObj.frozenRows && i < gObj.frozenRows) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n }\n else {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = !gObj.isReact ? appendChildren(hdrfrag, elements) : hdrfrag.lastElementChild;\n }\n else {\n // frag.appendChild(tr);\n if (!gObj.isReact) {\n tr = appendChildren(frag, elements);\n }\n trElement = gObj.isReact ? frag.lastElementChild : tr.lastElementChild;\n }\n }\n var arg = { data: modelData[parseInt(i.toString(), 10)].data, row: trElement ? trElement : tr };\n this_1.parent.trigger(events.rowDataBound, arg);\n }\n if (modelData[parseInt(i.toString(), 10)].isDataRow || (this_1.parent.enableVirtualization &&\n this_1.parent.groupSettings.enableLazyLoading)) {\n if (!isNullOrUndefined(gObj.rowTemplate) && (gObj.isAngular || gObj.isVue3 || gObj.isVue)) {\n this_1.rowElements.push(trElement ? trElement : tr);\n }\n else {\n this_1.rowElements.push(tr);\n }\n }\n this_1.ariaService.setOptions(this_1.parent.element, { colcount: gObj.getColumns().length.toString() });\n };\n var this_1 = this;\n for (var i = startIndex, len = modelData.length; i < len; i++) {\n var state_1 = _loop_1(i, len);\n if (state_1 === \"break\")\n break;\n }\n var isReactChild = gObj.parentDetails && gObj.parentDetails.parentInstObj && gObj.parentDetails.parentInstObj.isReact;\n if ((gObj.isReact || isReactChild) && !gObj.requireTemplateRef) {\n gObj.renderTemplates();\n }\n if (this.parent.enableInfiniteScrolling && this.parent.groupSettings.enableLazyLoading) {\n this.parent.contentModule.refRowsObj[this.parent.pageSettings.currentPage] =\n this.parent.contentModule['groupCache'][this.parent.pageSettings.currentPage];\n }\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n this.parent.notify(events.refreshExpandandCollapse, {\n rows: (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).refRowsObj[this.parent.pageSettings.currentPage]\n });\n }\n gObj.removeMaskRow();\n this.parent.notify('removeGanttShimmer', { requestType: 'hideShimmer' });\n if ((gObj.frozenRows && args.requestType !== 'virtualscroll' && !isInfiniteScroll && this.ensureVirtualFrozenHeaderRender(args))\n || (args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo && args.virtualInfo.sentinelInfo.axis === 'X')) {\n hdrTbody = gObj.getHeaderTable().querySelector(literals.tbody);\n if (isReact) {\n var parentTable = hdrTbody.parentElement;\n remove(hdrTbody);\n parentTable.appendChild(hdrfrag);\n }\n else {\n hdrTbody.innerHTML = '';\n hdrTbody.appendChild(hdrfrag);\n }\n if (!gObj.isInitialLoad) {\n gObj.scrollModule.setHeight();\n }\n }\n // if (!gObj.enableVirtualization && hdrTbody && gObj.frozenRows && idx === 0 && cont.offsetHeight === Number(gObj.height)) {\n // cont.style.height = (cont.offsetHeight - hdrTbody.offsetHeight) + 'px';\n // }\n args.rows = this.rows.slice(0);\n getUpdateUsingRaf(function () {\n _this.parent.notify(events.beforeFragAppend, args);\n if (!_this.parent.enableVirtualization && (!_this.parent.enableColumnVirtualization || isColumnVirtualInfiniteProcess)\n && !isInfiniteScroll) {\n if (!gObj.isReact) {\n _this.tbody.innerHTML = '';\n }\n if (!isNullOrUndefined(_this.tbody.parentElement)) {\n remove(_this.tbody);\n }\n else {\n remove(gObj.getContentTable().querySelector(literals.tbody));\n }\n _this.tbody = _this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n }\n if (gObj.rowTemplate) {\n updateBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate', gObj);\n }\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && ((_this.parent.enableInfiniteScrolling\n && !_this.isInfiniteColumnvirtualization()) || isColumnVirtualInfiniteProcess)) {\n _this.isAddRows = false;\n _this.parent.notify(events.removeInfiniteRows, { args: args });\n _this.parent.notify(events.appendInfiniteContent, {\n tbody: tbdy ? tbdy : _this.tbody, frag: frag, args: args, rows: _this.rows,\n rowElements: _this.rowElements, visibleRows: _this.visibleRows,\n tableName: tableName\n });\n if (_this.isInfiniteColumnvirtualization() && _this.parent.isFrozenGrid()) {\n var virtualTable = _this.parent.getContent().querySelector('.e-virtualtable');\n var transform = getTransformValues(virtualTable);\n _this.parent.contentModule.resetStickyLeftPos(transform.width);\n _this.widthService.refreshFrozenScrollbar();\n }\n }\n else {\n _this.useGroupCache = false;\n _this.appendContent(_this.tbody, frag, args);\n }\n if (_this.parent.editSettings.showAddNewRow && (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling)) {\n var newRow = _this.parent.element.querySelector('.e-addrow-removed');\n if (newRow) {\n remove(newRow);\n }\n }\n var startAdd = !_this.parent.element.querySelector('.' + literals.addedRow);\n if (_this.parent.editSettings.showAddNewRow && _this.parent.editSettings.mode === 'Normal') {\n if (startAdd) {\n if (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling) {\n _this.parent.isAddNewRow = true;\n }\n _this.parent.isEdit = false;\n _this.parent.addRecord();\n }\n if (startAdd || ((_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling) &&\n ['sorting', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder']\n .some(function (value) { return args.requestType === value; }))) {\n _this.parent.notify(events.showAddNewRowFocus, {});\n }\n }\n if (_this.parent.getVisibleFrozenRightCount() && _this.parent.getContent() && getScrollWidth(_this.parent) > 0) {\n _this.parent.element.classList.add('e-right-shadow');\n }\n frag = null;\n }, this.rafCallback(extend({}, args)));\n };\n ContentRender.prototype.isInfiniteColumnvirtualization = function () {\n return this.parent.enableColumnVirtualization && this.parent.enableInfiniteScrolling;\n };\n ContentRender.prototype.enableCacheOnInfiniteColumnVirtual = function () {\n return this.isInfiniteColumnvirtualization() && this.parent.infiniteScrollSettings.enableCache;\n };\n ContentRender.prototype.emptyVcRows = function () {\n this.parent.vcRows = [];\n this.parent.vRows = [];\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ContentRender.prototype.appendContent = function (tbody, frag, args, tableName) {\n var isReact = this.parent.isReact && !isNullOrUndefined(this.parent.rowTemplate);\n if (isReact) {\n this.getTable().appendChild(frag);\n }\n else {\n tbody.appendChild(frag);\n this.getTable().appendChild(tbody);\n }\n if (this.parent.rowRenderingMode === 'Vertical' && this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Header'\n || this.parent.textWrapSettings.wrapMode === 'Both')) {\n var cells = tbody.querySelectorAll('td');\n for (var i = 0; i < cells.length; i++) {\n var headerCellHeight = parseFloat(document.defaultView.getComputedStyle(cells[parseInt(i.toString(), 10)], '::before').getPropertyValue('height'));\n var cellHeight = cells[parseInt(i.toString(), 10)].offsetHeight;\n if (headerCellHeight > cellHeight) {\n cells[parseInt(i.toString(), 10)].style.height = headerCellHeight + 'px';\n cells[parseInt(i.toString(), 10)].style.boxSizing = 'content-box';\n }\n }\n }\n if (this.parent.getVisibleFrozenLeftCount() && this.parent.enableColumnVirtualization) {\n this.widthService.refreshFrozenScrollbar();\n }\n };\n ContentRender.prototype.setRowsInLazyGroup = function (row, index) {\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).maintainRows(row, index);\n }\n };\n ContentRender.prototype.setGroupCache = function (data, args) {\n if (!this.useGroupCache && this.parent.groupSettings.enableLazyLoading) {\n this.parent.notify(events.setGroupCache, { args: args, data: data });\n }\n };\n ContentRender.prototype.ensureFrozenHeaderRender = function (args) {\n return !((this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) || (this.parent.infiniteScrollSettings.enableCache\n && this.parent.frozenRows && this.parent.infiniteScrollModule.requestType === 'delete'\n && this.parent.pageSettings.currentPage !== 1));\n };\n ContentRender.prototype.ensureVirtualFrozenHeaderRender = function (args) {\n return !(this.parent.enableVirtualization && args.requestType === 'delete');\n };\n ContentRender.prototype.checkCache = function (modelData, args) {\n if (this.parent.infiniteScrollSettings.enableCache && args.requestType === 'infiniteScroll') {\n this.isAddRows = !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage]);\n if (this.isAddRows) {\n var data = this.infiniteCache[this.parent.pageSettings.currentPage];\n modelData = this.parent.pageSettings.currentPage === 1 ? data.slice(this.parent.frozenRows) : data;\n }\n return modelData;\n }\n if (this.parent.groupSettings.enableLazyLoading && this.parent.groupSettings.columns.length && (args.requestType === 'paging'\n || args.requestType === 'columnstate' || args.requestType === 'reorder' || args.requestType === 'virtualscroll')\n && (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).getGroupCache()[this.parent.pageSettings.currentPage]) {\n if (!this.parent.enableVirtualization) {\n this.useGroupCache = true;\n }\n return this.parent.enableVirtualization ? this.parent.getRowsObject() :\n this.parent.contentModule.initialGroupRows(args.requestType === 'reorder');\n }\n return null;\n };\n ContentRender.prototype.setInfiniteVisibleRows = function (args, data) {\n if (this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache\n && !(this.isInfiniteColumnvirtualization() && args.requestType === 'virtualscroll')) {\n this.visibleRows.push(data);\n }\n };\n ContentRender.prototype.getCurrentBlockInfiniteRecords = function () {\n var data = [];\n if (this.parent.infiniteScrollSettings.enableCache) {\n if (!Object.keys(this.infiniteCache).length) {\n return [];\n }\n var rows = this.parent.getRows();\n var index = parseInt(rows[this.parent.frozenRows].getAttribute(literals.dataRowIndex), 10);\n var first = Math.ceil((index + 1) / this.parent.pageSettings.pageSize);\n index = parseInt(rows[rows.length - 1].getAttribute(literals.dataRowIndex), 10);\n var last = Math.ceil((index + (rows.length ? 1 : 0)) / this.parent.pageSettings.pageSize);\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[parseInt(i.toString(), 10)]\n : data.concat(this.infiniteCache[parseInt(i.toString(), 10)]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1].slice(0, this.parent.frozenRows).concat(data);\n }\n }\n return data;\n };\n ContentRender.prototype.getReorderedRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\n };\n ContentRender.prototype.virtualFrozenHdrRefresh = function (hdrfrag, modelData, row, args, dataSource, columns) {\n if (this.parent.frozenRows && this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) {\n var tr = void 0;\n var fhdrData = this.getReorderedRows(args);\n for (var i = 0; i < fhdrData.length; i++) {\n tr = row.render(fhdrData[parseInt(i.toString(), 10)], columns);\n hdrfrag.appendChild(tr);\n }\n if (args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n }\n };\n ContentRender.prototype.getInfiniteRows = function () {\n var rows = [];\n if (this.parent.enableInfiniteScrolling) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var keys = Object.keys(this.infiniteCache);\n for (var i = 0; i < keys.length; i++) {\n rows = rows.concat(this.infiniteCache[keys[parseInt(i.toString(), 10)]]);\n }\n }\n else {\n rows = this.visibleRows;\n }\n }\n return rows;\n };\n ContentRender.prototype.getInfiniteMovableRows = function () {\n var infiniteCacheRows = this.getCurrentBlockInfiniteRecords();\n var infiniteRows = this.parent.enableInfiniteScrolling ? infiniteCacheRows.length ? infiniteCacheRows\n : this.visibleRows : [];\n return infiniteRows;\n };\n /**\n * Get the content div element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getPanel = function () {\n return this.contentPanel;\n };\n /**\n * Set the content div element of grid\n *\n * @param {Element} panel - specifies the panel\n * @returns {void}\n */\n ContentRender.prototype.setPanel = function (panel) {\n this.contentPanel = panel;\n };\n /**\n * Get the content table element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getTable = function () {\n return this.contentTable;\n };\n /**\n * Set the content table element of grid\n *\n * @param {Element} table - specifies the table\n * @returns {void}\n */\n ContentRender.prototype.setTable = function (table) {\n this.contentTable = table;\n };\n /**\n * Get the Movable Row collection in the Freeze pane Grid.\n *\n * @returns {Row[] | HTMLCollectionOf} returns the row\n */\n ContentRender.prototype.getRows = function () {\n var infiniteRows = this.getInfiniteRows();\n return infiniteRows.length ? infiniteRows : this.rows;\n };\n /**\n * Get the content table data row elements\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getRowElements = function () {\n return this.rowElements;\n };\n /**\n * Get the content table data row elements\n *\n * @param {Element[]} elements - specifies the elements\n * @returns {void}\n */\n ContentRender.prototype.setRowElements = function (elements) {\n this.rowElements = elements;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n ContentRender.prototype.setColGroup = function (colGroup) {\n if (!isNullOrUndefined(colGroup)) {\n colGroup.id = 'content-' + colGroup.id;\n }\n return this.colgroup = colGroup;\n };\n /**\n * Function to hide content table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n ContentRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var rows = this.getRows();\n var testRow;\n rows.some(function (r) { if (r.isDataRow) {\n testRow = r;\n } return r.isDataRow; });\n var needFullRefresh = true;\n if (!gObj.groupSettings.columns.length && testRow) {\n needFullRefresh = false;\n }\n var tr = gObj.getDataRows();\n var args = {};\n var infiniteData = this.infiniteRowVisibility();\n var contentrows = infiniteData ? infiniteData\n : this.rows.filter(function (row) { return !row.isDetailRow; });\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n var idx = this.parent.getNormalizedColumnIndex(column.uid);\n var colIdx = this.parent.getColumnIndexByUid(column.uid);\n var displayVal = column.visible === true ? '' : 'none';\n if (idx !== -1 && testRow && idx < testRow.cells.length) {\n setStyleAttribute(this.getColGroup().childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n if (!needFullRefresh) {\n this.setDisplayNone(tr, colIdx, displayVal, contentrows);\n }\n if (!this.parent.invokedFromMedia && column.hideAtMedia) {\n this.parent.updateMediaColumns(column);\n }\n this.parent.invokedFromMedia = false;\n }\n if (needFullRefresh) {\n this.refreshContentRows({ requestType: 'refresh' });\n }\n else {\n this.parent.notify(events.partialRefresh, { rows: contentrows, args: args });\n if (this.parent.editSettings.showAddNewRow && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n this.parent.notify(events.showAddNewRowFocus, {});\n }\n }\n };\n /**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row} rows - specifies the rows\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.setDisplayNone = function (tr, idx, displayVal, rows) {\n setDisplayValue(tr, idx, displayVal, rows, this.parent, this.parent.isRowDragable());\n this.parent.notify(events.infiniteShowHide, { visible: displayVal, index: idx, isFreeze: this.isInfiniteFreeze });\n };\n ContentRender.prototype.infiniteRowVisibility = function (isFreeze) {\n var infiniteData;\n if (this.parent.enableInfiniteScrolling) {\n this.isInfiniteFreeze = isFreeze;\n if (this.parent.infiniteScrollSettings.enableCache) {\n infiniteData = isFreeze ? this.getCurrentBlockInfiniteRecords() : this.getCurrentBlockInfiniteRecords();\n }\n else {\n infiniteData = isFreeze ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return infiniteData;\n };\n ContentRender.prototype.colGroupRefresh = function () {\n if (this.getColGroup()) {\n var colGroup = this.getHeaderColGroup();\n this.getTable().replaceChild(colGroup, this.getColGroup());\n this.setColGroup(colGroup);\n }\n };\n ContentRender.prototype.getHeaderColGroup = function () {\n return this.parent.element.querySelector('.' + literals.gridHeader)\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').cloneNode(true);\n };\n ContentRender.prototype.initializeContentDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.element, {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n ContentRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n };\n ContentRender.prototype.canSkip = function (column, row, index) {\n /**\n * Skip the toggle visiblity operation when one of the following success\n * 1. Grid has empty records\n * 2. column visible property is unchanged\n * 3. cell`s isVisible property is same as column`s visible property.\n */\n return isNullOrUndefined(row) || //(1)\n isNullOrUndefined(column.visible) || //(2)\n row.cells[parseInt(index.toString(), 10)].visible === column.visible; //(3)\n };\n ContentRender.prototype.getModelGenerator = function () {\n return this.generator = this.parent.allowGrouping ? new GroupModelGenerator(this.parent) : new RowModelGenerator(this.parent);\n };\n ContentRender.prototype.renderEmpty = function (tbody) {\n this.getTable().appendChild(tbody);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector(literals.tbody).innerHTML = '';\n }\n };\n ContentRender.prototype.setSelection = function (uid, set, clearAll) {\n this.parent.notify(events.setFreezeSelection, { uid: uid, set: set, clearAll: clearAll });\n var row = this.getRows().filter(function (row) { return clearAll || uid === row.uid; });\n for (var j = 0; j < row.length; j++) {\n row[parseInt(j.toString(), 10)].isSelected = set;\n var cells = row[parseInt(j.toString(), 10)].cells;\n for (var k = 0; k < cells.length; k++) {\n cells[parseInt(k.toString(), 10)].isSelected = set;\n }\n }\n };\n ContentRender.prototype.getRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return !isNullOrUndefined(index) ? this.parent.getDataRows()[parseInt(index.toString(), 10)] : undefined;\n };\n ContentRender.prototype.getInfiniteRowIndex = function (index) {\n if (this.parent.infiniteScrollSettings.enableCache && !isNullOrUndefined(index)) {\n var fRows = this.parent.frozenRows;\n var idx = fRows > index ? 0 : fRows;\n var firstRowIndex = parseInt(this.parent.getRows()[parseInt(idx.toString(), 10)]\n .getAttribute(literals.dataRowIndex), 10);\n index = fRows > index ? index : (index - firstRowIndex) + fRows;\n }\n return index;\n };\n ContentRender.prototype.getVirtualRowIndex = function (index) {\n return index;\n };\n ContentRender.prototype.enableAfterRender = function (e) {\n if (e.module === 'group' && e.enable) {\n this.generator = this.getModelGenerator();\n }\n };\n ContentRender.prototype.setRowObjects = function (rows) {\n this.rows = rows;\n };\n /**\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.immutableModeRendering = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n gObj.hideSpinner();\n var key = gObj.getPrimaryKeyFieldNames()[0];\n var oldKeys = {};\n var newKeys = {};\n var newRowObjs = [];\n var oldIndexes = {};\n var oldRowObjs = gObj.getRowsObject().slice();\n var batchChangeKeys = this.getBatchEditedRecords(key, oldRowObjs);\n var newIndexes = {};\n var hasBatch = Object.keys(batchChangeKeys).length !== 0;\n if (gObj.getContent().querySelector('.e-emptyrow') || args.requestType === 'reorder'\n || this.parent.groupSettings.columns.length) {\n this.refreshContentRows(args);\n }\n else {\n if (gObj.currentViewData.length === 0) {\n return;\n }\n var oldRowElements = {};\n var tbody = gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var dataSource = gObj.currentViewData;\n var trs = [].slice.call(this.getTable().querySelector(literals.tbody).children);\n if (this.prevCurrentView.length) {\n var prevLen = this.prevCurrentView.length;\n var currentLen = dataSource.length;\n if (prevLen === currentLen) {\n for (var i = 0; i < currentLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n newKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]] = oldKeys[this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key]] = i;\n newIndexes[parseInt(i.toString(), 10)] = dataSource[parseInt(i.toString(), 10)][\"\" + key];\n oldRowElements[oldRowObjs[parseInt(i.toString(), 10)].uid] = trs[parseInt(i.toString(), 10)];\n oldIndexes[parseInt(i.toString(), 10)] = this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key];\n }\n }\n else {\n for (var i = 0; i < currentLen; i++) {\n newKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]] = i;\n newIndexes[parseInt(i.toString(), 10)] = dataSource[parseInt(i.toString(), 10)][\"\" + key];\n }\n for (var i = 0; i < prevLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n oldRowElements[oldRowObjs[parseInt(i.toString(), 10)].uid] = trs[parseInt(i.toString(), 10)];\n oldKeys[this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key]] = i;\n oldIndexes[parseInt(i.toString(), 10)] = this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key];\n }\n }\n }\n for (var i = 0; i < dataSource.length; i++) {\n var oldIndex = oldKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]];\n if (!isNullOrUndefined(oldIndex)) {\n var isEqual = false;\n if (this.parent.enableDeepCompare) {\n isEqual = this.objectEqualityChecker(this.prevCurrentView[parseInt(oldIndex.toString(), 10)], dataSource[parseInt(i.toString(), 10)]);\n }\n var tr = oldRowElements[oldRowObjs[parseInt(oldIndex.toString(), 10)]\n .uid];\n newRowObjs.push(oldRowObjs[parseInt(oldIndex.toString(), 10)]);\n if (this.rowElements[parseInt(oldIndex.toString(), 10)] && this.rowElements[parseInt(oldIndex.toString(), 10)].getAttribute('data-uid') === newRowObjs[parseInt(i.toString(), 10)].uid\n && ((hasBatch && isNullOrUndefined(batchChangeKeys[newIndexes[parseInt(i.toString(), 10)]]))\n || (!hasBatch && (isEqual\n || this.prevCurrentView[parseInt(oldIndex.toString(), 10)] === dataSource[parseInt(i.toString(), 10)])))) {\n if (oldIndex !== i) {\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n tbody.appendChild(tr);\n continue;\n }\n if ((hasBatch && !isNullOrUndefined(batchChangeKeys[newIndexes[parseInt(i.toString(), 10)]]))\n || (!this.parent.enableDeepCompare\n && dataSource[parseInt(i.toString(), 10)] !== this.prevCurrentView[parseInt(oldIndex.toString(), 10)])\n || (this.parent.enableDeepCompare && !isEqual)) {\n oldRowObjs[parseInt(oldIndex.toString(), 10)].setRowValue(dataSource[parseInt(i.toString(), 10)]);\n }\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n else {\n var row = new RowRenderer(this.serviceLocator, null, gObj);\n var args_1 = { startIndex: i };\n var modelData = this.generator.generateRows([dataSource[parseInt(i.toString(), 10)]], args_1);\n newRowObjs.push(modelData[0]);\n var tr = row.render(modelData[0], gObj.getColumns());\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n }\n this.rows = newRowObjs;\n this.rowElements = [].slice.call(tbody.children);\n remove(this.getTable().querySelector(literals.tbody));\n this.getTable().appendChild(tbody);\n this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n this.parent.notify(action, args);\n }\n }\n };\n ContentRender.prototype.objectEqualityChecker = function (old, next) {\n var keys = Object.keys(old);\n var isEqual = true;\n for (var i = 0; i < keys.length; i++) {\n if (old[keys[parseInt(i.toString(), 10)]] !== next[keys[parseInt(i.toString(), 10)]]) {\n var isDate = old[keys[parseInt(i.toString(), 10)]] instanceof Date\n && next[keys[parseInt(i.toString(), 10)]] instanceof Date;\n if (!isDate || (old[keys[parseInt(i.toString(), 10)]]\n .getTime() !== next[keys[parseInt(i.toString(), 10)]].getTime())) {\n isEqual = false;\n break;\n }\n }\n }\n return isEqual;\n };\n ContentRender.prototype.getBatchEditedRecords = function (primaryKey, rows) {\n var keys = {};\n var changes = this.parent.getBatchChanges();\n var changedRecords = [];\n var addedRecords = [];\n if (Object.keys(changes).length) {\n changedRecords = changes.changedRecords;\n addedRecords = changes.addedRecords;\n }\n var args = { cancel: false };\n this.parent.notify(events.immutableBatchCancel, { rows: rows, args: args });\n if (addedRecords.length) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n rows.splice(rows.length - 1, addedRecords.length);\n }\n else {\n if (!args.cancel) {\n rows.splice(0, addedRecords.length);\n }\n }\n }\n for (var i = 0; i < changedRecords.length; i++) {\n keys[changedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey]] = i;\n }\n return keys;\n };\n ContentRender.prototype.refreshImmutableContent = function (index, tr, row) {\n row.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n if (row.isAltRow) {\n tr.classList.add('e-altrow');\n }\n else {\n tr.classList.remove('e-altrow');\n }\n row.index = index;\n row.edit = undefined;\n row.isDirty = false;\n tr.setAttribute(literals.dataRowIndex, index.toString());\n tr.setAttribute(literals.ariaRowIndex, (index + 1).toString());\n this.updateCellIndex(tr, index);\n };\n ContentRender.prototype.updateCellIndex = function (rowEle, index) {\n for (var i = 0; i < rowEle.cells.length; i++) {\n rowEle.cells[parseInt(i.toString(), 10)].setAttribute('index', index.toString());\n }\n };\n return ContentRender;\n}());\nexport { ContentRender };\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, closest as getClosest, remove } from '@syncfusion/ej2-base';\nimport { classList } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowRenderer } from './row-renderer';\nimport { Cell } from '../models/cell';\nimport { Row } from '../models/row';\nimport * as events from '../base/constant';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { parentsUntil, wrap, measureColumnDepth, appendChildren, addFixedColumnBorder } from '../base/util';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar HeaderRender = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function HeaderRender(parent, serviceLocator) {\n var _this = this;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n this.isFirstCol = false;\n this.isReplaceDragEle = true;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = _this.draggable.currentStateTarget;\n var parentEle = parentsUntil(target, 'e-headercell');\n if (!(gObj.allowReordering || gObj.allowGrouping) || (!isNullOrUndefined(parentEle)\n && parentEle.getElementsByClassName('e-checkselectall').length > 0)) {\n return false;\n }\n var visualElement = _this.parent.createElement('div', { className: 'e-cloneproperties e-dragclone e-headerclone' });\n var element = target.classList.contains('e-headercell') ? target : parentEle;\n if (!element || (!gObj.allowReordering && element.classList.contains('e-stackedheadercell'))) {\n return false;\n }\n var height = element.offsetHeight;\n var headercelldiv = element.querySelector('.e-headercelldiv') || element.querySelector('.e-stackedheadercelldiv');\n var col;\n if (headercelldiv) {\n if (element.querySelector('.e-stackedheadercelldiv')) {\n col = gObj.getStackedHeaderColumnByHeaderText(headercelldiv.innerText.trim(), gObj.columns);\n }\n else {\n col = gObj.getColumnByUid(headercelldiv.getAttribute('e-mappinguid'));\n }\n _this.column = col;\n if (_this.column.lockColumn) {\n return false;\n }\n visualElement.setAttribute('e-mappinguid', _this.column.uid);\n }\n if (col && !isNullOrUndefined(col.headerTemplate)) {\n if (!isNullOrUndefined(col.headerTemplate)) {\n var colIndex = gObj.getColumnIndexByField(col.field);\n var result = col.getHeaderTemplate()(extend({ 'index': colIndex }, col), gObj, 'headerTemplate');\n var isReactCompiler = gObj.isReact && typeof (col.headerTemplate) !== 'string';\n var isReactChild = gObj.parentDetails && gObj.parentDetails.parentInstObj &&\n gObj.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n gObj.renderTemplates();\n }\n appendChildren(visualElement, result);\n }\n else {\n visualElement.innerHTML = col.headerTemplate;\n }\n if (!isNullOrUndefined(visualElement.firstChild) && visualElement.firstChild.nodeType === 1) {\n visualElement.firstChild.style.pointerEvents = 'none';\n }\n }\n else {\n visualElement.innerHTML = headercelldiv ?\n col.headerText : element.firstElementChild.innerHTML;\n }\n visualElement.style.width = element.offsetWidth + 'px';\n visualElement.style.height = element.offsetHeight + 'px';\n visualElement.style.lineHeight = (height - 6).toString() + 'px';\n gObj.element.appendChild(visualElement);\n return visualElement;\n };\n this.dragStart = function (e) {\n var gObj = _this.parent;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n gObj.notify(events.columnDragStart, { target: _this.draggable.currentStateTarget, column: _this.column, event: e.event });\n };\n this.drag = function (e) {\n var gObj = _this.parent;\n var target = e.target;\n if (target) {\n var closest = getClosest(target, '.e-grid');\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n if (!closest || closest.getAttribute('id') !== gObj.element.getAttribute('id')) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n if (gObj.allowReordering) {\n gObj.element.querySelector('.e-reorderuparrow').style.display = 'none';\n gObj.element.querySelector('.e-reorderdownarrow').style.display = 'none';\n }\n if (!gObj.groupSettings.allowReordering) {\n return;\n }\n }\n gObj.notify(events.columnDrag, { target: e.target, column: _this.column, event: e.event });\n }\n };\n this.dragStop = function (e) {\n var gObj = _this.parent;\n var cancel;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n if ((!parentsUntil(e.target, 'e-headercell') && !parentsUntil(e.target, 'e-groupdroparea')) ||\n (!gObj.allowReordering && parentsUntil(e.target, 'e-headercell')) ||\n (!e.helper.getAttribute('e-mappinguid') && parentsUntil(e.target, 'e-groupdroparea'))) {\n remove(e.helper);\n cancel = true;\n }\n gObj.notify(events.columnDragStop, { target: e.target, event: e.event, column: _this.column, cancel: cancel });\n };\n this.drop = function (e) {\n var gObj = _this.parent;\n var uid = e.droppedElement.getAttribute('e-mappinguid');\n var closest = getClosest(e.target, '.e-grid');\n remove(e.droppedElement);\n if (closest && closest.getAttribute('id') !== gObj.element.getAttribute('id') ||\n !(gObj.allowReordering || gObj.allowGrouping)) {\n return;\n }\n gObj.notify(events.headerDrop, { target: e.target, uid: uid, droppedElement: e.droppedElement });\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.widthService = this.serviceLocator.getService('widthService');\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.columnPositionChanged, this.colPosRefresh, this);\n this.parent.on(events.initialEnd, this.renderCustomToolbar, this);\n if (this.parent.rowRenderingMode === 'Vertical') {\n this.parent.on(events.uiUpdate, this.updateCustomResponsiveToolbar, this);\n }\n }\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderPanel = function () {\n var div = this.parent.element.querySelector('.' + literals.gridHeader);\n var isRendered = (div != null);\n div = isRendered ? div : this.parent.createElement('div', { className: 'e-gridheader' });\n var innerDiv = isRendered ? div.querySelector('.' + literals.headerContent) :\n this.parent.createElement('div', { className: literals.headerContent });\n this.toggleStackClass(div);\n div.appendChild(innerDiv);\n this.setPanel(div);\n if (!isRendered) {\n this.parent.element.appendChild(div);\n }\n };\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderTable = function () {\n var headerDiv = this.getPanel();\n headerDiv.appendChild(this.createHeaderTable());\n this.setTable(headerDiv.querySelector('.' + literals.table));\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n this.parent.notify(events.headerRefreshed, { rows: this.rows });\n };\n /**\n * Get the header content div element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getPanel = function () {\n return this.headerPanel;\n };\n /**\n * Set the header content div element of grid\n *\n * @param {Element} panel - specifies the panel element\n * @returns {void}\n */\n HeaderRender.prototype.setPanel = function (panel) {\n this.headerPanel = panel;\n };\n /**\n * Get the header table element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getTable = function () {\n return this.headerTable;\n };\n /**\n * Set the header table element of grid\n *\n * @param {Element} table - specifies the table element\n * @returns {void}\n */\n HeaderRender.prototype.setTable = function (table) {\n this.headerTable = table;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.setColGroup = function (colGroup) {\n return this.colgroup = colGroup;\n };\n /**\n * Get the header row element collection.\n *\n * @returns {Element[]} returns the element\n */\n HeaderRender.prototype.getRows = function () {\n var table = this.getTable();\n return table.tHead.rows;\n };\n /**\n * The function is used to create header table elements\n *\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createHeaderTable = function () {\n var table = this.createTable();\n var innerDiv = this.getPanel().querySelector('.' + literals.headerContent);\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * The function is used to create header table elements\n *\n * @param {Element} tableEle - specifies the table Element\n * @param {freezeTable} tableName - specifies the table name\n * @returns {Element} returns the element\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.createHeader = function (tableEle, tableName) {\n if (tableEle === void 0) { tableEle = null; }\n var gObj = this.parent;\n if (this.getTable()) {\n remove(this.getTable());\n }\n var table = this.parent.createElement('table', { className: literals.table, attrs: { cellspacing: '0.25px', role: 'presentation' } });\n var findHeaderRow = this.createHeaderContent(tableName);\n var thead = findHeaderRow.thead;\n var tbody = this.parent.createElement(literals.tbody, { className: this.parent.frozenRows ||\n ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) && this.parent.editSettings.showAddNewRow) ? '' :\n 'e-hide', attrs: { role: 'rowgroup' } });\n this.caption = this.parent.createElement('caption', { innerHTML: this.parent.element.id + '_header_table', className: 'e-hide' });\n var colGroup = this.parent.createElement(literals.colGroup);\n var rowBody = this.parent.createElement('tr', { attrs: { role: 'row' }, className: (this.parent.enableVirtualization ||\n this.parent.enableInfiniteScrolling) && this.parent.editSettings.showAddNewRow ? 'e-hide' : '' });\n var bodyCell;\n var rows = this.rows = findHeaderRow.rows;\n for (var i = 0, len = rows.length; i < len; i++) {\n for (var j = 0, len_1 = rows[parseInt(i.toString(), 10)].cells.length; j < len_1; j++) {\n bodyCell = this.parent.createElement('td');\n rowBody.appendChild(bodyCell);\n }\n }\n if (gObj.allowFiltering || gObj.allowSorting || gObj.allowGrouping) {\n table.classList.add('e-sortfilter');\n }\n this.updateColGroup(colGroup);\n tbody.appendChild(rowBody);\n table.appendChild(this.setColGroup(colGroup));\n table.appendChild(thead);\n table.appendChild(tbody);\n table.appendChild(this.caption);\n return table;\n };\n /**\n * @param {Element} tableEle - specifies the column\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createTable = function (tableEle) {\n if (tableEle === void 0) { tableEle = null; }\n return this.createHeader(tableEle);\n };\n HeaderRender.prototype.createHeaderContent = function (tableName) {\n var gObj = this.parent;\n var columns = gObj.getColumns();\n var thead = this.parent.createElement('thead', { attrs: { 'role': 'rowgroup' } });\n var colHeader = this.parent.createElement('tr', { className: 'e-columnheader', attrs: { role: 'row' } });\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Header, gObj);\n rowRenderer.element = colHeader;\n var rows = [];\n var headerRow;\n this.colDepth = measureColumnDepth(gObj.columns);\n for (var i = 0, len = this.colDepth; i < len; i++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(i);\n rows[parseInt(i.toString(), 10)].cells = [];\n }\n rows = this.ensureColumns(rows);\n rows = this.getHeaderCells(rows, tableName);\n if (gObj.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n for (var i = 0, len = rows.length; i < len; i++) {\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n }\n for (var i = 0, len = this.colDepth; i < len; i++) {\n headerRow = rowRenderer.render(rows[parseInt(i.toString(), 10)], columns);\n if (this.parent.rowHeight && headerRow.querySelector('.e-headercell')) {\n headerRow.style.height = this.parent.rowHeight + 'px';\n }\n addFixedColumnBorder(headerRow);\n thead.appendChild(headerRow);\n }\n var findHeaderRow = {\n thead: thead,\n rows: rows\n };\n return findHeaderRow;\n };\n HeaderRender.prototype.updateColGroup = function (colGroup) {\n var cols = this.parent.getColumns();\n var col;\n var indexes = this.parent.getColumnIndexesInView();\n colGroup.id = this.parent.element.id + literals.colGroup;\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n continue;\n }\n col = this.parent.createElement('col', { className: 'e-group-intent' });\n colGroup.appendChild(col);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n col = this.parent.createElement('col', { className: 'e-detail-intent' });\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n col = this.parent.createElement('col');\n if (cols[parseInt(i.toString(), 10)].visible === false) {\n setStyleAttribute(col, { 'display': 'none' });\n }\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n return colGroup;\n };\n HeaderRender.prototype.ensureColumns = function (rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n var gObj = this.parent;\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (gObj.allowGrouping) {\n for (var c = 0, len_2 = gObj.groupSettings.columns.length; c < len_2; c++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(c) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (gObj.detailTemplate || gObj.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell(args, CellType.DetailHeader));\n }\n if (gObj.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n }\n return rows;\n };\n HeaderRender.prototype.getHeaderCells = function (rows, tableName) {\n var thead = this.parent.getHeaderTable() && this.parent.getHeaderTable().querySelector('thead');\n var cols = this.parent.enableColumnVirtualization ?\n this.parent.getColumns(this.parent.enablePersistence) : this.parent.columns;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n if (this.parent.lockcolPositionCount) {\n for (var i = 0; i < cols.length; i++) {\n this.lockColsRendered = false;\n rows = this.appendCells(cols[parseInt(i.toString(), 10)], rows, 0, i === 0, false, i === (cols.length - 1), thead, tableName, false);\n }\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.notfrzIdx = 0;\n this.lockColsRendered = true;\n rows = this.appendCells(cols[parseInt(i.toString(), 10)], rows, 0, i === 0, false, i === (len - 1), thead, tableName, false);\n }\n return rows;\n };\n HeaderRender.prototype.appendCells = function (cols, rows, index, isFirstObj, isFirstCol, isLastCol, isMovable, tableName, isStackLastCol) {\n var lastCol = isLastCol ? isStackLastCol ? 'e-laststackcell' : 'e-lastcell' : '';\n var isLockColumn = !this.parent.lockcolPositionCount\n || (cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered);\n if (!cols.columns) {\n if (isLockColumn) {\n rows[parseInt(index.toString(), 10)].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n if (this.parent.lockcolPositionCount) {\n if ((this.frzIdx + this.notfrzIdx < this.parent.frozenColumns) &&\n ((cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered))) {\n this.frzIdx++;\n }\n else {\n this.notfrzIdx++;\n }\n }\n else {\n this.frzIdx++;\n }\n }\n else {\n this.isFirstCol = false;\n var colSpan = this.getCellCnt(cols, 0);\n if (colSpan) {\n var stackedLockColsCount = this.getStackedLockColsCount(cols, 0);\n var isStackedLockColumn = this.parent.lockcolPositionCount === 0\n || (!this.lockColsRendered && stackedLockColsCount !== 0)\n || (this.lockColsRendered && (colSpan - stackedLockColsCount) !== 0);\n if (isStackedLockColumn) {\n rows[parseInt(index.toString(), 10)].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols,\n colSpan: this.getColSpan(colSpan, stackedLockColsCount),\n className: isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')\n }));\n }\n }\n if (this.parent.lockcolPositionCount && !this.lockColsRendered) {\n for (var i = 0; i < cols.columns.length; i++) {\n rows = this.appendCells(cols.columns[parseInt(i.toString(), 10)], rows, index + 1, isFirstObj, i === 0, i === (cols.columns.length - 1) && isLastCol, isMovable, tableName, false);\n }\n }\n if (this.lockColsRendered) {\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n isFirstObj = isFirstObj && i === 0;\n var isFirstCol_1 = this.isFirstCol = cols.columns[parseInt(i.toString(), 10)].visible\n && !isFirstObj;\n var isLaststackedCol = i === (len - 1) && isLastCol;\n rows = this.appendCells(cols.columns[parseInt(i.toString(), 10)], rows, index + 1, isFirstObj, isFirstCol_1 && !isLaststackedCol, isLaststackedCol, isMovable, tableName, true);\n }\n }\n }\n return rows;\n };\n HeaderRender.prototype.getStackedLockColsCount = function (col, lockColsCount) {\n if (col.columns) {\n for (var i = 0; i < col.columns.length; i++) {\n lockColsCount = this.getStackedLockColsCount(col.columns[parseInt(i.toString(), 10)], lockColsCount);\n }\n }\n else if (col.lockColumn) {\n lockColsCount++;\n }\n return lockColsCount;\n };\n HeaderRender.prototype.getColSpan = function (colSpan, stackedLockColsCount) {\n colSpan = !this.lockColsRendered ? stackedLockColsCount : colSpan - stackedLockColsCount;\n return colSpan;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.generateRow = function (index) {\n return new Row({});\n };\n HeaderRender.prototype.generateCell = function (column, cellType, rowSpan, className, rowIndex, colIndex) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'isTemplate': !isNullOrUndefined(column.headerTemplate),\n 'rowID': '',\n 'column': column,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'className': className,\n 'index': rowIndex,\n 'colIndex': colIndex\n };\n if (!opt.rowSpan || opt.rowSpan < 2) {\n delete opt.rowSpan;\n }\n return new Cell(opt);\n };\n /**\n * Function to hide header table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n HeaderRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var displayVal;\n var idx;\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n setStyleAttribute(this.getColGroup().children[parseInt(idx.toString(), 10)], { 'display': displayVal });\n if (gObj.editSettings.showAddNewRow && gObj.element.querySelector('.e-addedrow')) {\n setStyleAttribute(gObj.element.querySelector('.e-addedrow').querySelector('colgroup').childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n }\n this.refreshUI();\n if (this.parent.editSettings.showAddNewRow) {\n this.parent.isAddNewRow = true;\n }\n };\n HeaderRender.prototype.colPosRefresh = function () {\n this.refreshUI();\n };\n /**\n * Refresh the header of the Grid.\n *\n * @returns {void}\n */\n HeaderRender.prototype.refreshUI = function () {\n var headerDiv = this.getPanel();\n this.toggleStackClass(headerDiv);\n var table = this.freezeReorder ? this.headerPanel.querySelector('.' + literals.movableHeader).querySelector('.' + literals.table)\n : this.getTable();\n var tableName = undefined;\n if (table) {\n remove(table);\n if (this.parent.editSettings.showAddNewRow && !this.parent.isAddNewRow && table.querySelector('.e-addedrow') &&\n (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n (table.querySelector('.e-addedrow')).classList.add('e-addrow-removed');\n this.parent.isAddNewRow = true;\n }\n table.removeChild(table.firstChild);\n table.removeChild(table.childNodes[0]);\n var colGroup = this.parent.createElement(literals.colGroup);\n var findHeaderRow = this.createHeaderContent(tableName);\n this.rows = findHeaderRow.rows;\n table.insertBefore(findHeaderRow.thead, table.firstChild);\n this.updateColGroup(colGroup);\n table.insertBefore(this.setColGroup(colGroup), table.firstChild);\n this.appendContent(table);\n this.parent.notify(events.colGroupRefresh, {});\n this.widthService.setWidthToColumns();\n this.parent.updateDefaultCursor();\n this.initializeHeaderDrag();\n var rows = [].slice.call(headerDiv.querySelectorAll('tr.e-columnheader'));\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n var gCells = [].slice.call(row.getElementsByClassName('e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n }\n this.parent.notify(events.headerRefreshed, { rows: this.rows });\n if (this.parent.enableColumnVirtualization && parentsUntil(table, literals.movableHeader)) {\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: false, isXaxis: true } });\n }\n if (this.parent.allowTextWrap && this.parent.textWrapSettings.wrapMode === 'Header') {\n wrap(rows, true);\n }\n }\n var firstHeaderCell = this.parent.getHeaderContent().querySelector('.e-headercell:not(.e-hide)');\n if (!isNullOrUndefined(firstHeaderCell)) {\n firstHeaderCell.tabIndex = 0;\n }\n };\n HeaderRender.prototype.toggleStackClass = function (div) {\n var column = this.parent.columns;\n var stackedHdr = column.some(function (column) { return !isNullOrUndefined(column.columns); });\n if (stackedHdr) {\n div.classList.add('e-stackedheader');\n }\n else {\n div.classList.remove('e-stackedheader');\n }\n };\n HeaderRender.prototype.appendContent = function (table) {\n this.getPanel().querySelector('.' + literals.headerContent).appendChild(table);\n };\n HeaderRender.prototype.getCellCnt = function (col, cnt) {\n if (col.columns) {\n for (var i = 0, len = col.columns.length; i < len; i++) {\n cnt = this.getCellCnt(col.columns[parseInt(i.toString(), 10)], cnt);\n }\n }\n else {\n if (col.visible) {\n cnt++;\n }\n }\n return cnt;\n };\n HeaderRender.prototype.initializeHeaderDrag = function () {\n var gObj = this.parent;\n if (!(this.parent.allowReordering || (this.parent.allowGrouping && this.parent.groupSettings.showDropArea))) {\n return;\n }\n this.draggable = new Draggable(gObj.getHeaderContent(), {\n dragTarget: '.e-headercell',\n distance: 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop,\n abort: '.e-rhandler',\n isReplaceDragEle: this.isReplaceDragEle\n });\n this.parent.on(events.destroy, this.droppableDestroy, this);\n };\n HeaderRender.prototype.initializeHeaderDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.getHeaderContent(), {\n accept: '.e-dragclone',\n drop: this.drop\n });\n this.parent.on(events.destroy, this.droppableDestroy, this);\n };\n HeaderRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n if (this.draggable && !this.draggable.isDestroyed) {\n this.draggable.destroy();\n }\n };\n HeaderRender.prototype.renderCustomToolbar = function () {\n var _this = this;\n var gObj = this.parent;\n if (gObj.rowRenderingMode === 'Vertical' && !gObj.toolbar\n && (gObj.allowSorting || (gObj.allowFiltering && gObj.filterSettings.type !== 'FilterBar'))) {\n var div = gObj.createElement('div', { className: 'e-res-toolbar e-toolbar' });\n var toolbarItems = gObj.createElement('div', { className: 'e-toolbar-items' });\n var toolbarLeft = gObj.createElement('div', { className: 'e-toolbar-left' });\n var count = this.parent.allowFiltering && this.parent.allowSorting ? 2 : 1;\n for (var i = 0; i < count; i++) {\n var toolbarItem = gObj.createElement('div', { className: 'e-toolbar-item e-gridresponsiveicons e-icons e-tbtn-align' });\n var cls = count === 1 ? this.parent.allowSorting ? 'sort'\n : 'filter' : i === 1 ? 'sort' : 'filter';\n var button = gObj.createElement('button', { className: 'e-tbar-btn e-control e-btn e-lib e-icon-btn' });\n var span = gObj.createElement('span', { className: 'e-btn-icon e-res' + cls + '-icon e-icons' });\n button.appendChild(span);\n var btnObj = new Button({\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n btnObj.appendTo(button);\n button.onclick = function (e) {\n if (e.target.classList.contains('e-ressort-btn')\n || e.target.classList.contains('e-ressort-icon') ||\n e.target.querySelector('.e-ressort-icon')) {\n _this.parent.showResponsiveCustomSort();\n }\n else {\n _this.parent.showResponsiveCustomFilter();\n }\n };\n toolbarItem.appendChild(button);\n toolbarLeft.appendChild(toolbarItem);\n }\n toolbarItems.appendChild(toolbarLeft);\n div.appendChild(toolbarItems);\n gObj.element.insertBefore(div, this.parent.element.querySelector('.' + literals.gridHeader));\n }\n else {\n if (gObj.enableAdaptiveUI && !gObj.toolbar) {\n gObj.getContent().classList.add('e-responsive-header');\n }\n }\n };\n HeaderRender.prototype.updateCustomResponsiveToolbar = function (args) {\n var resToolbar = this.parent.element.querySelector('.e-responsive-toolbar');\n if (args.module === 'toolbar') {\n if (resToolbar) {\n remove(resToolbar);\n }\n else {\n this.renderCustomToolbar();\n }\n }\n };\n return HeaderRender;\n}());\nexport { HeaderRender };\n","import { remove, addClass } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { doesImplementInterface, setStyleAndAttributes, appendChildren, extendObjWithFn, addStickyColumnPosition } from '../base/util';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { foreignKeyData } from '../base/constant';\nimport { CellType } from '../base/enum';\nimport * as literals from '../base/string-literals';\n/**\n * CellRenderer class which responsible for building cell content.\n *\n * @hidden\n */\nvar CellRenderer = /** @class */ (function () {\n function CellRenderer(parent, locator) {\n this.localizer = locator.getService('localization');\n this.formatter = locator.getService('valueFormatter');\n this.parent = parent;\n this.element = this.parent.createElement('TD', { className: literals.rowCell, attrs: { role: 'gridcell', tabindex: '-1' } });\n this.rowChkBox = this.parent.createElement('input', { className: 'e-checkselect', attrs: { 'type': 'checkbox', 'aria-label': this.localizer.getConstant('SelectRow') } });\n }\n /**\n * Function to return the wrapper for the TD content\n *\n * @returns {string | Element} returns the string\n */\n CellRenderer.prototype.getGui = function () {\n return '';\n };\n /**\n * Function to format the cell value.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {string} returns the format\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.format = function (column, value, data) {\n if (!isNullOrUndefined(column.format)) {\n if (column.type === 'number' && isNaN(parseInt(value, 10))) {\n value = null;\n }\n if (column.type === 'dateonly' && typeof value === 'string' && value) {\n var arr = value.split(/[^0-9.]/);\n value = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n value = this.formatter.toView(value, column.getFormatter());\n }\n return isNullOrUndefined(value) ? '' : value.toString();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.evaluate = function (node, cell, data, attributes, fData, isEdit) {\n var _a;\n var result;\n if (cell.column.template) {\n var isReactCompiler = this.parent.isReact && typeof (cell.column.template) !== 'string' && cell.column.template.prototype && !(cell.column.template.prototype).CSPTemplate;\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var literals_1 = ['index'];\n var dummyData = extendObjWithFn({}, data, (_a = {}, _a[foreignKeyData] = fData, _a.column = cell.column, _a));\n var templateID = this.parent.element.id + cell.column.uid;\n var str = 'isStringTemplate';\n if (isReactCompiler || isReactChild) {\n var copied = { 'index': attributes[literals_1[0]] };\n cell.column.getColumnTemplate()(extend(copied, dummyData), this.parent, 'columnTemplate', templateID, this.parent[\"\" + str], null, node);\n }\n else {\n result = cell.column.getColumnTemplate()(extend({ 'index': attributes[literals_1[0]] }, dummyData), this.parent, 'template', templateID, this.parent[\"\" + str], undefined, undefined, this.parent['root']);\n }\n if (!isReactCompiler && !isReactChild) {\n appendChildren(node, result);\n }\n this.parent.notify('template-result', { template: result });\n result = null;\n node.setAttribute('aria-label', node.innerText + this.localizer.getConstant('TemplateCell') +\n this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n return false;\n }\n return true;\n };\n /**\n * Function to invoke the custom formatter available in the column object.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {Object} returns the object\n */\n CellRenderer.prototype.invokeFormatter = function (column, value, data) {\n if (!isNullOrUndefined(column.formatter)) {\n if (doesImplementInterface(column.formatter, 'getValue')) {\n var formatter = column.formatter;\n value = new formatter().getValue(column, data);\n }\n else if (typeof column.formatter === 'function') {\n value = column.formatter(column, data);\n }\n else {\n value = column.formatter.getValue(column, data);\n }\n }\n return value;\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @param {boolean} isExpand - specifies the boolean for expand\n * @param {boolean} isEdit - specifies the boolean for edit\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.render = function (cell, data, attributes, isExpand, isEdit) {\n return this.refreshCell(cell, data, attributes, isEdit);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Element} td - specifies the element\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attribute\n * @returns {void}\n */\n CellRenderer.prototype.refreshTD = function (td, cell, data, attributes) {\n var isEdit = this.parent.editSettings.mode === 'Batch' && td.classList.contains('e-editedbatchcell');\n if (this.parent.isReact) {\n var cellIndex = td.cellIndex;\n var parentRow = td.parentElement;\n remove(td);\n var newTD = this.refreshCell(cell, data, attributes, isEdit);\n this.cloneAttributes(newTD, td);\n if (parentRow.cells.length !== cellIndex - 1) {\n parentRow.insertBefore(newTD, parentRow.cells[parseInt(cellIndex.toString(), 10)]);\n }\n else {\n parentRow.appendChild(newTD);\n }\n }\n else {\n var node = this.refreshCell(cell, data, attributes, isEdit);\n td.innerHTML = '';\n var arialabelText = node.getAttribute('aria-label');\n arialabelText ? td.setAttribute('aria-label', arialabelText) : null;\n var elements = [].slice.call(node.childNodes);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n td.appendChild(elem);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n CellRenderer.prototype.cloneAttributes = function (target, source) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attrs = source.attributes;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var i = attrs.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attr;\n while (i--) {\n attr = attrs[parseInt(i.toString(), 10)];\n target.setAttribute(attr.name, attr.value);\n }\n };\n CellRenderer.prototype.refreshCell = function (cell, data, attributes, isEdit) {\n var _a;\n var node = this.element.cloneNode();\n var column = cell.column;\n var fData;\n if (cell.isForeignKey) {\n fData = cell.foreignKeyData[0] || (_a = {}, _a[column.foreignKeyValue] = column.format ? null : '', _a);\n }\n //Prepare innerHtml\n var innerHtml = this.getGui();\n var value = cell.isForeignKey ? this.getValue(column.foreignKeyValue, fData, column) :\n this.getValue(column.field, data, column);\n if ((column.type === 'date' || column.type === 'datetime') && !isNullOrUndefined(value)) {\n value = new Date(value);\n }\n if (column.type === 'dateonly' && !isNullOrUndefined(value) && typeof value === 'string') {\n var arr = value.split(/[^0-9.]/);\n value = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n value = this.format(column, value, data);\n innerHtml = value.toString();\n if (column.type === 'boolean' && !column.displayAsCheckBox) {\n var localeStr = (value !== 'true' && value !== 'false') ? null : value === 'true' ? 'True' : 'False';\n innerHtml = localeStr ? this.localizer.getConstant(localeStr) : innerHtml;\n }\n var fromFormatter = this.invokeFormatter(column, value, data);\n innerHtml = !isNullOrUndefined(column.formatter) ? isNullOrUndefined(fromFormatter) ? '' : fromFormatter.toString() : innerHtml;\n if (this.evaluate(node, cell, data, attributes, fData, isEdit) && column.type !== 'checkbox') {\n this.appendHtml(node, this.parent.sanitize(innerHtml), column.getDomSetter ? column.getDomSetter() : 'innerHTML');\n }\n else if (column.type === 'checkbox') {\n node.classList.add(literals.gridChkBox);\n if (this.parent.selectionSettings.persistSelection) {\n value = value === 'true';\n }\n else {\n value = false;\n }\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n if (this.parent.cssClass) {\n addClass([checkWrap], [this.parent.cssClass]);\n }\n this.rowChkBox.id = 'checkbox-' + cell.rowID;\n checkWrap.insertBefore(this.rowChkBox.cloneNode(), checkWrap.firstChild);\n node.appendChild(checkWrap);\n }\n if (this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n cell.isSelected = true;\n }\n this.setAttributes(node, cell, attributes);\n if (column.type === 'boolean' && column.displayAsCheckBox) {\n var checked = isNaN(parseInt(value.toString(), 10)) ? value === 'true' : parseInt(value.toString(), 10) > 0;\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: checked, label: ' ' });\n node.innerHTML = '';\n node.classList.add('e-gridchkbox-cell');\n checkWrap.classList.add('e-checkbox-disabled');\n if (this.parent.cssClass) {\n addClass([checkWrap], [this.parent.cssClass]);\n }\n node.appendChild(checkWrap);\n }\n if (node.classList.contains('e-summarycell') && !data.key) {\n var uid = node.getAttribute('e-mappinguid');\n column = this.parent.getColumnByUid(uid);\n node.setAttribute('aria-label', innerHtml + this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n }\n if (this.parent.isFrozenGrid() && (!data || (data && !data.key))) {\n addStickyColumnPosition(this.parent, column, node);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHTML\n * @param {string} property - specifies the element\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.appendHtml = function (node, innerHtml, property) {\n if (property === void 0) { property = 'innerHTML'; }\n node[\"\" + property] = innerHtml;\n return node;\n };\n /**\n * @param {HTMLElement} node - specifies the node\n * @param {cell} cell - specifies the cell\n * @param {Object} attributes - specifies the attributes\n * @returns {void}\n * @hidden\n */\n CellRenderer.prototype.setAttributes = function (node, cell, attributes) {\n var column = cell.column;\n this.buildAttributeFromCell(node, cell, column.type === 'checkbox');\n setStyleAndAttributes(node, attributes);\n setStyleAndAttributes(node, cell.attributes);\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(node, { 'data-cell': column.headerText });\n }\n if (column.textAlign) {\n node.style.textAlign = column.textAlign;\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')\n && !(this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Content'\n || this.parent.textWrapSettings.wrapMode === 'Both'))) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n };\n CellRenderer.prototype.buildAttributeFromCell = function (node, cell, isCheckBoxType) {\n var attr = {};\n var prop = { 'colindex': literals.dataColIndex };\n var classes = [];\n if (cell.colSpan) {\n attr.colSpan = cell.colSpan;\n }\n if (cell.rowSpan) {\n attr.rowSpan = cell.rowSpan;\n }\n if (cell.isTemplate) {\n classes.push('e-templatecell');\n }\n if (cell.isSelected) {\n classes.push.apply(classes, ['e-selectionbackground', 'e-active']);\n if (isCheckBoxType) {\n node.querySelector('.e-frame').classList.add('e-check');\n }\n }\n if (cell.isColumnSelected) {\n classes.push.apply(classes, ['e-columnselection']);\n }\n if (cell.cellType === CellType.Header) {\n attr[prop.colindex] = cell.colIndex;\n attr[literals.ariaColIndex] = cell.colIndex + 1;\n }\n else if (!isNullOrUndefined(cell.index)) {\n attr[prop.colindex] = cell.index;\n attr[literals.ariaColIndex] = cell.index + 1;\n }\n if (!cell.visible) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(node, attr);\n };\n CellRenderer.prototype.getValue = function (field, data, column) {\n return column.valueAccessor(field, data, column);\n };\n return CellRenderer;\n}());\nexport { CellRenderer };\n","/**\n * AriaService\n *\n * @hidden\n */\nvar AriaService = /** @class */ (function () {\n function AriaService() {\n }\n AriaService.prototype.setOptions = function (target, options) {\n var props = Object.keys(options);\n for (var i = 0; i < props.length; i++) {\n setStateAndProperties(target, config[props[parseInt(i.toString(), 10)]], options[props[parseInt(i.toString(), 10)]]);\n }\n };\n AriaService.prototype.setExpand = function (target, expand) {\n setStateAndProperties(target, config.expand, expand);\n };\n AriaService.prototype.setSort = function (target, direction) {\n setStateAndProperties(target, config.sort, direction, typeof direction === 'boolean');\n };\n AriaService.prototype.setBusy = function (target, isBusy) {\n setStateAndProperties(target, config.busy, isBusy);\n setStateAndProperties(target, config.invalid, null, true);\n };\n AriaService.prototype.setGrabbed = function (target, isGrabbed, remove) {\n setStateAndProperties(target, config.grabbed, isGrabbed, remove);\n };\n AriaService.prototype.setDropTarget = function (target, isTarget) {\n setStateAndProperties(target, config.dropeffect, 'copy', !isTarget);\n };\n return AriaService;\n}());\nexport { AriaService };\n/**\n * @param {HTMLElement} target - specifies the target\n * @param {string} attribute - specifies the attribute\n * @param {ValueType} value - specifies the value\n * @param {boolean} remove - specifies the boolean for remove\n * @returns {void}\n * @hidden\n */\nfunction setStateAndProperties(target, attribute, value, remove) {\n if (remove && target) {\n target.removeAttribute(attribute);\n return;\n }\n if (target) {\n target.setAttribute(attribute, value);\n }\n}\nvar config = {\n expand: 'aria-expanded',\n role: 'role',\n datarole: 'data-role',\n selected: 'aria-selected',\n multiselectable: 'aria-multiselectable',\n sort: 'aria-sort',\n busy: 'aria-busy',\n invalid: 'aria-invalid',\n grabbed: 'aria-grabbed',\n dropeffect: 'aria-dropeffect',\n haspopup: 'aria-haspopup',\n level: 'aria-level',\n colcount: 'aria-colcount',\n rowcount: 'aria-rowcount'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, extend, addClass } from '@syncfusion/ej2-base';\nimport { attributes } from '@syncfusion/ej2-base';\nimport { setStyleAndAttributes, appendChildren, addStickyColumnPosition } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\nimport { AriaService } from '../services/aria-service';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { headerCellInfo } from '../base/constant';\n/**\n * HeaderCellRenderer class which responsible for building header cell content.\n *\n * @hidden\n */\nvar HeaderCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderCellRenderer, _super);\n function HeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent\n .createElement('TH', { className: 'e-headercell', attrs: { tabindex: '-1', role: 'columnheader' } });\n _this.ariaService = new AriaService();\n _this.hTxtEle = _this.parent.createElement('span', { className: 'e-headertext' });\n _this.sortEle = _this.parent.createElement('div', { className: 'e-sortfilterdiv e-icons', attrs: { 'aria-hidden': 'true' } });\n _this.gui = _this.parent.createElement('div');\n _this.chkAllBox = _this.parent.createElement('input', { className: 'e-checkselectall', attrs: { 'type': 'checkbox', 'aria-label': _this.localizer.getConstant('SelectAllCheckbox') } });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n *\n * @returns {string | Element} returns the element\n */\n HeaderCellRenderer.prototype.getGui = function () {\n return this.gui.cloneNode();\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the column\n * @param {Object} data - specifies the data\n * @param {object} attributes - specifies the aattributes\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter', attrs: { 'aria-hidden': 'true' } });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Element} node - specifies the noe\n * @returns {Element} returns the element\n */\n HeaderCellRenderer.prototype.refresh = function (cell, node) {\n this.clean(node);\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter', attrs: { 'aria-hidden': 'true' } });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n HeaderCellRenderer.prototype.clean = function (node) {\n node.innerHTML = '';\n };\n /* tslint:disable-next-line:max-func-body-length */\n HeaderCellRenderer.prototype.prepareHeader = function (cell, node, fltrMenuEle) {\n var column = cell.column;\n var ariaAttr = {};\n var elementDesc = '';\n //Prepare innerHtml\n var innerDIV = this.getGui();\n var hValueAccer;\n attributes(innerDIV, {\n 'e-mappinguid': column.uid,\n 'class': 'e-headercelldiv'\n });\n if (!isNullOrUndefined(column.headerValueAccessor)) {\n hValueAccer = this.getValue(column.headerText, column);\n }\n if (column.type !== 'checkbox') {\n var value = column.headerText;\n if (!isNullOrUndefined(hValueAccer)) {\n value = hValueAccer;\n }\n var headerText = this.hTxtEle.cloneNode();\n headerText[column.getDomSetter()] = this.parent.sanitize(value);\n innerDIV.appendChild(headerText);\n }\n else {\n column.editType = 'booleanedit';\n var checkAllWrap = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.chkAllBox.id = 'checkbox-' + column.uid;\n checkAllWrap.insertBefore(this.chkAllBox.cloneNode(), checkAllWrap.firstChild);\n if (this.parent.cssClass) {\n addClass([checkAllWrap], [this.parent.cssClass]);\n }\n innerDIV.appendChild(checkAllWrap);\n innerDIV.classList.add('e-headerchkcelldiv');\n }\n this.buildAttributeFromCell(node, cell);\n this.appendHtml(node, innerDIV);\n node.appendChild(this.sortEle.cloneNode());\n if ((this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') &&\n (column.allowFiltering && !isNullOrUndefined(column.field)) &&\n !(this.parent.showColumnMenu && column.showColumnMenu)) {\n attributes(fltrMenuEle, {\n 'e-mappinguid': 'e-flmenu-' + column.uid\n });\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('FilterDescription') : this.localizer.getConstant('FilterDescription');\n node.classList.add('e-fltr-icon');\n var matchFlColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFlColumns.length) {\n var foreignColumn = this.parent.getForeignKeyColumns();\n for (var index = 0; index < this.parent.columns.length; index++) {\n for (var count = 0; count < this.parent.filterSettings.columns.length; count++) {\n if (this.parent.filterSettings.columns[parseInt(count.toString(), 10)].field === column.field\n || (foreignColumn.length\n && column.foreignKeyValue === this.parent.filterSettings.columns[parseInt(count.toString(), 10)].field)) {\n fltrMenuEle.classList.add('e-filtered');\n matchFlColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.appendChild(fltrMenuEle.cloneNode());\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.allowSorting && column.allowSorting) {\n ariaAttr.sort = 'none';\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('SortDescription') : this.localizer.getConstant('SortDescription');\n }\n if ((this.parent.allowGrouping && column.allowGrouping) || this.parent.allowReordering && column.allowReordering) {\n ariaAttr.grabbed = false;\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('GroupDescription') : this.localizer.getConstant('GroupDescription');\n }\n if (this.parent.showColumnMenu && column.type !== 'checkbox' && !column.template) {\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('ColumnMenuDescription') : this.localizer.getConstant('ColumnMenuDescription');\n }\n node = this.extendPrepareHeader(column, node);\n var result;\n var gridObj = this.parent;\n var colIndex = gridObj.getColumnIndexByField(column.field);\n if (!isNullOrUndefined(column.headerTemplate)) {\n //need to pass the template id for blazor headertemplate\n var headerTempID = gridObj.element.id + column.uid + 'headerTemplate';\n var str = 'isStringTemplate';\n var col = column;\n var isReactCompiler = this.parent.isReact && typeof (column.headerTemplate) !== 'string';\n var isReactChild_1 = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild_1) {\n var copied = { 'index': colIndex };\n node.firstElementChild.innerHTML = '';\n column.getHeaderTemplate()(extend(copied, col), gridObj, 'headerTemplate', headerTempID, this.parent[\"\" + str], null, node.firstElementChild);\n this.parent.renderTemplates();\n }\n else {\n result = column.getHeaderTemplate()(extend({ 'index': colIndex }, col), gridObj, 'headerTemplate', headerTempID, this.parent[\"\" + str], undefined, undefined, this.parent['root']);\n node.firstElementChild.innerHTML = '';\n appendChildren(node.firstElementChild, result);\n }\n }\n this.ariaService.setOptions(node, ariaAttr);\n if (!isNullOrUndefined(column.headerTextAlign) || !isNullOrUndefined(column.textAlign)) {\n var alignment = column.headerTextAlign || column.textAlign;\n innerDIV.style.textAlign = alignment;\n if (alignment === 'Right' || alignment === 'Left') {\n node.classList.add(alignment === 'Right' ? 'e-rightalign' : 'e-leftalign');\n }\n else if (alignment === 'Center') {\n node.classList.add('e-centeralign');\n }\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if ((column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip'))\n && !(gridObj.allowTextWrap && (gridObj.textWrapSettings.wrapMode === 'Header'\n || gridObj.textWrapSettings.wrapMode === 'Both'))) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n if (elementDesc) {\n var titleElem = (this.parent.createElement('span', { id: 'headerTitle-' + column.uid, innerHTML: elementDesc, attrs: { style: 'display:none' } }));\n node.appendChild(titleElem);\n node.setAttribute('aria-describedby', titleElem.id);\n }\n node.setAttribute('aria-rowspan', (!isNullOrUndefined(cell.rowSpan) ? cell.rowSpan : 1).toString());\n node.setAttribute('aria-colspan', '1');\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (((this.parent.isReact && this.parent.requireTemplateRef)\n || (isReactChild && this.parent.parentDetails.parentInstObj.requireTemplateRef))\n && !isNullOrUndefined(column.headerTemplate)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(headerCellInfo, { cell: cell, node: node });\n });\n }\n else {\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n }\n if (this.parent.isFrozenGrid()) {\n addStickyColumnPosition(this.parent, column, node);\n }\n return node;\n };\n HeaderCellRenderer.prototype.getValue = function (field, column) {\n return column.headerValueAccessor(field, column);\n };\n HeaderCellRenderer.prototype.extendPrepareHeader = function (column, node) {\n if (this.parent.showColumnMenu && column.showColumnMenu && !isNullOrUndefined(column.field)) {\n var element = (this.parent.createElement('div', { className: 'e-icons e-columnmenu', attrs: { 'aria-hidden': 'true' } }));\n var matchFilteredColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFilteredColumns.length) {\n for (var i = 0; i < this.parent.columns.length; i++) {\n for (var j = 0; j < this.parent.filterSettings.columns.length; j++) {\n if (this.parent.filterSettings.columns[parseInt(j.toString(), 10)].field === column.field) {\n element.classList.add('e-filtered');\n matchFilteredColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.classList.add('e-fltr-icon');\n node.appendChild(element);\n }\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHtml\n * @returns {Element} returns the element\n */\n HeaderCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n return HeaderCellRenderer;\n}(CellRenderer));\nexport { HeaderCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { headerCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, appendChildren, frozenDirection, isChildColumn, applyStickyLeftRightPosition } from '../base/util';\n/**\n * StackedHeaderCellRenderer class which responsible for building stacked header cell content.\n *\n * @hidden\n */\nvar StackedHeaderCellRenderer = /** @class */ (function (_super) {\n __extends(StackedHeaderCellRenderer, _super);\n function StackedHeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', {\n className: 'e-headercell e-stackedheadercell', attrs: {\n tabindex: '-1', role: 'columnheader'\n }\n });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {object} attributes - specifies the attributes\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n StackedHeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var div = this.parent.createElement('div', {\n className: 'e-stackedheadercelldiv',\n attrs: { 'e-mappinguid': cell.column.uid }\n });\n var column = cell.column;\n node.appendChild(div);\n if (!isNullOrUndefined(column.headerTemplate)) {\n appendChildren(div, column.getHeaderTemplate()(column, this.parent, 'headerTemplate'));\n }\n else {\n this.appendHtml(div, this.parent.sanitize(column.headerText), column.getDomSetter());\n }\n if (cell.column.toolTip) {\n node.setAttribute('title', cell.column.toolTip);\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n node.classList.add('e-ellipsistooltip');\n }\n if (!isNullOrUndefined(cell.column.textAlign)) {\n div.style.textAlign = cell.column.textAlign;\n }\n if (cell.column.customAttributes) {\n setStyleAndAttributes(node, cell.column.customAttributes);\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-colspan', cell.colSpan.toString());\n node.setAttribute('aria-rowspan', '1');\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = cell.column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n if (frozenDirection(column) === 'Left') {\n node.classList.add('e-leftfreeze');\n if (column.border === 'Left') {\n node.classList.add('e-freezeleftborder');\n }\n if (column.index === 0) {\n applyStickyLeftRightPosition(node, (this.parent.getIndentCount() * 30), this.parent.enableRtl, 'Left');\n }\n else {\n var cols = this.parent.getColumns();\n var width = this.parent.getIndentCount() * 30;\n for (var i = 0; i < cols.length; i++) {\n if (column.index < cols[parseInt(i.toString(), 10)].index) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, this.parent.enableRtl, 'Left');\n }\n }\n else if (frozenDirection(column) === 'Right') {\n node.classList.add('e-rightfreeze');\n var cols = this.parent.getColumns();\n var width = this.parent.getFrozenMode() === 'Right' && this.parent.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (isChildColumn(column, cols[parseInt(i.toString(), 10)].uid) || column.index > cols[parseInt(i.toString(), 10)].index) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, this.parent.enableRtl, 'Right');\n if (column.border === 'Right') {\n node.classList.add('e-freezerightborder');\n }\n }\n else if (frozenDirection(column) === 'Fixed') {\n node.classList.add('e-fixedfreeze');\n var cols = this.parent.getColumns();\n var width = 0;\n if (this.parent.getVisibleFrozenLeftCount()) {\n width = this.parent.getIndentCount() * 30;\n }\n else if (this.parent.getFrozenMode() === 'Right') {\n width = this.parent.groupSettings.columns.length * 30;\n }\n for (var i = 0; i < cols.length; i++) {\n if (column.index > cols[parseInt(i.toString(), 10)].index) {\n if ((cols[parseInt(i.toString(), 10)].freeze === 'Left' || cols[parseInt(i.toString(), 10)].isFrozen) ||\n cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n }\n applyStickyLeftRightPosition(node, width - 1, this.parent.enableRtl, 'Left');\n width = this.parent.getFrozenMode() === 'Right' && this.parent.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (column.index < cols[parseInt(i.toString(), 10)].index) {\n if (isChildColumn(column, cols[parseInt(i.toString(), 10)].uid) ||\n column.index > cols[parseInt(i.toString(), 10)].index) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].freeze === 'Right' || cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n }\n applyStickyLeftRightPosition(node, width - 1, this.parent.enableRtl, 'Right');\n }\n else {\n node.classList.add('e-unfreeze');\n }\n return node;\n };\n return StackedHeaderCellRenderer;\n}(CellRenderer));\nexport { StackedHeaderCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { setStyleAndAttributes } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\n/**\n * IndentCellRenderer class which responsible for building group indent cell.\n *\n * @hidden\n */\nvar IndentCellRenderer = /** @class */ (function (_super) {\n __extends(IndentCellRenderer, _super);\n function IndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-indentcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n IndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n setStyleAndAttributes(node, cell.attributes);\n return node;\n };\n return IndentCellRenderer;\n}(CellRenderer));\nexport { IndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { appendChildren, templateCompiler } from '../base/util';\nimport { CellType } from '../base/enum';\n/**\n * GroupCaptionCellRenderer class which responsible for building group caption cell.\n *\n * @hidden\n */\nvar GroupCaptionCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionCellRenderer, _super);\n function GroupCaptionCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cellUid = 0;\n _this.element = _this.parent\n .createElement('TD', { className: 'e-groupcaption',\n attrs: { id: _this.parent.element.id + 'captioncell', tabindex: '-1' } });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the GroupedData\n * @returns {Element} returns the element\n */\n GroupCaptionCellRenderer.prototype.render = function (cell, data) {\n this.element.id = this.parent.element.id + 'captioncell' + this.cellUid++;\n var node = this.element.cloneNode();\n var gObj = this.parent;\n var column = cell.column;\n var domSetter = column.getDomSetter ? column.getDomSetter() : 'innerHTML';\n var result;\n var fKeyValue;\n var gTemplateValue;\n data.headerText = cell.column.headerText;\n if (cell.isForeignKey) {\n fKeyValue = this.format(cell.column, cell.column.valueAccessor('foreignKey', data, cell.column));\n }\n var value = cell.isForeignKey ? fKeyValue : cell.column.enableGroupByFormat ? data.key :\n this.format(cell.column, cell.column.valueAccessor('key', data, cell.column));\n for (var j = 0; j < gObj.aggregates.length; j++) {\n var _loop_1 = function (i) {\n if (gObj.getVisibleColumns()[0].field === gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .field && gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].groupCaptionTemplate) {\n var gCaptionTemp = gObj.aggregates[parseInt(j.toString(), 10)]\n .columns[parseInt(i.toString(), 10)].groupCaptionTemplate;\n if (typeof gCaptionTemp === 'string' && gCaptionTemp.includes('$')) {\n gTemplateValue = gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .groupCaptionTemplate.split('$')[0] + data[gObj.getVisibleColumns()[0].field][gObj\n .aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].type] +\n gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .groupCaptionTemplate.split('}')[1];\n }\n else {\n var column_1 = (gObj.aggregates[parseInt(j.toString(), 10)]\n .columns[parseInt(i.toString(), 10)]);\n var tempObj = column_1.getTemplate(CellType.CaptionSummary);\n var tempID = '';\n if (!isNullOrUndefined(tempObj)) {\n var tempValue_1 = tempObj.fn(data[column_1.columnName], this_1.parent, tempObj.property, tempID);\n if (this_1.parent.isReact && typeof column_1.groupCaptionTemplate !== 'string') {\n this_1.parent.renderTemplates(function () {\n if (tempValue_1 && tempValue_1.length) {\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n node.appendChild(tempValue_1[0]);\n }\n else {\n node.innerText += ' ' + tempValue_1[0].textContent;\n }\n }\n });\n }\n else {\n if (tempValue_1 && tempValue_1.length) {\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n gTemplateValue = tempValue_1;\n }\n else {\n gTemplateValue = tempValue_1[0].textContent;\n }\n }\n }\n }\n }\n return \"break\";\n }\n };\n var this_1 = this;\n for (var i = 0; i < gObj.aggregates[parseInt(j.toString(), 10)].columns.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n }\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n var isReactCompiler = this.parent.isReact && typeof (gObj.groupSettings.captionTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n var tempID = gObj.element.id + 'captionTemplate';\n templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent, 'captionTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else if (this.parent.isVue) {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent);\n }\n else {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data);\n }\n if (!isReactCompiler && !isReactChild) {\n appendChildren(node, result);\n if (gTemplateValue && gTemplateValue.length && gTemplateValue[0].textContent) {\n node.appendChild(gTemplateValue[0]);\n }\n }\n }\n else {\n if (gObj.groupSettings.enableLazyLoading) {\n node[\"\" + domSetter] = this.parent.sanitize(cell.column.headerText) + ': ' + this.parent.sanitize(value) +\n (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n else {\n node[\"\" + domSetter] = this.parent.sanitize(cell.column.headerText) + ': ' + this.parent.sanitize(value) +\n ' - ' + data.count + ' ' + (data.count < 2 ? this.localizer.getConstant('Item') : this.localizer.getConstant('Items'))\n + (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-label', node.innerHTML + this.localizer.getConstant('GroupCaption'));\n node.setAttribute('title', node.textContent);\n return node;\n };\n return GroupCaptionCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionCellRenderer };\n/**\n * GroupCaptionEmptyCellRenderer class which responsible for building group caption empty cell.\n *\n * @hidden\n */\nvar GroupCaptionEmptyCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionEmptyCellRenderer, _super);\n function GroupCaptionEmptyCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-groupcaption' });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the Object\n * @param {string} data.field - Defines the field\n * @param {string} data.key - Defines the key\n * @param {number} data.count - Defines the count\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n GroupCaptionEmptyCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.innerHTML = ' ';\n node.setAttribute('colspan', cell.colSpan.toString());\n return node;\n };\n return GroupCaptionEmptyCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionEmptyCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { IndentCellRenderer } from './indent-cell-renderer';\nimport { CellType } from '../base/enum';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar ExpandCellRenderer = /** @class */ (function (_super) {\n __extends(ExpandCellRenderer, _super);\n function ExpandCellRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Function to render the expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {string} data.field - Defines the field\n * @param {string} data.key - Defines the key\n * @param {Object} attr - specifies the attribute\n * @param {boolean} isExpand - specifies isexpand\n * @returns {Element} returns the element\n */\n ExpandCellRenderer.prototype.render = function (cell, data, attr, isExpand) {\n var node = this.element.cloneNode();\n node.setAttribute('ej-mappingname', data.field);\n node.setAttribute('ej-mappingvalue', data.key);\n node.setAttribute('aria-expanded', isExpand ? 'true' : 'false');\n node.setAttribute('tabindex', '-1');\n if (this.parent.infiniteScrollSettings && this.parent.infiniteScrollSettings.enableCache &&\n !this.parent.groupSettings.enableLazyLoading) {\n cell.cellType = CellType.Indent;\n node.className = isExpand ? 'e-recordplusexpand e-disablepointer' : 'e-recordpluscollapse e-disablepointer';\n }\n else {\n node.className = isExpand ? 'e-recordplusexpand' : 'e-recordpluscollapse';\n node.appendChild(this.parent.createElement('a', {\n className: isExpand ? 'e-icons e-gdiagonaldown e-icon-gdownarrow' : 'e-icons e-gnextforward e-icon-grightarrow',\n attrs: { href: '#', 'title': isExpand ? 'expanded' : 'collapsed' }\n }));\n }\n return node;\n };\n return ExpandCellRenderer;\n}(IndentCellRenderer));\nexport { ExpandCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * HeaderIndentCellRenderer class which responsible for building header indent cell.\n *\n * @hidden\n */\nvar HeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderIndentCellRenderer, _super);\n function HeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-grouptopleftcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-headercelldiv e-emptycell', innerHTML: '' }));\n return node;\n };\n return HeaderIndentCellRenderer;\n}(CellRenderer));\nexport { HeaderIndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar DetailHeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(DetailHeaderIndentCellRenderer, _super);\n function DetailHeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-detailheadercell' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DetailHeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-emptycell' }));\n return node;\n };\n return DetailHeaderIndentCellRenderer;\n}(CellRenderer));\nexport { DetailHeaderIndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar DetailExpandCellRenderer = /** @class */ (function (_super) {\n __extends(DetailExpandCellRenderer, _super);\n function DetailExpandCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-detailrowcollapse',\n attrs: { 'aria-expanded': 'false', tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @returns {Element} returns the element\n */\n DetailExpandCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n if (attributes && !isNullOrUndefined(attributes['class'])) {\n node.className = '';\n node.className = attributes['class'];\n node.appendChild(this.parent.createElement('a', { className: 'e-icons e-dtdiagonaldown e-icon-gdownarrow', attrs: {\n href: '#', 'title': this.localizer.getConstant('Expanded')\n } }));\n }\n else {\n node.appendChild(this.parent.createElement('a', { className: 'e-icons e-dtdiagonalright e-icon-grightarrow', attrs: {\n href: '#', 'title': this.localizer.getConstant('Collapsed')\n } }));\n }\n if (cell.isSelected) {\n node.classList.add('e-selectionbackground', 'e-active');\n }\n return node;\n };\n return DetailExpandCellRenderer;\n}(CellRenderer));\nexport { DetailExpandCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\nimport { applyStickyLeftRightPosition } from '../base/util';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar RowDragDropRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropRenderer, _super);\n function RowDragDropRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-rowdragdrop e-rowdragdropcell',\n attrs: { tabindex: '-1', role: 'gridcell' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDragDropRenderer.prototype.render = function (cell, data) {\n var nodeElement = this.element.cloneNode();\n nodeElement.appendChild(this.parent.createElement('div', {\n className: 'e-icons e-rowcelldrag e-dtdiagonalright e-icon-rowdragicon',\n attrs: { 'aria-hidden': 'true' }\n }));\n if (cell.isSelected) {\n nodeElement.classList.add('e-selectionbackground');\n nodeElement.classList.add('e-active');\n }\n if (this.parent.getVisibleFrozenRightCount() || this.parent.getVisibleFrozenLeftCount()) {\n nodeElement.classList.add('e-leftfreeze');\n var width = this.parent.getFrozenMode() === 'Right' ? 0 : this.parent.groupSettings.columns.length * 30;\n applyStickyLeftRightPosition(nodeElement, width, this.parent.enableRtl, this.parent.getFrozenMode() === 'Right' ? 'Right' : 'Left');\n }\n return nodeElement;\n };\n return RowDragDropRenderer;\n}(CellRenderer));\nexport { RowDragDropRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { createElement } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { applyStickyLeftRightPosition } from '../base/util';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar RowDragDropHeaderRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropHeaderRenderer, _super);\n function RowDragDropHeaderRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-rowdragheader' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDragDropHeaderRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(createElement('div', { className: 'e-emptycell' }));\n if (this.parent.getVisibleFrozenRightCount() || this.parent.getVisibleFrozenLeftCount()) {\n node.classList.add('e-leftfreeze');\n var width = this.parent.getFrozenMode() === 'Right' ? 0 : this.parent.groupSettings.columns.length * 30;\n applyStickyLeftRightPosition(node, width, this.parent.enableRtl, this.parent.getFrozenMode() === 'Right' ? 'Right' : 'Left');\n }\n return node;\n };\n return RowDragDropHeaderRenderer;\n}(CellRenderer));\nexport { RowDragDropHeaderRenderer };\n","import { remove, resetBlazorTemplate, blazorTemplates, getValue } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Deferred, Predicate, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RenderType, CellType } from '../base/enum';\nimport { Data } from '../actions/data';\nimport { Column } from '../models/column';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport * as events from '../base/constant';\nimport { prepareColumns, setFormatter, isGroupAdaptive, getDatePredicate, getObject, clearReactVueTemplates } from '../base/util';\nimport { ContentRender } from '../renderer/content-renderer';\nimport { HeaderRender } from '../renderer/header-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\nimport { StackedHeaderCellRenderer } from '../renderer/stacked-cell-renderer';\nimport { IndentCellRenderer } from '../renderer/indent-cell-renderer';\nimport { GroupCaptionCellRenderer, GroupCaptionEmptyCellRenderer } from '../renderer/caption-cell-renderer';\nimport { ExpandCellRenderer } from '../renderer/expand-cell-renderer';\nimport { HeaderIndentCellRenderer } from '../renderer/header-indent-renderer';\nimport { DetailHeaderIndentCellRenderer } from '../renderer/detail-header-indent-renderer';\nimport { DetailExpandCellRenderer } from '../renderer/detail-expand-cell-renderer';\nimport { RowDragDropRenderer } from './row-drag-drop-renderer';\nimport { RowDragDropHeaderRenderer } from '../renderer/row-drag-header-indent-render';\nimport * as literals from '../base/string-literals';\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} locator - specifies the serviceLocator\n */\n function Render(parent, locator) {\n this.emptyGrid = false;\n this.counter = 0;\n this.parent = parent;\n this.locator = locator;\n this.data = new Data(parent, locator);\n this.l10n = locator.getService('localization');\n this.ariaService = this.locator.getService('ariaService');\n this.renderer = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n /**\n * To initialize grid header, content and footer rendering\n *\n * @returns {void}\n */\n Render.prototype.render = function () {\n var gObj = this.parent;\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer.renderPanel();\n this.contentRenderer.renderPanel();\n if (gObj.getColumns().length) {\n this.isLayoutRendered = true;\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.emptyRow(false);\n }\n this.parent.scrollModule.setWidth();\n this.parent.scrollModule.setHeight();\n if (this.parent.height !== 'auto') {\n this.parent.scrollModule.setPadding();\n }\n this.refreshDataManager();\n };\n /**\n * Refresh the entire Grid.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n */\n Render.prototype.refresh = function (e) {\n var _this = this;\n if (e === void 0) { e = { requestType: 'refresh' }; }\n var gObj = this.parent;\n gObj.notify(e.requestType + \"-begin\", e);\n gObj.trigger(events.actionBegin, e, function (args) {\n if (args === void 0) { args = { requestType: 'refresh' }; }\n if (args.cancel) {\n gObj.notify(events.cancelBegin, args);\n if (args.action === 'clearFilter' && _this.parent.filterSettings.type === 'Menu') {\n _this.parent.filterSettings.columns[_this.parent.filterModule.filterObjIndex] = _this.parent.filterModule.prevFilterObject;\n var iconClass = _this.parent.showColumnMenu && _this.parent.filterModule['column'].showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var col = _this.parent.element.querySelector('[e-mappinguid=\"' + _this.parent.filterModule['column'].uid + '\"]').parentElement;\n var flIcon = col.querySelector(iconClass);\n if (!isNullOrUndefined(_this.parent.filterModule.prevFilterObject)) {\n flIcon.classList.add('e-filtered');\n }\n }\n if (args.action === 'clear-filter' && (_this.parent.filterSettings.type === 'CheckBox' || _this.parent.filterSettings.type === 'Excel')) {\n _this.parent.filterSettings.columns = _this.parent.filterModule.checkboxPrevFilterObject;\n }\n if (args.requestType === 'grouping') {\n // Remove the dropped column name from groupsettings.columns if args.cancel is true \n var index = gObj.groupSettings.columns.indexOf(args.columnName);\n if (index !== -1) {\n gObj.setProperties({ groupSettings: { Columns: gObj.groupSettings.columns.splice(index, 1) } }, true);\n gObj.setProperties({ sortSettings: { Columns: gObj.sortSettings.columns.splice(index, 1) } }, true);\n var column = gObj.getColumnByField(args.columnName);\n var headerCell = gObj.getColumnHeaderByField(column.field);\n column.visible = (!isNullOrUndefined(headerCell) && !headerCell.classList.contains('e-hide'));\n }\n }\n return;\n }\n if (gObj.allowSelection && (args.action === 'clearFilter' || args.action === 'clear-filter' ||\n (args.requestType === 'searching' && args.searchString === '') || args.action === 'add')) {\n gObj.selectionModule['rmtHdrChkbxClicked'] = false;\n }\n if (gObj.allowPaging && gObj.pageSettings.pageSizes && gObj.pagerModule.pagerObj.isAllPage &&\n (args.action === 'add' && args.requestType === 'save') && gObj.pagerModule.pagerObj.checkAll) {\n gObj.setProperties({ pageSettings: { pageSize: gObj.pageSettings.pageSize + 1 } }, true);\n }\n if (args.requestType === 'delete' && gObj.allowPaging) {\n var dataLength = args.data.length;\n var count = gObj.pageSettings.totalRecordsCount - dataLength;\n var currentViewData = gObj.getCurrentViewRecords().length;\n // eslint-disable-next-line max-len\n if ((!(currentViewData - dataLength) && count && ((gObj.pageSettings.currentPage - 1) * gObj.pageSettings.pageSize) === count) || (count && count <= dataLength)) {\n gObj.prevPageMoving = true;\n gObj.setProperties({\n pageSettings: {\n totalRecordsCount: count, currentPage: Math.ceil(count / gObj.pageSettings.pageSize)\n }\n }, true);\n gObj.pagerModule.pagerObj.totalRecordsCount = count;\n }\n }\n if (args.requestType === 'reorder' && _this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else if ((args.requestType === 'paging' || args.requestType === 'columnstate' || args.requestType === 'reorder')\n && _this.parent.groupSettings.enableLazyLoading && _this.parent.groupSettings.columns.length\n && (_this.parent.enableVirtualization ? _this.parent.lazyLoadRender :\n _this.parent.contentModule).getGroupCache()[_this.parent.pageSettings.currentPage]) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else {\n _this.refreshDataManager(args);\n }\n });\n };\n /**\n * @returns {void}\n * @hidden\n */\n Render.prototype.resetTemplates = function () {\n var gObj = this.parent;\n var gridColumns = gObj.getColumns();\n if (gObj.detailTemplate) {\n var detailTemplateID = gObj.element.id + 'detailTemplate';\n blazorTemplates[\"\" + detailTemplateID] = [];\n resetBlazorTemplate(detailTemplateID, 'DetailTemplate');\n }\n if (gObj.groupSettings.captionTemplate) {\n resetBlazorTemplate(gObj.element.id + 'captionTemplate', 'CaptionTemplate');\n }\n if (gObj.rowTemplate) {\n resetBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate');\n }\n if (gObj.toolbarTemplate) {\n resetBlazorTemplate(gObj.element.id + 'toolbarTemplate', 'ToolbarTemplate');\n }\n if (gObj.pageSettings.template) {\n resetBlazorTemplate(gObj.element.id + '_template', 'pageSettings');\n }\n for (var i = 0; i < gridColumns.length; i++) {\n if (gridColumns[parseInt(i.toString(), 10)].template) {\n blazorTemplates[gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid] = [];\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid, 'Template');\n }\n if (gridColumns[parseInt(i.toString(), 10)].headerTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid + 'headerTemplate', 'HeaderTemplate');\n }\n if (gridColumns[parseInt(i.toString(), 10)].filterTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid + 'filterTemplate', 'FilterTemplate');\n }\n }\n var guid = 'guid';\n for (var k = 0; k < gObj.aggregates.length; k++) {\n for (var j = 0; j < gObj.aggregates[parseInt(k.toString(), 10)].columns.length; j++) {\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].footerTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'footerTemplate';\n resetBlazorTemplate(tempID, 'FooterTemplate');\n }\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].groupFooterTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'groupFooterTemplate';\n resetBlazorTemplate(tempID, 'GroupFooterTemplate');\n }\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].groupCaptionTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'groupCaptionTemplate';\n resetBlazorTemplate(tempID, 'GroupCaptionTemplate');\n }\n }\n }\n };\n Render.prototype.refreshComplete = function (e) {\n this.parent.trigger(events.actionComplete, e);\n };\n /**\n * The function is used to refresh the dataManager\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n Render.prototype.refreshDataManager = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n var maskRow = (gObj.loadingIndicator.indicatorType === 'Shimmer' && args.requestType !== 'virtualscroll'\n && args.requestType !== 'infiniteScroll') || ((args.requestType === 'virtualscroll' || args.requestType === 'infiniteScroll')\n && gObj.enableVirtualMaskRow);\n if (args.requestType !== 'virtualscroll' && !args.isCaptionCollapse && !maskRow) {\n this.parent.showSpinner();\n }\n if (maskRow) {\n gObj.showMaskRow(args.requestType === 'virtualscroll' ? args.virtualInfo.sentinelInfo.axis\n : args.requestType === 'infiniteScroll' ? args.direction : undefined);\n }\n this.parent.notify(events.resetInfiniteBlocks, args);\n this.emptyGrid = false;\n var dataManager;\n var isFActon = this.isNeedForeignAction();\n this.ariaService.setBusy(this.parent.getContent().querySelector('.' + literals.content), true);\n if (isFActon) {\n var deffered = new Deferred();\n dataManager = this.getFData(deffered, args);\n }\n if (!dataManager) {\n if (gObj.allowPaging && !gObj.getDataModule().dataManager.dataSource.offline && gObj.pageSettings\n && gObj.pageSettings.pageSizes && gObj.pagerModule && gObj.pagerModule.pagerObj && gObj.pagerModule.pagerObj.isAllPage) {\n gObj.pagerModule.pagerObj.isAllPage = undefined;\n }\n dataManager = this.data.getData(args, this.data.generateQuery().requiresCount());\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dataManager = dataManager.then(function (e) {\n var query = _this.data.generateQuery().requiresCount();\n if (_this.emptyGrid) {\n var def = new Deferred();\n def.resolve({ result: [], count: 0 });\n return def.promise;\n }\n return _this.data.getData(args, query);\n });\n }\n if (this.parent.getForeignKeyColumns().length && (!isFActon || this.parent.searchSettings.key.length)) {\n var deffered_1 = new Deferred();\n dataManager = dataManager.then(function (e) {\n _this.parent.notify(events.getForeignKeyData, { dataManager: dataManager, result: e, promise: deffered_1, action: args });\n return deffered_1.promise;\n });\n }\n if (this.parent.groupSettings.disablePageWiseAggregates && this.parent.groupSettings.columns.length) {\n dataManager = dataManager.then(function (e) { return _this.validateGroupRecords(e); });\n }\n dataManager.then(function (e) { return _this.dataManagerSuccess(e, args); })\n .catch(function (e) { return _this.dataManagerFailure(e, args); });\n };\n Render.prototype.getFData = function (deferred, args) {\n this.parent.notify(events.getForeignKeyData, { isComplex: true, promise: deferred, action: args });\n return deferred.promise;\n };\n Render.prototype.isNeedForeignAction = function () {\n var gObj = this.parent;\n return !!((gObj.allowFiltering && gObj.filterSettings.columns.length) ||\n (gObj.searchSettings.key.length)) && this.foreignKey(this.parent.getForeignKeyColumns());\n };\n Render.prototype.foreignKey = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n var fbool = false;\n fbool = _this.parent.filterSettings.columns.some(function (value) {\n return col.uid === value.uid;\n });\n return !!(fbool || _this.parent.searchSettings.key.length);\n });\n };\n Render.prototype.sendBulkRequest = function (args) {\n var _this = this;\n args.requestType = 'batchsave';\n var gObj = this.parent;\n if (gObj.allowPaging && gObj.pageSettings.pageSizes && gObj.pagerModule.pagerObj.isAllPage && gObj.pagerModule.pagerObj.checkAll) {\n var dataLength = args['changes'].addedRecords.length;\n if (dataLength) {\n gObj.setProperties({ pageSettings: { pageSize: gObj.pageSettings.pageSize + dataLength } }, true);\n }\n }\n if (gObj.allowPaging && (args.changes.addedRecords.length ||\n args.changes.deletedRecords.length ||\n args.changes.changedRecords.length) && gObj.pageSettings\n && gObj.pageSettings.pageSizes && gObj.pagerModule && gObj.pagerModule.pagerObj\n && !gObj.getDataModule().dataManager.dataSource.offline && gObj.pagerModule.pagerObj.isAllPage) {\n gObj.pagerModule.pagerObj.isAllPage = undefined;\n }\n var promise = this.data.saveChanges(args.changes, this.parent.getPrimaryKeyFieldNames()[0], args.original);\n var query = this.data.generateQuery().requiresCount();\n if (this.data.dataManager.dataSource.offline) {\n this.refreshDataManager({ requestType: 'batchsave' });\n return;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n promise.then(function (e) {\n _this.data.getData(args, query)\n .then(function (e) { return _this.dmSuccess(e, args); })\n .catch(function (e) { return _this.dmFailure(e, args); });\n })\n .catch(function (e) { return _this.dmFailure(e, args); });\n }\n };\n Render.prototype.dmSuccess = function (e, args) {\n this.dataManagerSuccess(e, args);\n };\n Render.prototype.dmFailure = function (e, args) {\n this.dataManagerFailure(e, args);\n };\n /**\n * Render empty row to Grid which is used at the time to represent to no records.\n *\n * @returns {void}\n * @hidden\n */\n Render.prototype.renderEmptyRow = function () {\n this.emptyRow(true);\n };\n Render.prototype.emptyRow = function (isTrigger) {\n var gObj = this.parent;\n var tbody = this.contentRenderer.getTable().querySelector(literals.tbody);\n if (!isNullOrUndefined(tbody)) {\n remove(tbody);\n }\n tbody = this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var spanCount = gObj.allowRowDragAndDrop && isNullOrUndefined(gObj.rowDropSettings.targetID) ? 1 : 0;\n if (gObj.detailTemplate || gObj.childGrid) {\n ++spanCount;\n }\n var className = gObj.editSettings.showAddNewRow && gObj.editSettings.newRowPosition === 'Bottom' ?\n 'e-emptyrow e-show-added-row' : 'e-emptyrow';\n var tr = this.parent.createElement('tr', { className: className, attrs: { role: 'row' } });\n var td;\n if (gObj.emptyRecordTemplate) {\n var emptyRecordTemplateID = gObj.element.id + 'emptyRecordTemplate';\n td = this.parent.createElement('td', { attrs: { colspan: (gObj.getVisibleColumns().length + spanCount + gObj.groupSettings.columns.length).toString() } });\n if (gObj.isVue) {\n td.appendChild(gObj.getEmptyRecordTemplate()(gObj.dataSource, gObj, 'emptyRecordTemplate', emptyRecordTemplateID, undefined, undefined, undefined, this.parent['root'])[1]);\n }\n else {\n td.appendChild(gObj.getEmptyRecordTemplate()(gObj.dataSource, gObj, 'emptyRecordTemplate', emptyRecordTemplateID, undefined, undefined, undefined, this.parent['root'])[0]);\n }\n if (gObj.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n td = this.parent.createElement('td', {\n innerHTML: this.l10n.getConstant('EmptyRecord'),\n attrs: { colspan: (gObj.getVisibleColumns().length + spanCount + gObj.groupSettings.columns.length).toString() }\n });\n }\n if (gObj.isFrozenGrid()) {\n td.classList.add('e-leftfreeze');\n td.style.left = 0 + 'px';\n }\n if (gObj.frozenRows && gObj.element.querySelector('.e-frozenrow-border')) {\n this.parent.element.querySelector('.e-frozenrow-border').classList.add('e-frozenrow-empty');\n }\n tr.appendChild(td);\n tbody.appendChild(tr);\n this.contentRenderer.renderEmpty(tbody);\n if (isTrigger) {\n this.parent.trigger(events.dataBound, {});\n this.parent.notify(events.onEmpty, { rows: [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })] });\n if (gObj.editSettings.showAddNewRow) {\n gObj.addRecord();\n this.parent.notify(events.showAddNewRowFocus, {});\n }\n }\n };\n Render.prototype.dynamicColumnChange = function () {\n if (this.parent.getCurrentViewRecords().length) {\n this.updateColumnType(this.parent.getCurrentViewRecords()[0]);\n }\n };\n Render.prototype.updateColumnType = function (record) {\n var columns = this.parent.getColumns();\n var value;\n var cFormat = 'customFormat';\n var equalTo = 'equalTo';\n var data = record && record.items ? record.items[0] : record;\n var fmtr = this.locator.getService('valueFormatter');\n for (var i = 0, len = columns.length; i < len; i++) {\n value = getObject(columns[parseInt(i.toString(), 10)].field || '', data);\n if (!isNullOrUndefined(columns[parseInt(i.toString(), 10)][\"\" + cFormat])) {\n columns[parseInt(i.toString(), 10)].format = columns[parseInt(i.toString(), 10)][\"\" + cFormat];\n }\n if (!isNullOrUndefined(columns[parseInt(i.toString(), 10)].validationRules)\n && !isNullOrUndefined(columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo])) {\n columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo][0] = this.parent.element.id + columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo][0];\n }\n if (columns[parseInt(i.toString(), 10)].isForeignColumn() && columns[parseInt(i.toString(), 10)].columnData) {\n value = getObject(columns[parseInt(i.toString(), 10)].foreignKeyValue || '', columns[parseInt(i.toString(), 10)].columnData[0]);\n }\n if (!isNullOrUndefined(value)) {\n this.isColTypeDef = true;\n if (!columns[parseInt(i.toString(), 10)].type) {\n columns[parseInt(i.toString(), 10)].type = value.getDay ? (value.getHours() > 0 || value.getMinutes() > 0 ||\n value.getSeconds() > 0 || value.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n }\n else {\n columns[parseInt(i.toString(), 10)].type = columns[parseInt(i.toString(), 10)].type || null;\n }\n var valueFormatter = new ValueFormatter();\n if (columns[parseInt(i.toString(), 10)].format && (columns[parseInt(i.toString(), 10)].format.skeleton\n || (columns[parseInt(i.toString(), 10)].format.format &&\n typeof columns[parseInt(i.toString(), 10)].format.format === 'string'))) {\n columns[parseInt(i.toString(), 10)].setFormatter(valueFormatter.getFormatFunction(extend({}, columns[parseInt(i.toString(), 10)].format)));\n columns[parseInt(i.toString(), 10)].setParser(valueFormatter.getParserFunction(columns[parseInt(i.toString(), 10)].format));\n }\n if (typeof (columns[parseInt(i.toString(), 10)].format) === 'string') {\n setFormatter(this.locator, columns[parseInt(i.toString(), 10)]);\n }\n else if (!columns[parseInt(i.toString(), 10)].format && columns[parseInt(i.toString(), 10)].type === 'number') {\n columns[parseInt(i.toString(), 10)].setParser(fmtr.getParserFunction({ format: 'n2' }));\n }\n if (columns[parseInt(i.toString(), 10)].type === 'dateonly' && !columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = 'yMd';\n setFormatter(this.locator, columns[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * @param {ReturnType} e - specifies the return type\n * @param {NotifyArgs} args - specifies the Notifyargs\n * @returns {void}\n * @hidden\n */\n // tslint:disable-next-line:max-func-body-length\n Render.prototype.dataManagerSuccess = function (e, args) {\n var _this = this;\n var gObj = this.parent;\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n e.actionArgs = args;\n var isInfiniteDelete = this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache &&\n !gObj.groupSettings.enableLazyLoading && (args.requestType === 'delete' || (args.requestType === 'save' &&\n this.parent.infiniteScrollModule.requestType === 'add' && !(gObj.sortSettings.columns.length ||\n gObj.filterSettings.columns.length || this.parent.groupSettings.columns.length || gObj.searchSettings.key)));\n // tslint:disable-next-line:max-func-body-length\n gObj.trigger(events.beforeDataBound, e, function (dataArgs) {\n if (dataArgs.cancel) {\n return;\n }\n dataArgs.result = isNullOrUndefined(dataArgs.result) ? [] : dataArgs.result;\n var len = Object.keys(dataArgs.result).length;\n if (_this.parent.isDestroyed) {\n return;\n }\n if ((!gObj.getColumns().length && !len) && !(gObj.columns.length && gObj.columns[0] instanceof Column)) {\n gObj.hideSpinner();\n return;\n }\n if (_this.isInfiniteEnd(args) && !len) {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n return;\n }\n _this.parent.isEdit = false;\n _this.parent.notify(events.editReset, {});\n _this.parent.notify(events.tooltipDestroy, {});\n if (args && args.requestType !== 'infiniteScroll') {\n _this.parent.notify(events.commandColumnDestroy, { type: 'refreshCommandColumn' });\n }\n _this.contentRenderer.prevCurrentView = _this.parent.currentViewData.slice();\n gObj.currentViewData = dataArgs.result;\n gObj.notify(events.refreshInfiniteCurrentViewData, { args: args, data: dataArgs.result });\n if (dataArgs.count && !gObj.allowPaging && (gObj.enableVirtualization || gObj.enableInfiniteScrolling)) {\n gObj.totalDataRecordsCount = dataArgs.count;\n }\n if (!len && dataArgs.count && gObj.allowPaging && args && args.requestType !== 'delete') {\n if (_this.parent.groupSettings.enableLazyLoading\n && (args.requestType === 'grouping' || args.requestType === 'ungrouping')) {\n _this.parent.notify(events.groupComplete, args);\n }\n gObj.prevPageMoving = true;\n gObj.pageSettings.totalRecordsCount = dataArgs.count;\n if (args.requestType !== 'paging') {\n gObj.pageSettings.currentPage = Math.ceil(dataArgs.count / gObj.pageSettings.pageSize);\n }\n gObj.dataBind();\n return;\n }\n if ((!gObj.getColumns().length && len || !_this.isLayoutRendered) && !isGroupAdaptive(gObj)) {\n gObj.removeMaskRow();\n _this.updatesOnInitialRender(dataArgs);\n }\n if (!_this.isColTypeDef && gObj.getCurrentViewRecords()) {\n if (_this.data.dataManager.dataSource.offline && gObj.dataSource && gObj.dataSource.length) {\n _this.updateColumnType(gObj.dataSource[0]);\n }\n else {\n _this.updateColumnType(gObj.getCurrentViewRecords()[0]);\n }\n }\n if (!_this.parent.isInitialLoad && _this.parent.groupSettings.disablePageWiseAggregates &&\n !_this.parent.groupSettings.columns.length) {\n dataArgs.result = _this.parent.dataSource instanceof Array ? _this.parent.dataSource : _this.parent.currentViewData;\n }\n if ((_this.parent.isReact || _this.parent.isVue) && !isNullOrUndefined(args) && args.requestType !== 'infiniteScroll' && !args.isFrozen) {\n clearReactVueTemplates(_this.parent, ['footerTemplate']);\n }\n if (_this.parent.isAngular && _this.parent.allowGrouping && _this.parent.groupSettings.captionTemplate\n && !(!isNullOrUndefined(args) && args.requestType === 'infiniteScroll')) {\n _this.parent.destroyTemplate(['groupSettings_captionTemplate']);\n }\n _this.parent.notify(events.dataReady, extend({ count: dataArgs.count, result: dataArgs.result, aggregates: dataArgs.aggregates }, args));\n if ((gObj.groupSettings.columns.length || (args && args.requestType === 'ungrouping'))\n && (args && args.requestType !== 'filtering')) {\n _this.headerRenderer.refreshUI();\n }\n if (len) {\n if (isGroupAdaptive(gObj)) {\n var content = 'content';\n args.scrollTop = { top: _this.contentRenderer[\"\" + content].scrollTop };\n }\n if (!isInfiniteDelete) {\n if (_this.parent.enableImmutableMode) {\n _this.contentRenderer.immutableModeRendering(args);\n }\n else {\n _this.contentRenderer.refreshContentRows(args);\n }\n }\n else {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n }\n }\n else {\n if (args && args.isCaptionCollapse) {\n return;\n }\n if (!gObj.getColumns().length) {\n gObj.element.innerHTML = '';\n alert(_this.l10n.getConstant('EmptyDataSourceError')); //ToDO: change this alert as dialog\n return;\n }\n _this.contentRenderer.setRowElements([]);\n _this.contentRenderer.setRowObjects([]);\n _this.ariaService.setBusy(_this.parent.getContent().querySelector('.' + literals.content), false);\n gObj.removeMaskRow();\n _this.renderEmptyRow();\n if (gObj.enableColumnVirtualization && !len) {\n _this.parent.notify(events.contentReady, { rows: gObj.getRowsObject(), args: {} });\n }\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, args);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n args.rows = [];\n args.isFrozen = !args.isFrozen;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.parent.autoFit) {\n _this.parent.preventAdjustColumns();\n }\n _this.parent.hideSpinner();\n }\n _this.parent.notify(events.toolbarRefresh, {});\n _this.setRowCount(_this.parent.getCurrentViewRecords().length);\n if ('query' in e) {\n _this.parent.getDataModule().isQueryInvokedFromData = false;\n }\n });\n };\n /**\n * @param {object} e - specifies the object\n * @param {Object[]} e.result - specifies the result\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n Render.prototype.dataManagerFailure = function (e, args) {\n if (!isNullOrUndefined(this.parent.contentModule)) {\n this.ariaService.setOptions(this.parent.getContent().querySelector('.' + literals.content), { busy: false, invalid: true });\n this.setRowCount(1);\n }\n this.parent.trigger(events.actionFailure, { error: e });\n this.parent.hideSpinner();\n this.parent.removeMaskRow();\n if (args.requestType === 'save' || args.requestType === 'delete'\n || args.name === 'bulk-save') {\n return;\n }\n this.parent.currentViewData = [];\n this.renderEmptyRow();\n if (!this.parent.isInitialLoad) {\n this.parent.focusModule.setFirstFocusableTabIndex();\n }\n this.parent.log('actionfailure', { error: e });\n };\n Render.prototype.setRowCount = function (dataRowCount) {\n this.ariaService.setOptions(this.parent.element, {\n rowcount: dataRowCount ? dataRowCount.toString() : '1'\n });\n };\n Render.prototype.isInfiniteEnd = function (args) {\n return this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache && args.requestType === 'delete';\n };\n Render.prototype.updatesOnInitialRender = function (e) {\n this.isLayoutRendered = true;\n var isEmptyCol = false;\n if (this.parent.columns.length < 1) {\n this.buildColumns(e.result[0]);\n isEmptyCol = true;\n }\n prepareColumns(this.parent.columns, null, this.parent);\n if (isEmptyCol) {\n this.parent.notify(events.refreshSplitFrozenColumn, {});\n }\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.parent.isAutoGen = true;\n this.parent.notify(events.autoCol, {});\n };\n Render.prototype.iterateComplexColumns = function (obj, field, split) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n var childKeys = typeof obj[keys[parseInt(i.toString(), 10)]] === 'object'\n && obj[keys[parseInt(i.toString(), 10)]] && !(obj[keys[parseInt(i.toString(), 10)]] instanceof Date) ?\n Object.keys(obj[keys[parseInt(i.toString(), 10)]]) : [];\n if (childKeys.length) {\n this.iterateComplexColumns(obj[keys[parseInt(i.toString(), 10)]], field + (keys[parseInt(i.toString(), 10)] + '.'), split);\n }\n else {\n split[this.counter] = field + keys[parseInt(i.toString(), 10)];\n this.counter++;\n }\n }\n };\n Render.prototype.buildColumns = function (record) {\n var cols = [];\n var complexCols = {};\n this.iterateComplexColumns(record, '', complexCols);\n var columns = Object.keys(complexCols).filter(function (e) { return complexCols[\"\" + e] !== 'BlazId'; }).\n map(function (field) { return complexCols[\"\" + field]; });\n for (var i = 0, len = columns.length; i < len; i++) {\n cols[parseInt(i.toString(), 10)] = { 'field': columns[parseInt(i.toString(), 10)] };\n if (this.parent.enableColumnVirtualization) {\n cols[parseInt(i.toString(), 10)].width = !isNullOrUndefined(cols[parseInt(i.toString(), 10)].width) ?\n cols[parseInt(i.toString(), 10)].width : 200;\n }\n }\n this.parent.setProperties({ 'columns': cols }, true);\n };\n Render.prototype.instantiateRenderer = function () {\n this.renderer.addRenderer(RenderType.Header, new HeaderRender(this.parent, this.locator));\n this.renderer.addRenderer(RenderType.Content, new ContentRender(this.parent, this.locator));\n var cellrender = this.locator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Header, new HeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Data, new CellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Indent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaption, new GroupCaptionCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaptionEmpty, new GroupCaptionEmptyCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Expand, new ExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.HeaderIndent, new HeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailHeader, new DetailHeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragHIcon, new RowDragDropHeaderRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailExpand, new DetailExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailFooterIntent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragIcon, new RowDragDropRenderer(this.parent, this.locator));\n };\n Render.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initialLoad, this.instantiateRenderer, this);\n this.parent.on('refreshdataSource', this.dataManagerSuccess, this);\n this.parent.on(events.modelChanged, this.refresh, this);\n this.parent.on(events.refreshComplete, this.refreshComplete, this);\n this.parent.on(events.bulkSave, this.sendBulkRequest, this);\n this.parent.on(events.showEmptyGrid, function () { _this.emptyGrid = true; }, this);\n this.parent.on(events.autoCol, this.dynamicColumnChange, this);\n };\n /**\n * @param {ReturnType} e - specifies the Return type\n * @returns {Promise} returns the object\n * @hidden\n */\n Render.prototype.validateGroupRecords = function (e) {\n var _this = this;\n var index = e.result.length - 1;\n if (index < 0) {\n return Promise.resolve(e);\n }\n var group0 = e.result[0];\n var groupN = e.result[parseInt(index.toString(), 10)];\n var predicate = [];\n var addWhere = function (input) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n predicate.push(new Predicate('field', '==', groups[parseInt(i.toString(), 10)].field).and(_this.getPredicate('key', 'equal', groups[parseInt(i.toString(), 10)].key)));\n }\n input.where(Predicate.or(predicate));\n };\n var query = new Query();\n addWhere(query);\n var curDm = new DataManager(e.result);\n var curFilter = curDm.executeLocal(query);\n var newQuery = this.data.generateQuery(true);\n var rPredicate = [];\n if (this.data.isRemote()) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n rPredicate.push(this.getPredicate(groups[parseInt(i.toString(), 10)].field, 'equal', groups[parseInt(i.toString(), 10)].key));\n }\n newQuery.where(Predicate.or(rPredicate));\n }\n else {\n addWhere(newQuery);\n }\n var deferred = new Deferred();\n this.data.getData({}, newQuery).then(function (r) {\n _this.updateGroupInfo(curFilter, r.result);\n deferred.resolve(e);\n }).catch(function (e) { return deferred.reject(e); });\n return deferred.promise;\n };\n /**\n * @param {string} key - Defines the key\n * @param {string} operator - Defines the operator\n * @param {string | number | Date} value - Defines the value\n * @returns {Predicate} - Returns the predicate\n * @hidden */\n Render.prototype.getPredicate = function (key, operator, value) {\n if (value instanceof Date) {\n return getDatePredicate({ field: key, operator: operator, value: value });\n }\n return new Predicate(key, operator, value);\n };\n /**\n * @param {Object[]} current - Defines the current object\n * @param {Object[]} untouched - Defines the object needs to merge\n * @returns {Object[]} - Returns the updated group information\n * @hidden */\n Render.prototype.updateGroupInfo = function (current, untouched) {\n var dm = new DataManager(untouched);\n var elements = current;\n for (var i = 0; i < elements.length; i++) {\n var updatedGroup = dm.executeLocal(new Query()\n .where(new Predicate('field', '==', elements[parseInt(i.toString(), 10)].field).and(this.getPredicate('key', 'equal', elements[parseInt(i.toString(), 10)].key))))[0];\n if (!isNullOrUndefined(updatedGroup)) {\n elements[parseInt(i.toString(), 10)].count = updatedGroup.count;\n var itemGroup = elements[parseInt(i.toString(), 10)].items;\n var updatedGroupItem = updatedGroup.items;\n if (itemGroup.GroupGuid) {\n elements[parseInt(i.toString(), 10)].items =\n this.updateGroupInfo(elements[parseInt(i.toString(), 10)].items, updatedGroup.items);\n }\n var rows = this.parent.aggregates;\n for (var j = 0; j < rows.length; j++) {\n var row = rows[parseInt(j.toString(), 10)];\n for (var k = 0; k < row.columns.length; k++) {\n var column = row.columns[parseInt(k.toString(), 10)];\n var types = column.type instanceof Array ? (column.type) : [(column.type)];\n for (var l = 0; l < types.length; l++) {\n var key = column.field + ' - ' + types[parseInt(l.toString(), 10)].toLowerCase();\n var data = itemGroup.level ? updatedGroupItem.records : updatedGroup.items;\n var context = this.parent;\n if (types[parseInt(l.toString(), 10)] === 'Custom') {\n var data_1 = itemGroup.level ? updatedGroupItem : updatedGroup;\n var temp = column\n .customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n elements[parseInt(i.toString(), 10)].aggregates[\"\" + key] = temp ? temp.call(context, data_1, row.columns[parseInt(k.toString(), 10)]) : '';\n }\n else {\n elements[parseInt(i.toString(), 10)].aggregates[\"\" + key] = DataUtil.aggregates[types[parseInt(l.toString(), 10)].toLowerCase()](data, row.columns[parseInt(k.toString(), 10)].field);\n }\n }\n }\n }\n }\n }\n return current;\n };\n return Render;\n}());\nexport { Render };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\n/**\n * CellRendererFactory\n *\n * @hidden\n */\nvar CellRendererFactory = /** @class */ (function () {\n function CellRendererFactory() {\n this.cellRenderMap = {};\n }\n CellRendererFactory.prototype.addCellRenderer = function (name, type) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[\"\" + name])) {\n this.cellRenderMap[\"\" + name] = type;\n }\n };\n CellRendererFactory.prototype.getCellRenderer = function (name) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[\"\" + name])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The cellRenderer \" + name + \" is not found\";\n }\n else {\n return this.cellRenderMap[\"\" + name];\n }\n };\n return CellRendererFactory;\n}());\nexport { CellRendererFactory };\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { EventHandler, isNullOrUndefined, remove, Browser } from '@syncfusion/ej2-base';\nimport { parentsUntil, addBiggerDialog, addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { ResponsiveDialogAction } from '../base/enum';\n/**\n *\n * The `ResponsiveDialogRenderer` module is used to render the responsive dialogs.\n */\nvar ResponsiveDialogRenderer = /** @class */ (function () {\n function ResponsiveDialogRenderer(parent, serviceLocator) {\n this.sortedCols = [];\n this.sortPredicate = [];\n /** @hidden */\n this.isCustomDialog = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n ResponsiveDialogRenderer.prototype.addEventListener = function () {\n this.evtHandlers = [{ event: events.filterDialogClose, handler: this.closeCustomDialog },\n { event: events.refreshCustomFilterOkBtn, handler: this.refreshCustomFilterOkBtn },\n { event: events.renderResponsiveCmenu, handler: this.renderResponsiveContextMenu },\n { event: events.filterCmenuSelect, handler: this.renderCustomFilterDiv },\n { event: events.customFilterClose, handler: this.customExFilterClose },\n { event: events.refreshCustomFilterClearBtn, handler: this.refreshCustomFilterClearBtn }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.onActionCompleteFn = this.editComplate.bind(this);\n this.parent.addEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n ResponsiveDialogRenderer.prototype.customExFilterClose = function () {\n this.isCustomDlgRender = false;\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDiv = function () {\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var title = header.querySelector('.e-dlg-custom-header');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n this.isCustomDlgRender = true;\n this.parent.filterModule.filterModule.closeDialog();\n this.saveBtn.element.style.display = '';\n this.refreshCustomFilterOkBtn({ disabled: false });\n this.backBtn.element.style.display = 'none';\n closeBtn.style.display = '';\n title.innerHTML = this.parent.localeObj.getConstant('CustomFilter');\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n this.customExcelFilterParent = this.parent.createElement('div', { className: 'e-xl-customfilterdiv e-default-filter' });\n content.appendChild(this.customExcelFilterParent);\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContextMenu = function (args) {\n if (this.action === ResponsiveDialogAction.isFilter) {\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n var text = header.querySelector('.e-dlg-custom-header');\n if (args.isOpen) {\n content.firstChild.style.display = 'none';\n content.appendChild(args.target);\n closeBtn.style.display = 'none';\n this.saveBtn.element.style.display = 'none';\n this.filterClearBtn.element.style.display = 'none';\n text.innerHTML = args.header;\n var backBtn = this.parent.createElement('button');\n var span = this.parent.createElement('span', { className: 'e-btn-icon e-resfilterback e-icons' });\n backBtn.appendChild(span);\n this.backBtn = new Button({\n cssClass: this.parent.cssClass ? 'e-res-back-btn' + ' ' + this.parent.cssClass : 'e-res-back-btn'\n });\n this.backBtn.appendTo(backBtn);\n text.parentElement.insertBefore(backBtn, text);\n }\n else if (this.backBtn && !this.isCustomDlgRender) {\n content.firstChild.style.display = '';\n remove(this.backBtn.element);\n closeBtn.style.display = '';\n this.saveBtn.element.style.display = '';\n if (this.isFiltered) {\n this.filterClearBtn.element.style.display = '';\n }\n text.innerHTML = this.getHeaderTitle({ action: ResponsiveDialogAction.isFilter }, args.col);\n }\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterClearBtn = function (args) {\n if (this.filterClearBtn) {\n this.isFiltered = args.isFiltered;\n this.filterClearBtn.element.style.display = args.isFiltered ? '' : 'none';\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterOkBtn = function (args) {\n if (this.saveBtn) {\n this.saveBtn.disabled = args.disabled;\n }\n if (this.parent.columnChooserModule && this.parent.columnChooserModule.responsiveDialogRenderer.saveBtn) {\n this.parent.columnChooserModule.responsiveDialogRenderer.saveBtn.disabled = args.disabled;\n }\n };\n ResponsiveDialogRenderer.prototype.columnMenuResponsiveContent = function (str, locale, disabled) {\n var cDiv = this.parent.createElement('div', { className: 'e-responsivecoldiv e-responsive' + str.toLowerCase() + 'div' + (disabled ? ' e-disabled' : '') });\n var span = this.parent.createElement('span', { className: 'e-icons e-res' + str.toLowerCase() + '-icon e-btn-icon' });\n var icon = this.parent.createElement('span', { innerHTML: locale, className: 'e-rescolumn-menu e-res-header-text' });\n cDiv.appendChild(span);\n cDiv.appendChild(icon);\n this.customColumnDiv.appendChild(cDiv);\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContent = function (col, column) {\n var _this = this;\n var gObj = this.parent;\n var isColumnChooser = this.action === ResponsiveDialogAction.isColumnChooser;\n if (col || isColumnChooser) {\n this.filterParent = this.parent.createElement('div', { className: (isColumnChooser ? 'e-maincolumnchooserdiv ' : '') + 'e-mainfilterdiv e-default-filter',\n id: (isColumnChooser ? 'columchooser' : col.uid) + '-main-filter' });\n return this.filterParent;\n }\n else {\n this.customColumnDiv = gObj.createElement('div', { className: 'columndiv columnmenudiv', styles: 'width: 100%' });\n if (this.parent.showColumnMenu && this.parent.rowRenderingMode === 'Horizontal' && this.action === ResponsiveDialogAction.isColMenu) {\n this.columnMenuResponsiveContent('AutoFitAll', gObj.localeObj.getConstant('AutoFitAll'));\n this.columnMenuResponsiveContent('AutoFit', gObj.localeObj.getConstant('AutoFit'));\n if (column.allowGrouping && gObj.allowGrouping) {\n this.columnMenuResponsiveContent('Group', gObj.localeObj.getConstant('Group'), gObj.groupSettings.columns.indexOf(column.field) >= 0);\n this.columnMenuResponsiveContent('UnGroup', gObj.localeObj.getConstant('Ungroup'), gObj.groupSettings.columns.indexOf(column.field) < 0);\n }\n if (column.allowSorting && gObj.allowSorting) {\n var direction = 'None';\n var sortColumns = this.parent.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (sortColumns[parseInt(i.toString(), 10)].field === column.field) {\n direction = sortColumns[parseInt(i.toString(), 10)].direction;\n break;\n }\n }\n this.columnMenuResponsiveContent('ascending', gObj.localeObj.getConstant('SortAscending'), direction === 'Ascending');\n this.columnMenuResponsiveContent('descending', gObj.localeObj.getConstant('SortDescending'), direction === 'Descending');\n }\n if (gObj.showColumnChooser) {\n this.columnMenuResponsiveContent('Column', gObj.localeObj.getConstant('Columnchooser'));\n }\n if (column.allowFiltering && gObj.allowFiltering) {\n this.columnMenuResponsiveContent('Filter', gObj.localeObj.getConstant('FilterMenu'));\n }\n }\n else {\n var cols = gObj.getColumns();\n var sortBtnParent = gObj.createElement('div', { className: 'e-ressortbutton-parent' });\n var filteredCols = [];\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter) {\n for (var i = 0; i < gObj.filterSettings.columns.length; i++) {\n filteredCols.push(gObj.filterSettings.columns[parseInt(i.toString(), 10)].field);\n }\n }\n for (var i = 0; i < cols.length; i++) {\n if (!cols[parseInt(i.toString(), 10)].visible || (!cols[parseInt(i.toString(), 10)].allowSorting && isSort)\n || (!cols[parseInt(i.toString(), 10)].allowFiltering && isFilter)) {\n continue;\n }\n var cDiv = gObj.createElement('div', { className: 'e-responsivecoldiv' });\n cDiv.setAttribute('data-e-mappingname', cols[parseInt(i.toString(), 10)].field);\n cDiv.setAttribute('data-e-mappinguid', cols[parseInt(i.toString(), 10)].uid);\n var span = gObj.createElement('span', { innerHTML: cols[parseInt(i.toString(), 10)].headerText, className: 'e-res-header-text' });\n cDiv.appendChild(span);\n this.customColumnDiv.appendChild(cDiv);\n if (isSort) {\n var fields = this.getSortedFieldsAndDirections('field');\n var index = fields.indexOf(cols[parseInt(i.toString(), 10)].field);\n var button = gObj.createElement('button', { id: gObj.element.id + cols[parseInt(i.toString(), 10)].field + 'sortbutton' });\n var clone = sortBtnParent.cloneNode();\n clone.appendChild(button);\n cDiv.appendChild(clone);\n var btnObj = new Button({\n cssClass: this.parent.cssClass ? 'e-ressortbutton' + ' ' + this.parent.cssClass : 'e-ressortbutton'\n });\n btnObj.appendTo(button);\n var buttonInnerText = void 0;\n if ((!isNullOrUndefined(this.parent.sortSettings.columns[parseInt(index.toString(), 10)]))) {\n buttonInnerText = (this.parent.sortSettings.columns[parseInt(index.toString(), 10)].direction === 'Ascending') ?\n this.parent.localeObj.getConstant('AscendingText') : this.parent.localeObj.getConstant('DescendingText');\n }\n button.innerHTML = index > -1 ? buttonInnerText : this.parent.localeObj.getConstant('NoneText');\n button.onclick = function (e) {\n _this.sortButtonClickHandler(e.target);\n };\n }\n if (isFilter && filteredCols.indexOf(cols[parseInt(i.toString(), 10)].field) > -1) {\n var divIcon = gObj.createElement('div', { className: 'e-icons e-res-icon e-filtersetdiv' });\n var iconSpan = gObj.createElement('span', { className: 'e-icons e-res-icon e-filterset' });\n iconSpan.setAttribute('colType', cols[parseInt(i.toString(), 10)].type);\n divIcon.appendChild(iconSpan);\n cDiv.appendChild(divIcon);\n }\n }\n }\n EventHandler.add(this.customColumnDiv, Browser.isDevice ? 'touchend' : 'click', this.customFilterColumnClickHandler, this);\n return this.customColumnDiv;\n }\n };\n ResponsiveDialogRenderer.prototype.getSortedFieldsAndDirections = function (name) {\n var fields = [];\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n fields.push(this.parent.sortSettings.columns[parseInt(i.toString(), 10)][\"\" + name]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.sortButtonClickHandler = function (target) {\n if (target) {\n var columndiv = parentsUntil(target, 'e-responsivecoldiv');\n var field = columndiv.getAttribute('data-e-mappingname');\n if (!this.parent.allowMultiSorting) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n this.resetSortButtons(target);\n }\n var txt = target.textContent;\n var directionTxt = txt === this.parent.localeObj.getConstant('NoneText') ? this.parent.localeObj.getConstant('AscendingText')\n : txt === this.parent.localeObj.getConstant('AscendingText') ? this.parent.localeObj.getConstant('DescendingText')\n : this.parent.localeObj.getConstant('NoneText');\n var direction = directionTxt === this.parent.localeObj.getConstant('AscendingText') ? 'Ascending'\n : directionTxt === this.parent.localeObj.getConstant('DescendingText') ? 'Descending' : 'None';\n target.innerHTML = directionTxt;\n this.setSortedCols(field, direction);\n }\n };\n ResponsiveDialogRenderer.prototype.resetSortButtons = function (target) {\n var buttons = [].slice.call(this.customColumnDiv.getElementsByClassName('e-ressortbutton'));\n for (var i = 0; i < buttons.length; i++) {\n if (buttons[parseInt(i.toString(), 10)] !== target) {\n buttons[parseInt(i.toString(), 10)].innerHTML = 'None';\n }\n }\n };\n ResponsiveDialogRenderer.prototype.setSortedCols = function (field, direction) {\n var fields = this.getCurrentSortedFields();\n var index = fields.indexOf(field);\n if (this.parent.allowMultiSorting && index > -1) {\n this.sortedCols.splice(index, 1);\n this.sortPredicate.splice(index, 1);\n }\n this.isSortApplied = true;\n if (direction !== 'None') {\n this.sortedCols.push(field);\n this.sortPredicate.push({ field: field, direction: direction });\n }\n };\n ResponsiveDialogRenderer.prototype.getCurrentSortedFields = function () {\n var fields = [];\n for (var i = 0; i < this.sortedCols.length; i++) {\n fields.push(this.sortedCols[parseInt(i.toString(), 10)]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.customFilterColumnClickHandler = function (e) {\n var gObj = this.parent;\n var target = e.target;\n if (parentsUntil(target, 'columnmenudiv') && this.action === ResponsiveDialogAction.isColMenu && !parentsUntil(target, 'e-disabled')) {\n var column = this.menuCol ? this.menuCol : this.filteredCol;\n if (parentsUntil(target, 'e-responsiveautofitalldiv')) {\n gObj.autoFitColumns([]);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsiveautofitdiv')) {\n gObj.autoFitColumns(column.field);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsivegroupdiv')) {\n gObj.groupColumn(column.field);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsiveungroupdiv')) {\n gObj.ungroupColumn(column.field);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsiveascendingdiv')) {\n gObj.sortColumn(column.field, 'Ascending');\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsivedescendingdiv')) {\n gObj.sortColumn(column.field, 'Descending');\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsivecolumndiv')) {\n gObj.notify(events.renderResponsiveChangeAction, { action: 5 });\n gObj.showResponsiveCustomColumnChooser();\n }\n else if (parentsUntil(target, 'e-responsivefilterdiv')) {\n gObj.notify(events.renderResponsiveChangeAction, { action: 3 });\n this.isRowResponsive = true;\n this.isCustomDialog = false;\n if (gObj.filterModule) {\n gObj.filterModule.responsiveDialogRenderer.showResponsiveDialog(column);\n }\n }\n e.preventDefault();\n }\n if (this.action !== ResponsiveDialogAction.isFilter) {\n return;\n }\n if (gObj.filterSettings.type !== 'FilterBar') {\n if (target.classList.contains('e-responsivecoldiv') || target.parentElement.classList.contains('e-responsivecoldiv')) {\n var field = target.getAttribute('data-e-mappingname');\n if (!field) {\n field = target.parentElement.getAttribute('data-e-mappingname');\n }\n if (field) {\n var col = gObj.getColumnByField(field);\n this.isRowResponsive = true;\n this.showResponsiveDialog(col);\n }\n }\n else if (target.classList.contains('e-filterset') || target.parentElement.classList.contains('e-filtersetdiv')) {\n var colDiv = parentsUntil(target, 'e-responsivecoldiv');\n if (colDiv) {\n var field = colDiv.getAttribute('data-e-mappingname');\n var col = gObj.getColumnByField(field);\n if (col.filter.type === 'Menu' || (!col.filter.type && gObj.filterSettings.type === 'Menu')) {\n this.isDialogClose = true;\n }\n this.parent.filterModule.filterModule.clearCustomFilter(col);\n this.removeCustomDlgFilterEle(target);\n }\n }\n }\n };\n /**\n * Function to show the responsive dialog\n *\n * @param {Column} col - specifies the filter column\n * @param {Column} column - specifies the menu column\n * @returns {void}\n */\n ResponsiveDialogRenderer.prototype.showResponsiveDialog = function (col, column) {\n if ((this.isCustomDialog && this.action === ResponsiveDialogAction.isFilter && !this.isRowResponsive) ||\n (column && this.action === ResponsiveDialogAction.isColMenu)) {\n this.menuCol = column;\n this.renderCustomFilterDialog(null, column);\n }\n else {\n this.filteredCol = col;\n this.renderResponsiveDialog(col);\n if (this.parent.enableAdaptiveUI && col) {\n this.parent.filterModule.setFilterModel(col);\n this.parent.filterModule.filterModule.openDialog(this.parent.filterModule.createOptions(col, undefined));\n }\n if (this.action === ResponsiveDialogAction.isColumnChooser) {\n this.parent.notify(events.renderResponsiveColumnChooserDiv, { action: 'open' });\n }\n if (this.action === ResponsiveDialogAction.isSort) {\n var args = {\n cancel: false, dialogObj: this.customResponsiveDlg, requestType: 'beforeOpenAptiveSortDialog'\n };\n this.parent.trigger(events.beforeOpenAdaptiveDialog, args);\n if (args.cancel) {\n return;\n }\n }\n this.customResponsiveDlg.show(true);\n this.customResponsiveDlg.element.style.maxHeight = '100%';\n this.setTopToChildDialog(this.customResponsiveDlg.element);\n }\n };\n ResponsiveDialogRenderer.prototype.setTopToChildDialog = function (dialogEle) {\n var child = dialogEle.querySelector('.e-dialog');\n if (child) {\n var top_1 = dialogEle.querySelector('.e-dlg-header-content').getBoundingClientRect().height;\n child.style.top = top_1 + 'px';\n }\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDialog = function (col, column) {\n var gObj = this.parent;\n var isColMenu = this.action === ResponsiveDialogAction.isColMenu;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var colMenu = isColMenu ? 'e-customcolumnmenudiv ' : '';\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + (isColMenu ? 'customcolumnmenu' : 'customfilter'),\n className: this.parent.cssClass ? colMenu +\n 'e-customfilterdiv e-responsive-dialog ' + this.parent.cssClass : colMenu + 'e-customfilterdiv e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customFilterDlg = this.getDialogOptions(col, true, null, column);\n var args = {\n cancel: false, dialogObj: this.customFilterDlg, requestType: 'beforeOpenAptiveFilterDialog'\n };\n this.parent.trigger(events.beforeOpenAdaptiveDialog, args);\n if (args.cancel) {\n return;\n }\n this.customFilterDlg.appendTo(outerDiv);\n this.customFilterDlg.show(true);\n this.customFilterDlg.element.style.maxHeight = '100%';\n };\n ResponsiveDialogRenderer.prototype.getDialogOptions = function (col, isCustomFilter, id, column) {\n var options = new Dialog({\n isModal: true,\n showCloseIcon: true,\n closeOnEscape: false,\n locale: this.parent.locale,\n target: this.parent.adaptiveDlgTarget ? this.parent.adaptiveDlgTarget : document.body,\n visible: false,\n enableRtl: this.parent.enableRtl,\n content: this.renderResponsiveContent(col, column),\n open: this.dialogOpen.bind(this),\n created: this.dialogCreated.bind(this),\n close: this.beforeDialogClose.bind(this),\n width: '100%',\n height: '100%',\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n options[\"\" + isStringTemplate] = true;\n if (isCustomFilter) {\n options.header = this.renderResponsiveHeader(col, undefined, true);\n var colMenu = this.action === ResponsiveDialogAction.isColMenu ? 'e-customcolumnmenu ' : '';\n options.cssClass = colMenu + 'e-customfilter';\n }\n else {\n options.header = this.renderResponsiveHeader(col);\n options.cssClass = this.parent.rowRenderingMode === 'Vertical' && this.action === ResponsiveDialogAction.isFilter\n ? 'e-res' + id + ' e-row-responsive-filter' : 'e-res' + id;\n }\n return options;\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveDialog = function (col) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var id = this.action === ResponsiveDialogAction.isFilter ? 'filter' : 'sort';\n id = this.action === ResponsiveDialogAction.isColumnChooser ? 'columnchooser' : id;\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'responsive' + id,\n className: this.parent.cssClass ?\n 'e-res' + id + 'div e-responsive-dialog ' + this.parent.cssClass : 'e-res' + id + 'div e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customResponsiveDlg = this.getDialogOptions(col, false, id);\n this.customResponsiveDlg.appendTo(outerDiv);\n };\n ResponsiveDialogRenderer.prototype.dialogCreated = function () {\n addBiggerDialog(this.parent);\n };\n ResponsiveDialogRenderer.prototype.dialogOpen = function () {\n if (this.action === ResponsiveDialogAction.isSort && this.parent.allowMultiSorting) {\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n this.sortedCols.push(this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field);\n var sortField = this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field;\n var sortDirection = this.parent.sortSettings.columns[parseInt(i.toString(), 10)].direction;\n this.sortPredicate.push({ field: sortField, direction: sortDirection });\n }\n }\n };\n ResponsiveDialogRenderer.prototype.beforeDialogClose = function (args) {\n this.isDialogClose = args.element && !args.element.querySelector('.e-xl-customfilterdiv')\n && args.element.classList.contains('e-resfilterdiv');\n if (this.action === ResponsiveDialogAction.isFilter) {\n if (args.element.classList.contains('e-resfilterdiv')) {\n this.parent.filterModule.filterModule.closeResponsiveDialog(this.isCustomDlgRender);\n }\n else if (args.element.classList.contains('e-customfilterdiv')) {\n this.closeCustomFilter();\n }\n if (this.parent.rowRenderingMode === 'Horizontal' && this.parent.showColumnMenu) {\n this.parent.notify(events.renderResponsiveChangeAction, { action: 4 });\n var custom = document.querySelector('.e-resfilter');\n if (custom) {\n remove(custom);\n }\n }\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.closeCustomDialog();\n }\n else if (this.action === ResponsiveDialogAction.isColMenu) {\n this.closeCustomFilter();\n var custom = document.querySelector('.e-rescolummenu');\n if (custom) {\n remove(custom);\n }\n }\n else if (this.action === ResponsiveDialogAction.isColumnChooser) {\n this.parent.notify(events.renderResponsiveColumnChooserDiv, { action: 'clear' });\n var custom = document.querySelector('.e-rescolumnchooser');\n if (custom) {\n remove(custom);\n }\n if (this.parent.rowRenderingMode === 'Horizontal' && this.parent.showColumnMenu) {\n this.parent.notify(events.renderResponsiveChangeAction, { action: 4 });\n }\n this.isCustomDialog = false;\n this.isDialogClose = false;\n }\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n };\n ResponsiveDialogRenderer.prototype.sortColumn = function () {\n if (!this.isSortApplied) {\n this.closeCustomDialog();\n return;\n }\n if (this.sortPredicate.length) {\n this.parent.setProperties({ sortSettings: { columns: [] } }, true);\n }\n for (var i = 0; i < this.sortPredicate.length; i++) {\n this.parent.sortColumn(this.sortPredicate[parseInt(i.toString(), 10)].field, this.sortPredicate[parseInt(i.toString(), 10)].direction, this.parent.allowMultiSorting);\n }\n if (!this.sortPredicate.length) {\n this.parent.clearSorting();\n }\n this.closeCustomDialog();\n };\n ResponsiveDialogRenderer.prototype.getHeaderTitle = function (args, col) {\n var gObj = this.parent;\n var title;\n if (this.action === ResponsiveDialogAction.isEdit) {\n title = gObj.localeObj.getConstant('EditFormTitle') + args.primaryKeyValue[0];\n }\n else if (this.action === ResponsiveDialogAction.isAdd) {\n title = gObj.localeObj.getConstant('AddFormTitle');\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n title = col ? col.headerText || col.field : gObj.localeObj.getConstant('FilterButton');\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n title = gObj.localeObj.getConstant('Sort');\n }\n else if (this.action === ResponsiveDialogAction.isColMenu) {\n title = gObj.localeObj.getConstant('ColumnMenu');\n }\n else if (this.action === ResponsiveDialogAction.isColumnChooser) {\n title = gObj.localeObj.getConstant('ChooseColumns');\n }\n return title;\n };\n ResponsiveDialogRenderer.prototype.getDialogName = function (action) {\n var name;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n name = 'dialogEdit_wrapper_title';\n }\n else if (action === ResponsiveDialogAction.isFilter) {\n name = 'responsive_filter_dialog_wrapper';\n }\n else if (action === ResponsiveDialogAction.isColumnChooser) {\n name = 'responsive_column_chooser_dialog_wrapper';\n }\n return name;\n };\n ResponsiveDialogRenderer.prototype.getButtonText = function (action) {\n var text;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n text = 'Save';\n }\n else if (action === ResponsiveDialogAction.isFilter || this.action === ResponsiveDialogAction.isSort ||\n action === ResponsiveDialogAction.isColumnChooser || this.action === ResponsiveDialogAction.isColumnChooser) {\n text = 'OKButton';\n }\n return text;\n };\n /**\n * Function to render the responsive header\n *\n * @param {Column} col - specifies the column\n * @param {ResponsiveDialogArgs} args - specifies the responsive dialog arguments\n * @param {boolean} isCustomFilter - specifies whether it is custom filter or not\n * @returns {HTMLElement | string} returns the html element or string\n */\n ResponsiveDialogRenderer.prototype.renderResponsiveHeader = function (col, args, isCustomFilter) {\n var _this = this;\n var gObj = this.parent;\n gObj.on(events.enterKeyHandler, this.keyHandler, this);\n var id = gObj.element.id + this.getDialogName(this.action);\n var header = gObj.createElement('div', { className: 'e-res-custom-element' });\n var titleDiv = gObj.createElement('div', { className: 'e-dlg-custom-header', id: id });\n titleDiv.innerHTML = this.getHeaderTitle(args, col);\n header.appendChild(titleDiv);\n var saveBtn = gObj.createElement('button');\n if (!isCustomFilter) {\n this.saveBtn = new Button({\n cssClass: this.parent.cssClass ?\n 'e-primary e-flat e-res-apply-btn' + ' ' + this.parent.cssClass : 'e-primary e-flat e-res-apply-btn'\n });\n saveBtn.innerHTML = gObj.localeObj.getConstant(this.getButtonText(this.action));\n this.saveBtn.appendTo(saveBtn);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n saveBtn.onclick = function (e) {\n _this.dialogHdrBtnClickHandler();\n };\n }\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter || isSort) {\n var id_1 = isSort ? 'sort' : 'filter';\n var clearBtn = gObj.createElement('button');\n this.filterClearBtn = new Button({\n cssClass: this.parent.cssClass ? 'e-primary e-flat e-res-' + id_1 + '-clear-btn' + ' ' + this.parent.cssClass\n : 'e-primary e-flat e-res-' + id_1 + '-clear-btn'\n });\n if (isFilter) {\n var span = gObj.createElement('span', { className: 'e-btn-icon e-icon-filter-clear e-icons' });\n clearBtn.appendChild(span);\n }\n else {\n clearBtn.innerHTML = gObj.localeObj.getConstant('Clear');\n }\n header.appendChild(clearBtn);\n this.filterClearBtn.appendTo(clearBtn);\n clearBtn.onclick = function (e) {\n if ((parentsUntil(e.target, 'e-customfilter'))) {\n _this.parent.filterModule.clearFiltering();\n _this.removeCustomDlgFilterEle();\n }\n else {\n if (isFilter) {\n _this.filterClear();\n }\n else {\n _this.resetSortButtons();\n _this.sortedCols = [];\n _this.sortPredicate = [];\n _this.isSortApplied = true;\n }\n }\n };\n header.appendChild(clearBtn);\n }\n if (!isCustomFilter) {\n header.appendChild(saveBtn);\n }\n return header;\n };\n ResponsiveDialogRenderer.prototype.filterClear = function () {\n this.parent.filterModule.filterModule.clearCustomFilter(this.filteredCol);\n this.parent.filterModule.filterModule.closeResponsiveDialog();\n };\n ResponsiveDialogRenderer.prototype.removeCustomFilterElement = function () {\n var elem = document.getElementById(this.parent.element.id + 'customcolumnmenu');\n if (elem) {\n remove(elem);\n var custom = document.querySelector('.e-customfilter');\n if (custom) {\n remove(custom);\n }\n }\n var custommenu = document.querySelector('.e-rescolumnchooser');\n if (custommenu) {\n remove(custommenu);\n }\n };\n ResponsiveDialogRenderer.prototype.dialogHdrBtnClickHandler = function () {\n if (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd) {\n this.parent.endEdit();\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n this.parent.filterModule.filterModule.applyCustomFilter({ col: this.filteredCol, isCustomFilter: this.isCustomDlgRender });\n this.removeCustomFilterElement();\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.sortColumn();\n this.removeCustomFilterElement();\n }\n else if (this.action === ResponsiveDialogAction.isColumnChooser) {\n this.parent.notify(events.renderResponsiveColumnChooserDiv, { action: 'confirm' });\n this.removeCustomFilterElement();\n this.isCustomDialog = false;\n this.isDialogClose = false;\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomDialog = function () {\n if (this.isCustomDlgRender) {\n var mainfilterdiv = this.customResponsiveDlg.element.querySelector('.e-mainfilterdiv');\n remove(mainfilterdiv);\n return;\n }\n this.isRowResponsive = false;\n this.isCustomDlgRender = false;\n this.destroyCustomFilterDialog();\n };\n ResponsiveDialogRenderer.prototype.destroyCustomFilterDialog = function () {\n if (!this.customResponsiveDlg) {\n return;\n }\n var elem = document.getElementById(this.customResponsiveDlg.element.id);\n if (this.customResponsiveDlg && !this.customResponsiveDlg.isDestroyed && elem) {\n this.customResponsiveDlg.destroy();\n remove(elem);\n }\n this.closeCustomFilter();\n if (this.action === ResponsiveDialogAction.isSort) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomFilter = function () {\n if (!this.isDialogClose && this.customFilterDlg) {\n var customEle = document.getElementById(this.customFilterDlg.element.id);\n if (this.customFilterDlg && !this.customFilterDlg.isDestroyed && customEle) {\n this.customFilterDlg.destroy();\n remove(customEle);\n }\n }\n this.isCustomDialog = false;\n this.isDialogClose = false;\n };\n ResponsiveDialogRenderer.prototype.removeCustomDlgFilterEle = function (target) {\n if (target) {\n if (target.parentElement.classList.contains('e-filtersetdiv')) {\n remove(target.parentElement);\n }\n else {\n remove(target);\n }\n }\n else {\n var child = this.customColumnDiv.children;\n for (var i = 0; i < child.length; i++) {\n target = child[parseInt(i.toString(), 10)].querySelector('.e-filtersetdiv');\n if (target) {\n remove(target);\n i--;\n }\n }\n }\n };\n ResponsiveDialogRenderer.prototype.keyHandler = function (e) {\n if (e.keyCode === 13 && ((this.action === ResponsiveDialogAction.isFilter\n && e.target.classList.contains('e-searchinput'))\n || (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd))) {\n this.dialogHdrBtnClickHandler();\n }\n };\n ResponsiveDialogRenderer.prototype.editComplate = function (args) {\n if (args.requestType === 'save' || args.requestType === 'cancel') {\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n }\n };\n ResponsiveDialogRenderer.prototype.removeEventListener = function () {\n if (this.customColumnDiv) {\n EventHandler.remove(this.customColumnDiv, Browser.isDevice ? 'touchend' : 'click', this.customFilterColumnClickHandler);\n }\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.parent.removeEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n return ResponsiveDialogRenderer;\n}());\nexport { ResponsiveDialogRenderer };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ResponsiveDialogRenderer } from '../renderer/responsive-dialog-renderer';\n/**\n * ServiceLocator\n *\n * @hidden\n */\nvar ServiceLocator = /** @class */ (function () {\n function ServiceLocator() {\n this.services = {};\n }\n ServiceLocator.prototype.register = function (name, type) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n this.services[\"\" + name] = type;\n }\n };\n ServiceLocator.prototype.getService = function (name) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The service \" + name + \" is not registered\";\n }\n return this.services[\"\" + name];\n };\n ServiceLocator.prototype.registerAdaptiveService = function (type, isAdaptiveUI, action) {\n if (isAdaptiveUI) {\n type.responsiveDialogRenderer = new ResponsiveDialogRenderer(type.parent, type.serviceLocator);\n type.responsiveDialogRenderer.action = action;\n }\n else {\n if (type.responsiveDialogRenderer) {\n type.responsiveDialogRenderer.removeEventListener();\n type.responsiveDialogRenderer = undefined;\n }\n }\n };\n return ServiceLocator;\n}());\nexport { ServiceLocator };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\n/**\n * RendererFactory\n *\n * @hidden\n */\nvar RendererFactory = /** @class */ (function () {\n function RendererFactory() {\n this.rendererMap = {};\n }\n RendererFactory.prototype.addRenderer = function (name, type) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n this.rendererMap[\"\" + rName] = type;\n }\n };\n RendererFactory.prototype.getRenderer = function (name) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The renderer \" + rName + \" is not found\";\n }\n else {\n return this.rendererMap[\"\" + rName];\n }\n };\n return RendererFactory;\n}());\nexport { RendererFactory };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { formatUnit } from '@syncfusion/ej2-base';\nimport { columnWidthChanged, preventFrozenScrollRefresh } from '../base/constant';\nimport { Column } from '../models/column';\nimport { parentsUntil, ispercentageWidth, getScrollBarWidth } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * ColumnWidthService\n *\n * @hidden\n */\nvar ColumnWidthService = /** @class */ (function () {\n function ColumnWidthService(parent) {\n this.parent = parent;\n }\n ColumnWidthService.prototype.setWidthToColumns = function () {\n var i = 0;\n var indexes = this.parent.getColumnIndexesInView();\n var wFlag = true;\n var totalColumnsWidth = 0;\n if (this.parent.allowGrouping) {\n for (var len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n wFlag = false;\n continue;\n }\n this.setColumnWidth(new Column({ width: '30px' }), i);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n var columns = this.parent.getColumns();\n for (var j = 0; j < columns.length; j++) {\n this.setColumnWidth(columns[parseInt(j.toString(), 10)], wFlag && this.parent.enableColumnVirtualization ? undefined : j + i);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), this.parent.groupSettings.columns.length + columns.length);\n }\n totalColumnsWidth = this.getTableWidth(this.parent.getColumns());\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(totalColumnsWidth);\n }\n };\n ColumnWidthService.prototype.setMinwidthBycalculation = function (tWidth) {\n var difference = 0;\n var collection = this.parent.getColumns().filter(function (a) {\n return isNullOrUndefined(a.width) || a.width === 'auto';\n });\n if (collection.length) {\n if (!isNullOrUndefined(this.parent.width) && this.parent.width !== 'auto' &&\n typeof (this.parent.width) === 'string' && this.parent.width.indexOf('%') === -1) {\n difference = (typeof this.parent.width === 'string' ? parseInt(this.parent.width, 10) : this.parent.width) - tWidth;\n }\n else {\n difference = this.parent.element.getBoundingClientRect().width - tWidth;\n }\n var tmWidth = 0;\n for (var _i = 0, collection_1 = collection; _i < collection_1.length; _i++) {\n var cols = collection_1[_i];\n tmWidth += !isNullOrUndefined(cols.minWidth) ?\n ((typeof cols.minWidth === 'string' ? parseInt(cols.minWidth, 10) : cols.minWidth)) : 0;\n }\n for (var i = 0; i < collection.length; i++) {\n if (tWidth === 0 && this.parent.allowResizing && this.isWidthUndefined() && (i !== collection.length - 1)) {\n this.setUndefinedColumnWidth(collection);\n }\n var index = this.parent.getColumnIndexByField(collection[parseInt(i.toString(), 10)].field) + this.parent.getIndentCount();\n if (tWidth !== 0 && difference < tmWidth) {\n this.setWidth(collection[parseInt(i.toString(), 10)].minWidth, index);\n }\n else if (tWidth !== 0 && difference > tmWidth) {\n this.setWidth('', index, true);\n }\n }\n }\n };\n ColumnWidthService.prototype.setUndefinedColumnWidth = function (collection) {\n for (var k = 0; k < collection.length; k++) {\n if (k !== collection.length - 1) {\n collection[parseInt(k.toString(), 10)].width = 200;\n this.setWidth(200, this.parent.getColumnIndexByField(collection[parseInt(k.toString(), 10)].field));\n }\n }\n };\n ColumnWidthService.prototype.setColumnWidth = function (column, index, module) {\n if (this.parent.getColumns().length < 1) {\n return;\n }\n var columnIndex = isNullOrUndefined(index) ? this.parent.getNormalizedColumnIndex(column.uid) : index;\n var cWidth = this.getWidth(column);\n var tgridWidth = this.getTableWidth(this.parent.getColumns());\n if (cWidth !== null) {\n this.setWidth(cWidth, columnIndex);\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(tgridWidth);\n }\n if ((this.parent.allowResizing && module === 'resize') || (this.parent.getFrozenColumns() && this.parent.allowResizing)) {\n this.setWidthToTable();\n }\n this.parent.notify(columnWidthChanged, { index: columnIndex, width: cWidth, column: column, module: module });\n }\n };\n ColumnWidthService.prototype.setWidth = function (width, index, clear) {\n if (this.parent.groupSettings.columns.length > index && ispercentageWidth(this.parent)) {\n var elementWidth = this.parent.element.offsetWidth;\n width = (30 / elementWidth * 100).toFixed(1) + '%';\n }\n var header = this.parent.getHeaderTable();\n var content = this.parent.getContentTable();\n var fWidth = formatUnit(width);\n var headerCol = header.querySelector(literals.colGroup).children[parseInt(index.toString(), 10)];\n if (headerCol && !clear) {\n headerCol.style.width = fWidth;\n }\n else if (headerCol && clear) {\n headerCol.style.width = '';\n }\n var contentCol = content.querySelector(literals.colGroup).children[parseInt(index.toString(), 10)];\n if (contentCol && !clear) {\n contentCol.style.width = fWidth;\n }\n else if (contentCol && clear) {\n contentCol.style.width = '';\n }\n if (!this.parent.enableColumnVirtualization && this.parent.isEdit) {\n var edit = this.parent.element.querySelectorAll('.e-table.e-inline-edit');\n var editTableCol = [];\n for (var i = 0; i < edit.length; i++) {\n if (parentsUntil(edit[parseInt(i.toString(), 10)], 'e-grid').id === this.parent.element.id) {\n for (var j = 0; j < edit[parseInt(i.toString(), 10)].querySelector('colgroup').children.length; j++) {\n editTableCol.push(edit[parseInt(i.toString(), 10)].querySelector('colgroup').children[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (edit.length && editTableCol.length && editTableCol[parseInt(index.toString(), 10)]) {\n editTableCol[parseInt(index.toString(), 10)].style.width = fWidth;\n }\n }\n if (this.parent.isFrozenGrid() && this.parent.enableColumnVirtualization) {\n this.refreshFrozenScrollbar();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnWidthService.prototype.refreshFrozenScrollbar = function () {\n var args = { cancel: false };\n this.parent.notify(preventFrozenScrollRefresh, args);\n if (args.cancel) {\n return;\n }\n var scrollWidth = getScrollBarWidth();\n var movableScrollbar = this.parent.element.querySelector('.e-movablescrollbar');\n var movableWidth = this.parent.getContent().firstElementChild.getBoundingClientRect().width;\n if (this.parent.enableColumnVirtualization) {\n var placeHolder = this.parent.getContent().querySelector('.e-virtualtrack');\n if (placeHolder) {\n movableWidth = placeHolder.scrollWidth;\n }\n }\n if (this.parent.height !== 'auto') {\n movableWidth = movableWidth + scrollWidth;\n }\n movableScrollbar.firstElementChild.style.width = movableWidth + 'px';\n };\n ColumnWidthService.prototype.getSiblingsHeight = function (element) {\n var previous = this.getHeightFromDirection(element, 'previous');\n var next = this.getHeightFromDirection(element, 'next');\n return previous + next;\n };\n ColumnWidthService.prototype.getHeightFromDirection = function (element, direction) {\n var sibling = element[direction + 'ElementSibling'];\n var result = 0;\n var classList = [literals.gridHeader, literals.gridFooter, 'e-groupdroparea', 'e-gridpager', 'e-toolbar', 'e-temp-toolbar'];\n while (sibling) {\n if (classList.some(function (value) { return sibling.classList.contains(value); })) {\n result += sibling.offsetHeight;\n }\n sibling = sibling[direction + 'ElementSibling'];\n }\n return result;\n };\n ColumnWidthService.prototype.isWidthUndefined = function () {\n var isWidUndefCount = this.parent.getColumns().filter(function (col) {\n return isNullOrUndefined(col.width) && isNullOrUndefined(col.minWidth);\n }).length;\n return (this.parent.getColumns().length === isWidUndefCount);\n };\n ColumnWidthService.prototype.getWidth = function (column) {\n if (isNullOrUndefined(column.width) && this.parent.allowResizing\n && isNullOrUndefined(column.minWidth) && !this.isWidthUndefined()) {\n column.width = 200;\n }\n if (!column.width) {\n return null;\n }\n var width = parseInt(column.width.toString(), 10);\n if (column.minWidth && width < parseInt(column.minWidth.toString(), 10)) {\n return column.minWidth;\n }\n else if ((column.maxWidth && width > parseInt(column.maxWidth.toString(), 10))) {\n return column.maxWidth;\n }\n else {\n return column.width;\n }\n };\n ColumnWidthService.prototype.getTableWidth = function (columns) {\n var tWidth = 0;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n var cWidth = this.getWidth(column);\n if (column.width === 'auto') {\n cWidth = 0;\n }\n if (column.visible !== false && cWidth !== null) {\n tWidth += parseInt(cWidth.toString(), 10);\n }\n }\n return tWidth;\n };\n ColumnWidthService.prototype.setWidthToTable = function () {\n var tWidth = formatUnit(this.getTableWidth(this.parent.getColumns()));\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }));\n }\n tWidth = this.isAutoResize() ? '100%' : tWidth;\n this.parent.getHeaderTable().style.width = tWidth;\n this.parent.getContentTable().style.width = tWidth;\n var edit = this.parent.element.querySelector('.e-table.e-inline-edit');\n if (edit) {\n edit.style.width = tWidth;\n }\n };\n ColumnWidthService.prototype.isAutoResize = function () {\n return this.parent.allowResizing && this.parent.resizeSettings.mode === 'Auto';\n };\n return ColumnWidthService;\n}());\nexport { ColumnWidthService };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { EventHandler, getValue, closest, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, extend, Browser } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport * as event from '../base/constant';\nimport { Row } from '../models/row';\nimport { RowModelGenerator } from './row-model-generator';\nimport { parentsUntil, addRemoveEventListener, findCellIndex } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * FocusStrategy class\n *\n * @hidden\n */\nvar FocusStrategy = /** @class */ (function () {\n function FocusStrategy(parent) {\n this.currentInfo = {};\n this.oneTime = true;\n this.swap = {};\n /** @hidden */\n this.isInfiniteScroll = false;\n this.forget = false;\n this.skipFocus = true;\n this.focusByClick = false;\n this.firstHeaderCellClick = false;\n this.prevIndexes = {};\n this.refMatrix = this.refreshMatrix(true);\n this.actions = ['downArrow', 'upArrow'];\n this.isVirtualScroll = false;\n this.groupedFrozenRow = 0;\n this.parent = parent;\n this.rowModelGen = new RowModelGenerator(this.parent);\n this.addEventListener();\n }\n FocusStrategy.prototype.focusCheck = function (e) {\n var target = e.target;\n this.focusByClick = true;\n this.firstHeaderCellClick = true;\n this.skipFocus = target.classList.contains('e-grid');\n };\n FocusStrategy.prototype.onFocus = function (e) {\n if (this.parent.isDestroyed || Browser.isDevice || this.parent.enableVirtualization\n || this.parent.element.querySelector('.e-masked-table') || (!this.parent.isInitialLoad && e\n && e.target === this.parent.element && this.parent.element.querySelector('.e-spin-show'))) {\n return;\n }\n this.setActive(!this.parent.enableHeaderFocus && this.parent.frozenRows === 0);\n if (!this.parent.enableHeaderFocus && !this.parent.getCurrentViewRecords().length && ((this.parent.editSettings.mode !== 'Batch')\n || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule && !this.parent.editModule.getBatchChanges()[literals.addedRecords].length))) {\n this.getContent().matrix.\n generate(this.rowModelGen.generateRows({ rows: [new Row({ isDataRow: true })] }), this.getContent().selector, false);\n }\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n if (this.skipFocus && !(e && e.target === this.parent.element)) {\n this.focus(e);\n this.skipFocus = false;\n }\n };\n FocusStrategy.prototype.passiveFocus = function (e) {\n if (this.parent.isDestroyed) {\n return;\n }\n var firstHeaderCell = this.parent.getHeaderContent().querySelector('.e-headercell:not(.e-hide)');\n if (e.target === firstHeaderCell && e.relatedTarget && !parentsUntil(e.relatedTarget, 'e-grid')\n && !this.firstHeaderCellClick) {\n var firstHeaderCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstHeaderCellIndex[0]][firstHeaderCellIndex[1]] === 0) {\n firstHeaderCellIndex = findCellIndex(this.active.matrix.matrix, firstHeaderCellIndex, true);\n }\n this.active.matrix.current = firstHeaderCellIndex;\n this.currentInfo.element = e.target;\n this.currentInfo.elementToFocus = e.target;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n this.firstHeaderCellClick = false;\n if (e.target && e.target.classList.contains('e-detailcell')) {\n this.currentInfo.skipAction = false;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n };\n FocusStrategy.prototype.onBlur = function (e) {\n // The below boolean condition for gantt team focus fix.\n var isGantt = parentsUntil(e.target, 'e-gantt') && e.target.classList.contains('e-rowcell')\n && (!isNullOrUndefined(e.target.nextElementSibling)\n && e.target.nextElementSibling.classList.contains('e-rowcell')) ? true : false;\n if ((this.parent.isEdit || e && (!e.relatedTarget || closest(e.relatedTarget, '.e-grid'))\n && !(this.parent.element.classList.contains('e-childgrid') && !this.parent.element.matches(':focus-within')))\n && !(!isGantt && isNullOrUndefined(e.relatedTarget) && parseInt(e.target.getAttribute('data-colindex'), 10) === 0\n && parseInt(e.target.getAttribute('index'), 10) === 0) && !(!isGantt && isNullOrUndefined(e.relatedTarget)\n && !closest(document.activeElement, '.e-grid') && !isNullOrUndefined(e['sourceCapabilities']))) {\n return;\n }\n this.removeFocus();\n this.skipFocus = true;\n this.currentInfo.skipAction = false;\n this.setLastContentCellTabIndex();\n this.setFirstFocusableTabIndex();\n this.firstHeaderCellClick = false;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.setFirstFocusableTabIndex = function () {\n var gObj = this.parent;\n gObj.element.tabIndex = -1;\n if (gObj.allowGrouping && gObj.groupSettings.showDropArea) {\n var groupModule = gObj.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length > 0) {\n groupModule.element.tabIndex = -1;\n focusableGroupedItems[0].tabIndex = 0;\n }\n else {\n groupModule.element.tabIndex = 0;\n }\n return;\n }\n if (gObj.toolbar || gObj.toolbarTemplate) {\n var toolbarElement = gObj.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n if (focusableToolbarItems.length > 0 && focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input')) {\n toolbarElement.tabIndex = -1;\n focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').tabIndex = 0;\n }\n else {\n toolbarElement.tabIndex = 0;\n }\n return;\n }\n if (gObj.getColumns().length) {\n var firstHeaderCell = gObj.getHeaderContent().querySelector('.e-headercell:not(.e-hide)');\n firstHeaderCell.tabIndex = 0;\n this.setActive(false);\n if (!isNullOrUndefined(this.active) && (isNullOrUndefined(this.active.target) || !this.active.target.classList.contains('e-columnmenu'))) {\n var firstHeaderCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstHeaderCellIndex[0]][firstHeaderCellIndex[1]] === 0) {\n firstHeaderCellIndex = findCellIndex(this.active.matrix.matrix, firstHeaderCellIndex, true);\n }\n this.active.matrix.current = firstHeaderCellIndex;\n }\n return;\n }\n };\n FocusStrategy.prototype.setLastContentCellTabIndex = function () {\n var contentTable = this.parent.getContentTable();\n if (contentTable.rows[contentTable.rows.length - 1]) {\n var lastCell = contentTable.rows[contentTable.rows.length - 1].lastElementChild;\n lastCell.tabIndex = 0;\n }\n };\n FocusStrategy.prototype.onClick = function (e, force) {\n if (parentsUntil(e.target, 'e-filterbarcell') && (parentsUntil(e.target, 'e-multiselect') ||\n e.target.classList.contains('e-input-group-icon'))) {\n return;\n }\n var isContent = !isNullOrUndefined(closest(e.target, '.' + literals.gridContent));\n var isHeader = !isNullOrUndefined(closest(e.target, '.' + literals.gridHeader));\n isContent = isContent && isHeader ? !isContent : isContent;\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + literals.gridHeader)) ||\n e.target.classList.contains(literals.content) ||\n !isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n return;\n }\n this.setActive(isContent);\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + literals.gridHeader))) {\n this.clearOutline();\n return;\n }\n var beforeArgs = { cancel: false, byKey: false, byClick: !isNullOrUndefined(e.target), clickArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel || (closest(e.target, '.e-inline-edit') && (!this.parent.editSettings.showAddNewRow &&\n (this.parent.editSettings.showAddNewRow && !this.parent.element.querySelector('.e-editedrow'))))) {\n return;\n }\n this.setActive(isContent);\n if (this.getContent()) {\n var returnVal = this.getContent().onClick(e, force);\n if (returnVal === false) {\n return;\n }\n this.focus();\n if (this.currentInfo.element.classList.contains('e-rowcell') && e.type && e.type === 'click') {\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n }\n };\n FocusStrategy.prototype.handleFilterNavigation = function (e, inputSelector, buttonSelector) {\n if (e.target === document.querySelector(inputSelector) && e.key === 'Tab' && e.shiftKey) {\n e.preventDefault();\n document.querySelector(buttonSelector).focus();\n }\n else if (e.target === document.querySelector(buttonSelector) && e.key === 'Tab' && !e.shiftKey &&\n document.activeElement === document.querySelector(buttonSelector)) {\n e.preventDefault();\n document.querySelector(inputSelector).focus();\n }\n };\n FocusStrategy.prototype.onKeyPress = function (e) {\n if (this.parent.allowPaging) {\n var pagerElement = this.parent.pagerModule.pagerObj.element;\n var focusablePagerElements = this.parent.pagerModule.pagerObj.getFocusablePagerElements(pagerElement, []);\n if (this.parent.childGrid && !parentsUntil(e.target, 'e-gridpager') && this.allowToPaging(e) && focusablePagerElements.length) {\n focusablePagerElements[0].tabIndex = 0;\n }\n if (this.parent.pagerModule.pagerObj.checkPagerHasFocus()) {\n if (e.action === 'shiftTab' && focusablePagerElements.length && focusablePagerElements[0] === e.target) {\n this.setActive(true);\n var lastHeaderCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastHeaderCellIndex[0]][lastHeaderCellIndex[1]] === 0) {\n lastHeaderCellIndex = findCellIndex(this.active.matrix.matrix, lastHeaderCellIndex, false);\n }\n this.active.matrix.current = this.parent.editSettings.mode === 'Batch' ?\n this.isValidBatchEditCell(lastHeaderCellIndex) ? lastHeaderCellIndex :\n this.findBatchEditCell(lastHeaderCellIndex, false) : lastHeaderCellIndex;\n e.preventDefault();\n this.focus(e);\n return;\n }\n if (!(e.action === 'tab' && this.parent.element.classList.contains('e-childgrid')\n && ((!this.parent.pageSettings.pageSizes && focusablePagerElements.length\n && focusablePagerElements[focusablePagerElements.length - 1] === e.target)\n || (this.parent.pagerModule.pagerObj.getDropDownPage() === e.target)))) {\n this.parent.pagerModule.pagerObj.changePagerFocus(e);\n return;\n }\n else {\n var parentCell = parentsUntil(this.parent.element, 'e-detailcell');\n removeClass([this.parent.element], ['e-focus']);\n removeClass([parentCell], ['e-focused']);\n parentCell.tabIndex = -1;\n }\n }\n if (this.parent.pagerModule.pagerObj.element.tabIndex === 0 && (e.keyCode === 38 || (e.shiftKey && e.keyCode === 9))) {\n e.preventDefault();\n this.focus(e);\n return;\n }\n else if (this.parent.pagerModule.pagerObj.element.tabIndex === 0 && e.keyCode === 9) {\n e.preventDefault();\n this.parent.pagerModule.pagerObj.setPagerFocus();\n return;\n }\n if (this.parent.pagerModule.pagerObj.checkFirstPagerFocus()) {\n var lastRow = this.getContent().matrix.rows;\n var lastColumn = this.getContent().matrix.columns;\n this.getContent().matrix.current = [lastRow, lastColumn];\n }\n }\n if (this.parent.filterSettings.type === 'Excel') {\n this.handleFilterNavigation(e, '.e-excelfilter .e-menu-item:not(.e-disabled)', '.e-excelfilter .e-footer-content button:nth-child(2)');\n }\n if (this.parent.filterSettings.type === 'CheckBox') {\n this.handleFilterNavigation(e, '.e-searchinput.e-input', '.e-checkboxfilter .e-footer-content button:nth-child(2)');\n }\n if (this.parent.filterSettings.type === 'Menu') {\n this.handleFilterNavigation(e, '.e-flmenu .e-input-group.e-popup-flmenu', '.e-flmenu .e-footer-content button:nth-child(2)');\n }\n if (this.skipOn(e)) {\n return;\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent')) {\n var rows = [].slice.call(this.parent.getContentTable().rows);\n var lastCell = rows[rows.length - 1].lastElementChild;\n if (e.target === lastCell) {\n this.setActive(true);\n this.setLastContentCellActive();\n }\n }\n if (e.action === 'shiftTab' && e.target && (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea'))) {\n if (e.target === this.parent.element) {\n if (this.parent.element.classList.contains('e-childgrid')) {\n this.focusOutFromChildGrid(e);\n }\n return;\n }\n if (parentsUntil(e.target, 'e-groupdroparea')) {\n if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n return;\n }\n if (parentsUntil(e.target, 'e-toolbar')) {\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n e.preventDefault();\n if (focusableGroupedItems.length > 0) {\n focusableGroupedItems[focusableGroupedItems.length - 1].focus();\n }\n else {\n groupModule.element.focus();\n }\n }\n else if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n return;\n }\n }\n var focusFirstHeaderCell = false;\n if (e.action === 'tab' && e.target && (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea'))) {\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea\n && (e.target === this.parent.element || e.target.classList.contains('e-groupdroparea'))) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length > 0) {\n e.preventDefault();\n focusableGroupedItems[0].focus();\n return;\n }\n if (!e.target.classList.contains('e-groupdroparea')) {\n e.preventDefault();\n groupModule.element.focus();\n return;\n }\n }\n if ((this.parent.toolbar || this.parent.toolbarTemplate) && (e.target === this.parent.element\n || parentsUntil(e.target, 'e-groupdroparea')\n || e.target.classList.contains('e-toolbar'))) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n if (focusableToolbarItems.length > 0) {\n e.preventDefault();\n focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').focus();\n return;\n }\n if (!e.target.classList.contains('e-toolbar')) {\n e.preventDefault();\n toolbarElement.focus();\n return;\n }\n }\n if (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea')) {\n focusFirstHeaderCell = true;\n }\n }\n if (focusFirstHeaderCell) {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length === this.parent.columns.length) {\n this.setActive(true);\n }\n else {\n this.setActive(false);\n }\n this.active.matrix.current = [0, -1];\n }\n this.activeKey = e.action;\n var beforeArgs = { cancel: false, byKey: true, byClick: false, keyArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel) {\n return;\n }\n var bValue = this.getContent().matrix.current;\n var prevBatchValue = this.active && this.active.matrix.current ?\n [this.active.matrix.current[0], this.active.matrix.current[1]] : undefined;\n this.currentInfo.outline = true;\n var swapInfo = this.getContent().jump(e.action, bValue);\n this.swap = swapInfo;\n if (swapInfo.swap && !(this.parent.editSettings.mode === 'Batch'\n && (e.action === 'tab' || e.action === 'shiftTab'))) {\n this.setActive(!swapInfo.toHeader);\n this.getContent().matrix.current = this.getContent().getNextCurrent(bValue, swapInfo, this.active, e.action);\n this.prevIndexes = {};\n }\n this.setActiveByKey(e.action, this.getContent());\n var returnVal = this.content.lastIdxCell ? false : this.getContent().onKeyPress(e);\n if (e.target && parentsUntil(e.target, 'e-gridheader')) {\n if (e.action === 'tab' && bValue.toString() === this.active.matrix.current.toString()) {\n var nextHeaderCellIndex = findCellIndex(this.active.matrix.matrix, this.active.matrix.current, true);\n var lastHeaderCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastHeaderCellIndex[0]][lastHeaderCellIndex[1]] === 0) {\n lastHeaderCellIndex = findCellIndex(this.active.matrix.matrix, lastHeaderCellIndex, false);\n }\n if (this.active.matrix.current.toString() === lastHeaderCellIndex.toString() && this.content.matrix.matrix.length) {\n returnVal = true;\n this.setActive(true);\n var firstContentCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(this.active.matrix.matrix, [0, 0], true);\n }\n this.active.matrix.current = this.parent.editSettings.mode === 'Batch' ?\n this.isValidBatchEditCell(firstContentCellIndex) ? firstContentCellIndex :\n this.findBatchEditCell(firstContentCellIndex, true) : firstContentCellIndex;\n }\n else if (this.active.matrix.current.toString() !== nextHeaderCellIndex.toString()) {\n this.active.matrix.current = nextHeaderCellIndex;\n }\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString()) {\n var previousCellIndex = findCellIndex(this.active.matrix.matrix, this.active.matrix.current, false);\n if (previousCellIndex.toString() === this.active.matrix.current.toString()) {\n this.focusOutFromHeader(e);\n return;\n }\n if (this.active.matrix.current.toString() !== previousCellIndex.toString() && !returnVal) {\n returnVal = true;\n this.active.matrix.current = previousCellIndex;\n }\n }\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent')) {\n if (this.parent.editSettings.mode === 'Batch' && (e.action === 'tab' || e.action === 'shiftTab')) {\n this.active.matrix.current = this.findBatchEditCell(prevBatchValue, e.action === 'tab' ? true : false);\n if (e.action === 'tab' && prevBatchValue.toString() === this.active.matrix.current.toString()) {\n this.parent.editModule.editModule.addBatchRow = true;\n }\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString()) {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length === this.parent.columns.length) {\n this.focusOutFromHeader(e);\n return;\n }\n var firstContentCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(this.active.matrix.matrix, [0, 0], true);\n }\n if (!returnVal && (firstContentCellIndex.toString() === this.active.matrix.current.toString()\n || (this.parent.editSettings.mode === 'Batch'\n && prevBatchValue.toString() === this.active.matrix.current.toString()))) {\n returnVal = true;\n this.setActive(false);\n this.setLastContentCellActive();\n }\n }\n }\n if (returnVal === false) {\n this.clearIndicator();\n if (e.action === 'shiftTab' && bValue.toString() === [0, 0].toString()) {\n this.parent.element.tabIndex = -1;\n }\n if (this.parent.allowPaging && !this.parent.pagerModule.pagerObj.checkPagerHasFocus() && this.allowToPaging(e)\n && bValue.toString() !== [0, 0].toString()) {\n e.preventDefault();\n if (e.keyCode === 40) {\n this.parent.pagerModule.pagerObj.setPagerContainerFocus();\n return;\n }\n else if (e.keyCode === 9) {\n this.parent.pagerModule.pagerObj.setPagerFocus();\n return;\n }\n }\n if (this.parent.element.classList.contains('e-childgrid')) {\n this.focusOutFromChildGrid(e);\n }\n return;\n }\n e.preventDefault();\n this.focus(e);\n };\n FocusStrategy.prototype.isValidBatchEditCell = function (cellIndex) {\n var cell = this.active.getTable().rows[cellIndex[0]].cells[cellIndex[1]];\n var tr = closest(cell, 'tr');\n var cellColIndex = parseInt(cell.getAttribute('data-colindex'), 10);\n var cellCol = this.parent.getColumns()[parseInt(cellColIndex.toString(), 10)];\n if (this.active.matrix.matrix[cellIndex[0]][cellIndex[1]] === 1\n && (!tr.classList.contains('e-row') || (tr.classList.contains('e-insertedrow') || !cellCol.isPrimaryKey) && cellCol.allowEditing)) {\n return true;\n }\n return false;\n };\n FocusStrategy.prototype.findBatchEditCell = function (currentCellIndex, next, limitRow) {\n var cellIndex = currentCellIndex;\n var tempCellIndex = currentCellIndex;\n var cellIndexObtain = false;\n while (!cellIndexObtain) {\n var prevTempCellIndex = tempCellIndex;\n tempCellIndex = findCellIndex(this.active.matrix.matrix, tempCellIndex, next);\n if ((prevTempCellIndex.toString() === tempCellIndex.toString())\n || (limitRow && prevTempCellIndex[0] !== tempCellIndex[0])) {\n cellIndexObtain = true;\n continue;\n }\n if (this.isValidBatchEditCell(tempCellIndex)) {\n cellIndex = tempCellIndex;\n cellIndexObtain = true;\n }\n }\n return cellIndex;\n };\n FocusStrategy.prototype.setLastContentCellActive = function () {\n var lastContentCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastContentCellIndex[0]][lastContentCellIndex[1]] === 0) {\n lastContentCellIndex = findCellIndex(this.active.matrix.matrix, lastContentCellIndex, false);\n }\n this.active.matrix.current = lastContentCellIndex;\n };\n FocusStrategy.prototype.focusOutFromChildGrid = function (e) {\n var parentTable = parentsUntil(this.parent.element, 'e-table');\n var parentGrid = parentsUntil(parentTable, 'e-grid').ej2_instances[0];\n var parentCell = parentsUntil(this.parent.element, 'e-detailcell');\n var uid = parentsUntil(this.parent.element, 'e-detailrow').getAttribute('data-uid');\n var parentRows = [].slice.call(parentGrid.getContentTable().rows);\n var parentRowIndex = parentRows.map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n if (e.action === 'tab' && parentRowIndex >= parentRows.length - 1) {\n return;\n }\n removeClass([this.parent.element], ['e-focus']);\n removeClass([parentCell], ['e-focused']);\n parentCell.tabIndex = -1;\n e.preventDefault();\n var nextFocusCell;\n parentGrid.focusModule.removeFocus();\n if (e.action === 'shiftTab') {\n var previousRow = parentRows[parentRowIndex - 1];\n var rowCells = previousRow.cells;\n for (var i = rowCells.length - 1; i >= 0; i--) {\n nextFocusCell = rowCells[parseInt(i.toString(), 10)];\n if (!nextFocusCell.classList.contains('e-hide')) {\n parentGrid.focusModule.active.matrix.current = [parentRowIndex - 1, i];\n break;\n }\n }\n }\n else {\n nextFocusCell = parentRows[parentRowIndex + 1].cells[0];\n parentGrid.focusModule.active.matrix.current = [parentRowIndex + 1, 0];\n }\n parentGrid.focusModule.currentInfo.element = nextFocusCell;\n parentGrid.focusModule.currentInfo.elementToFocus = nextFocusCell;\n addClass([nextFocusCell], ['e-focused', 'e-focus']);\n nextFocusCell.tabIndex = 0;\n nextFocusCell.focus();\n };\n FocusStrategy.prototype.focusOutFromHeader = function (e) {\n this.removeFocus();\n if (this.parent.toolbar || this.parent.toolbarTemplate) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n e.preventDefault();\n if (focusableToolbarItems.length > 0) {\n focusableToolbarItems[focusableToolbarItems.length - 1].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').focus();\n }\n else {\n toolbarElement.focus();\n }\n return;\n }\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n e.preventDefault();\n if (focusableGroupedItems.length > 0) {\n focusableGroupedItems[focusableGroupedItems.length - 1].focus();\n }\n else {\n groupModule.element.focus();\n }\n return;\n }\n if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n };\n FocusStrategy.prototype.allowToPaging = function (e) {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.allowAdding && e.keyCode !== 40) {\n return false;\n }\n return true;\n };\n FocusStrategy.prototype.skipOn = function (e) {\n var target = e.target;\n if (!target) {\n return false;\n }\n if (this.currentInfo.skipAction) {\n this.clearIndicator();\n return true;\n }\n if (['pageUp', 'pageDown', 'altDownArrow'].indexOf(e.action) > -1) {\n this.clearIndicator();\n return true;\n }\n if (this.parent.allowGrouping) {\n var focusableGroupedItems = this.parent.groupModule.getFocusableGroupedItems();\n if (parentsUntil(e.target, 'e-groupheadercell')\n && !((e.target === focusableGroupedItems[0] && e.action === 'shiftTab')\n || (e.target === focusableGroupedItems[focusableGroupedItems.length - 1] && e.action === 'tab'))) {\n return true;\n }\n }\n if (this.parent.toolbar || this.parent.toolbarTemplate) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = toolbarElement\n .querySelectorAll('.e-toolbar-item:not(.e-overlay):not(.e-hidden)');\n if (parentsUntil(e.target, 'e-toolbar-item')\n && !(focusableToolbarItems.length > 0 && ((parentsUntil(e.target, 'e-toolbar-item') === focusableToolbarItems[0] && e.action === 'shiftTab')\n || (parentsUntil(e.target, 'e-toolbar-item') === focusableToolbarItems[focusableToolbarItems.length - 1] && e.action === 'tab')))) {\n return true;\n }\n }\n var th = closest(target, 'th') && !closest(target, 'th').tabIndex;\n if (e.target.classList.contains('e-filterbaroperator') && (e.keyCode === 13 || e.keyCode === 27)) {\n var inputTarget = closest(e.target, '.e-filterbarcell');\n inputTarget.querySelector('input').focus();\n }\n var addNewRow = this.parent.editSettings.showAddNewRow && closest(document.activeElement, '.e-addedrow') !== null;\n if ((th && closest(document.activeElement, '.e-filterbarcell') !== null) || addNewRow) {\n this.removeFocus();\n }\n var filterCell = closest(document.activeElement, '.e-filterbarcell') !== null;\n if (this.parent.enableHeaderFocus && filterCell) {\n var matrix = this.active.matrix;\n var current = matrix.current;\n filterCell = matrix.matrix[current[0]].lastIndexOf(1) !== current[1];\n }\n if (this.parent.isEdit && (e.action === 'tab' || e.action === 'shiftTab') && this.parent.editSettings.mode === 'Normal'\n && !this.parent.editSettings.showAddNewRow && !isNullOrUndefined(parentsUntil(target, 'e-addedrow'))) {\n var inputElements = this.parent.editModule.formObj.element\n .querySelectorAll('input.e-field:not(.e-disabled),button:not(.e-hide)');\n var inputTarget = target.classList.contains('e-ddl') ? target.querySelector('input') : target;\n var firstEditCell = e.action === 'tab' && inputTarget === inputElements[inputElements.length - 1];\n var lastEditCell = e.action === 'shiftTab' && inputTarget === inputElements[0];\n if (firstEditCell || lastEditCell) {\n e.preventDefault();\n var focusElement = inputElements[firstEditCell ? 0 : inputElements.length - 1];\n focusElement = focusElement.parentElement.classList.contains('e-ddl') ? focusElement.parentElement : focusElement;\n focusElement.focus();\n }\n }\n return (e.action === 'delete'\n || (this.parent.editSettings.mode !== 'Batch' && ((this.parent.isEdit && (!this.parent.editSettings.showAddNewRow ||\n (this.parent.editSettings.showAddNewRow && ((!isNullOrUndefined(this.parent.element.querySelector('.e-editedrow')) ||\n (!isNullOrUndefined(parentsUntil(target, 'e-addedrow')) && !isNullOrUndefined(closest(e.target, 'input')) && !isNullOrUndefined(document.querySelector('.e-popup-open'))) ||\n (!isNullOrUndefined(parentsUntil(target, 'e-addedrow')) && (target && !target.querySelector('.e-cancel-icon')) &&\n !isNullOrUndefined(parentsUntil(target, 'e-unboundcell')))))))) || ['insert', 'f2'].indexOf(e.action) > -1))\n || ((filterCell && this.parent.enableHeaderFocus) || ((filterCell || addNewRow) && e.action !== 'tab' && e.action !== 'shiftTab') ||\n closest(document.activeElement, '#' + this.parent.element.id + '_searchbar') !== null\n && ['enter', 'leftArrow', 'rightArrow',\n 'shiftLeft', 'shiftRight', 'ctrlPlusA'].indexOf(e.action) > -1)\n || (closest(target, '.' + literals.gridContent) === null && closest(target, '.' + literals.gridHeader) === null\n && !(e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea')))\n || (e.action === 'space' && (!target.classList.contains(literals.gridChkBox) && closest(target, '.' + literals.gridChkBox) === null\n && closest(target, '.e-headerchkcelldiv') === null))) || closest(target, '.e-filter-popup') !== null;\n };\n FocusStrategy.prototype.focusVirtualElement = function (e) {\n var _this = this;\n if (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) {\n var data = { virtualData: {}, isAdd: false, isCancel: false };\n this.parent.notify(event.getVirtualData, data);\n var isKeyFocus = this.actions.some(function (value) { return value === _this.activeKey; });\n var isSelected = this.parent.contentModule ?\n this.parent.contentModule.selectedRowIndex > -1 : false;\n if (data.isAdd || Object.keys(data.virtualData).length || isKeyFocus || data.isCancel || isSelected) {\n this.parent.notify(event.resetVirtualFocus, { isCancel: false });\n data.isCancel = false;\n this.parent.contentModule.selectedRowIndex = -1;\n if (isKeyFocus) {\n this.activeKey = this.empty;\n this.parent.notify('virtaul-key-handler', e);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n if (this.isVirtualScroll || this.isInfiniteScroll) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n this.currentInfo.elementToFocus.focus();\n }\n }\n }\n this.isVirtualScroll = this.isInfiniteScroll = false;\n };\n FocusStrategy.prototype.getFocusedElement = function () {\n return this.currentInfo.elementToFocus;\n };\n FocusStrategy.prototype.getContent = function () {\n return this.active || this.content;\n };\n FocusStrategy.prototype.setActive = function (content) {\n this.active = content ? this.content : this.header;\n };\n FocusStrategy.prototype.setFocusedElement = function (element, e) {\n var _this = this;\n this.currentInfo.elementToFocus = element;\n setTimeout(function () {\n if (!isNullOrUndefined(_this.currentInfo.elementToFocus)) {\n if (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling) {\n _this.focusVirtualElement(e);\n }\n else if (isNullOrUndefined(_this.parent.element.querySelector('.e-flmenu')) ||\n parentsUntil(document.activeElement, 'e-flmenu-valuediv') !== _this.parent.element.querySelector('.e-flmenu-valuediv')) {\n _this.currentInfo.elementToFocus.focus();\n }\n }\n }, 0);\n };\n FocusStrategy.prototype.focus = function (e) {\n this.parent.notify(event.virtaulCellFocus, e);\n this.removeFocus();\n this.addFocus(this.getContent().getFocusInfo(), e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FocusStrategy.prototype.removeFocus = function (e) {\n if (!this.currentInfo.element) {\n return;\n }\n if (this.parent.isReact && !this.parent.isEdit && this.currentInfo.element.classList.contains('e-rowcell')\n && !this.currentInfo.element.parentElement && !(this.parent.allowGrouping && this.parent.groupSettings.columns.length) &&\n this.parent.getRowByIndex(this.prevIndexes.rowIndex)) {\n var cellElem = this.parent.getCellFromIndex(this.prevIndexes.rowIndex, this.prevIndexes.cellIndex);\n this.currentInfo.element = cellElem ? cellElem : this.currentInfo.element;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.currentInfo.element.tabIndex = -1;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.addOutline = function () {\n var info = this.getContent().getFocusInfo();\n if (info.element) {\n addClass([info.element], ['e-focused']);\n addClass([info.elementToFocus], ['e-focus']);\n }\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusHeader = function () {\n this.setActive(false);\n this.resetFocus();\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusContent = function () {\n this.setActive(true);\n this.resetFocus();\n };\n FocusStrategy.prototype.resetFocus = function () {\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n this.focus();\n };\n FocusStrategy.prototype.addFocus = function (info, e) {\n this.currentInfo = info;\n this.currentInfo.outline = info.outline && (!isNullOrUndefined(e) || this.isVirtualScroll);\n if (this.isInfiniteScroll) {\n this.currentInfo.outline = true;\n }\n if (!info.element) {\n return;\n }\n var isFocused = info.elementToFocus.classList.contains('e-focus');\n if (isFocused) {\n return;\n }\n if (this.currentInfo.outline) {\n addClass([info.element], ['e-focused']);\n }\n addClass([info.elementToFocus], ['e-focus']);\n info.element.tabIndex = 0;\n if (!isFocused) {\n this.setFocusedElement(info.elementToFocus, e);\n }\n this.parent.notify(event.cellFocused, {\n element: info.elementToFocus,\n parent: info.element,\n indexes: this.getContent().matrix.current,\n byKey: !isNullOrUndefined(e),\n byClick: isNullOrUndefined(e),\n keyArgs: e,\n isJump: this.swap.swap,\n container: this.getContent().getInfo(e),\n outline: !isNullOrUndefined(e),\n swapInfo: this.swap\n });\n var _a = this.getContent().matrix.current, rowIndex = _a[0], cellIndex = _a[1];\n this.prevIndexes = { rowIndex: rowIndex, cellIndex: cellIndex };\n this.focusedColumnUid = this.parent.getColumnByIndex(cellIndex).uid;\n this.focusByClick = false;\n };\n FocusStrategy.prototype.refreshMatrix = function (content) {\n var _this = this;\n return function (e) {\n if (content && !_this.content) {\n _this.content = new ContentFocus(_this.parent);\n }\n if (!content && !_this.header) {\n _this.header = new HeaderFocus(_this.parent);\n }\n var cFocus = content ? _this.content : _this.header;\n var frozenRow = _this.parent.frozenRows;\n var batchLen = 0;\n if (frozenRow && _this.parent.editSettings.mode === 'Batch') {\n batchLen = _this.parent.getHeaderContent().querySelectorAll('.e-insertedrow').length +\n _this.parent.getHeaderContent().querySelectorAll('.e-hiddenrow').length;\n }\n if (_this.parent.groupSettings.columns.length && frozenRow && content) {\n frozenRow = 0;\n for (var i = 0; i < e.rows.length; i++) {\n frozenRow++;\n if (e.rows[parseInt(i.toString(), 10)].index + 1 === _this.parent.frozenRows) {\n break;\n }\n }\n _this.groupedFrozenRow = frozenRow;\n }\n var rows = content ? e.rows.slice(frozenRow + batchLen) : e.rows;\n var updateRow = content ? e.rows.slice(0, frozenRow + batchLen) : e.rows;\n if (_this.parent.isCollapseStateEnabled() && content) {\n rows = rows.filter(function (x) { return x.visible !== false; });\n }\n var isRowTemplate = !isNullOrUndefined(_this.parent.rowTemplate);\n if (frozenRow && ((_this.parent.editSettings.mode === 'Batch' && content && (e.name === 'batchDelete' || e.name === 'batchAdd' ||\n e.name === 'batchCancel' || (e.args && (e.args.requestType === 'batchsave')))) ||\n (e.args && (e.args.requestType === 'delete' || e.args.requestType === 'save')))) {\n var matrixcs = _this.header.matrix.matrix;\n var hdrLen = _this.parent.headerModule.rows.length;\n matrixcs.splice(hdrLen, matrixcs.length - hdrLen);\n }\n var matrix = cFocus.matrix.generate(updateRow, cFocus.selector, isRowTemplate);\n cFocus.matrix.generate(rows, cFocus.selector, isRowTemplate);\n var isScroll = _this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling;\n if ((_this.parent.editSettings.showAddNewRow && content && _this.header && _this.header.matrix) &&\n (!isScroll || (isScroll && _this.parent.isAddNewRow))) {\n var tempMatrix = _this.header.matrix.matrix;\n var lastRowHeaderIdx = _this.parent.allowFiltering && _this.parent.filterSettings.type === 'FilterBar' ? 2 : 1;\n cFocus.matrix.rows = _this.parent.frozenRows && _this.parent.editSettings.newRowPosition === 'Top' ?\n cFocus.matrix.rows : ++cFocus.matrix.rows;\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n (_this.parent.frozenRows || isScroll ?\n matrix : cFocus.matrix.matrix).unshift(_this.refreshAddNewRowMatrix(tempMatrix[tempMatrix.length - lastRowHeaderIdx]));\n }\n else {\n cFocus.matrix.matrix.push(_this.refreshAddNewRowMatrix(tempMatrix[tempMatrix.length - lastRowHeaderIdx]));\n }\n _this.parent.isAddNewRow = false;\n }\n if (!(_this.parent.isFrozenGrid() && (e.args && (e.args.requestType === 'sorting'\n || e.args.requestType === 'batchsave' || e.args.requestType === 'paging'))) ||\n (frozenRow && _this.parent.editSettings.mode === 'Batch' && content && (e.name === 'batchDelete' || e.name === 'batchAdd' ||\n e.name === 'batchCancel' || e.args.requestType === 'batchsave'\n || e.name === 'batchAdd' || e.name === 'batchCancel'))) {\n cFocus.generateRows(updateRow, {\n matrix: matrix, handlerInstance: _this.header\n });\n }\n if (!Browser.isDevice && e && e.args) {\n if (!_this.focusByClick && e.args.requestType === 'paging' && !_this.parent.pagerModule.pagerObj.checkPagerHasFocus()) {\n _this.skipFocus = false;\n _this.parent.element.focus();\n }\n if (e.args.requestType === 'grouping') {\n _this.skipFocus = true;\n }\n }\n if (e && e.args && e.args.requestType === 'virtualscroll') {\n if (_this.currentInfo.uid) {\n var index_1;\n var bool = e.rows.some(function (row, i) {\n index_1 = i;\n return row.uid === _this.currentInfo.uid;\n });\n if (bool) {\n _this.content.matrix.current[0] = index_1;\n _this.content.matrix.current[1] = _this.parent.getColumnIndexByUid(_this.focusedColumnUid) || 0;\n var focusElement = _this.getContent().getFocusInfo().elementToFocus;\n if (focusElement) {\n var cellPosition = focusElement.getBoundingClientRect();\n var gridPosition = _this.parent.element.getBoundingClientRect();\n if (cellPosition.top >= 0 && cellPosition.left >= 0 &&\n cellPosition.right <= Math.min(gridPosition.right, window.innerWidth ||\n document.documentElement.clientWidth) &&\n cellPosition.bottom <= Math.min(gridPosition.bottom, window.innerHeight ||\n document.documentElement.clientHeight)) {\n _this.isVirtualScroll = true;\n _this.focus();\n }\n }\n }\n }\n else if (e.args.focusElement && e.args.focusElement.classList.contains('e-filtertext')) {\n var focusElement = _this.parent.element.querySelector('#' + e.args.focusElement.id);\n if (focusElement) {\n focusElement.focus();\n }\n }\n }\n if (e && e.args && e.args.requestType === 'infiniteScroll') {\n _this.isInfiniteScroll = true;\n }\n };\n };\n FocusStrategy.prototype.refreshAddNewRowMatrix = function (matrix) {\n var cols = this.parent.getColumns();\n var indent = this.parent.getIndentCount();\n for (var i = indent; i < matrix.length - 1; i++) {\n if (cols[i - indent] && cols[i - indent].visible && cols[i - indent].allowEditing) {\n matrix[parseInt(i.toString(), 10)] = 1;\n }\n else {\n matrix[parseInt(i.toString(), 10)] = 0;\n }\n }\n return matrix;\n };\n FocusStrategy.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.add(this.parent.element, 'mousedown', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'touchstart', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'focus', this.onFocus, this);\n this.parent.element.addEventListener('focus', this.passiveHandler = function (e) { return _this.passiveFocus(e); }, true);\n EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n this.evtHandlers = [{ event: event.keyPressed, handler: this.onKeyPress },\n { event: event.click, handler: this.onClick },\n { event: event.contentReady, handler: this.refMatrix },\n { event: event.partialRefresh, handler: this.refMatrix },\n { event: event.refreshExpandandCollapse, handler: this.refMatrix },\n { event: event.showAddNewRowFocus, handler: this.showAddNewRowFocus },\n { event: event.headerRefreshed, handler: this.refreshMatrix() },\n { event: event.closeEdit, handler: this.restoreFocus },\n { event: event.restoreFocus, handler: this.restoreFocus },\n { event: 'start-edit', handler: this.clearIndicator },\n { event: 'start-add', handler: this.clearIndicator },\n { event: 'sorting-complete', handler: this.restoreFocus },\n { event: 'filtering-complete', handler: this.filterfocus },\n { event: 'grouping-complete', handler: this.restoreFocusWithAction },\n { event: 'ungrouping-complete', handler: this.restoreFocusWithAction },\n { event: event.batchAdd, handler: this.refMatrix },\n { event: event.batchCancel, handler: this.refMatrix },\n { event: event.batchDelete, handler: this.refMatrix },\n { event: event.detailDataBound, handler: this.refMatrix },\n { event: event.onEmpty, handler: this.refMatrix },\n { event: event.cellFocused, handler: this.internalCellFocus }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n FocusStrategy.prototype.showAddNewRowFocus = function () {\n if (this.parent.editSettings.showAddNewRow) {\n var startIdx = this.parent.editSettings.newRowPosition === 'Top' ? 0 : this.content.matrix.matrix.length - 1;\n var startCellIdx = this.parent.getIndentCount();\n if (this.parent.editSettings.newRowPosition === 'Top' && (this.parent.frozenRows ||\n this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var headrIdx = this.header.matrix.matrix.length - (this.groupedFrozenRow ?\n this.groupedFrozenRow : this.parent.frozenRows);\n startCellIdx = this.findNextCellFocus(this.header.matrix.matrix[headrIdx - 1], startCellIdx);\n this.header.matrix.current = [headrIdx - 1, startCellIdx];\n this.active = this.header;\n }\n else {\n startCellIdx = this.findNextCellFocus(this.content.matrix.matrix[parseInt(startIdx.toString(), 10)], startCellIdx);\n this.content.matrix.current = [startIdx, startCellIdx];\n this.active = this.content;\n }\n var addedrow = this.parent.element.querySelector('.e-addedrow');\n if (addedrow && addedrow.querySelectorAll('tr') &&\n addedrow.querySelector('tr').cells[parseInt(startCellIdx.toString(), 10)].querySelector('input')) {\n addedrow.querySelector('tr').cells[parseInt(startCellIdx.toString(), 10)].querySelector('input').select();\n }\n }\n };\n FocusStrategy.prototype.findNextCellFocus = function (matrix, cellIndex) {\n for (var i = cellIndex; i < matrix.length; i++) {\n if (matrix[parseInt(i.toString(), 10)] === 1) {\n return i;\n }\n }\n return cellIndex;\n };\n ;\n FocusStrategy.prototype.filterfocus = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n this.restoreFocus();\n }\n };\n FocusStrategy.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(this.parent.element, 'mousedown', this.focusCheck);\n EventHandler.remove(this.parent.element, 'touchstart', this.focusCheck);\n EventHandler.remove(this.parent.element, 'focus', this.onFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n this.parent.element.removeEventListener('focus', this.passiveHandler, true);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n FocusStrategy.prototype.destroy = function () {\n this.removeEventListener();\n };\n FocusStrategy.prototype.restoreFocus = function () {\n var groupModule = this.parent.groupModule;\n if (this.parent.allowGrouping && groupModule && (groupModule.groupSortFocus || groupModule.groupTextFocus)) {\n groupModule.groupSortFocus = false;\n groupModule.groupTextFocus = false;\n return;\n }\n this.firstHeaderCellClick = true;\n this.addFocus(this.getContent().getFocusInfo());\n };\n FocusStrategy.prototype.restoreFocusWithAction = function (e) {\n if (!this.parent.enableInfiniteScrolling) {\n var matrix = this.getContent().matrix;\n var current = matrix.current;\n switch (e.requestType) {\n case 'grouping':\n case 'ungrouping':\n current[1] = current.length &&\n !this.parent.groupSettings.showGroupedColumn && !isNullOrUndefined(matrix.matrix[current[0]]) ?\n matrix.matrix[current[0]].indexOf(1) : e.requestType === 'grouping' ? current[1] + 1 : current[1] - 1;\n break;\n }\n this.getContent().matrix.current = current;\n var groupModule = this.parent.groupModule;\n if (this.parent.allowGrouping && groupModule && groupModule.groupCancelFocus) {\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length) {\n if (focusableGroupedItems[0].parentElement.getAttribute('ej-mappingname') === e.columnName) {\n focusableGroupedItems[3].focus();\n }\n else {\n focusableGroupedItems[0].focus();\n }\n }\n else {\n groupModule.element.focus();\n }\n groupModule.groupCancelFocus = false;\n return;\n }\n this.addFocus(this.getContent().getFocusInfo());\n }\n };\n FocusStrategy.prototype.clearOutline = function () {\n this.getContent().matrix.current = this.getContent().matrix.get(0, -1, [0, 1], 'downArrow', this.getContent().validator());\n this.clearIndicator();\n };\n FocusStrategy.prototype.clearIndicator = function () {\n if (!this.currentInfo.element || !this.currentInfo.elementToFocus) {\n return;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focus', 'e-focused']);\n };\n FocusStrategy.prototype.getPrevIndexes = function () {\n var forget = this.forget;\n this.forget = false;\n return forget || !Object.keys(this.prevIndexes).length ? { rowIndex: null, cellIndex: null } : this.prevIndexes;\n };\n FocusStrategy.prototype.forgetPrevious = function () {\n this.forget = true;\n };\n FocusStrategy.prototype.setActiveByKey = function (action, active) {\n if (this.parent.frozenRows === 0) {\n return;\n }\n // eslint-disable-next-line prefer-const\n var info;\n var actions = {\n 'home': function () { return ({ toHeader: !info.isContent, toFrozen: true }); },\n 'end': function () { return ({ toHeader: !info.isContent, toFrozen: false }); },\n 'ctrlHome': function () { return ({ toHeader: true, toFrozen: false }); },\n 'ctrlEnd': function () { return ({ toHeader: false, toFrozen: false }); }\n };\n if (!(action in actions)) {\n return;\n }\n info = active.getInfo();\n var swap = actions[\"\" + action]();\n this.setActive(!swap.toHeader);\n this.getContent().matrix.current = active.matrix.current;\n };\n FocusStrategy.prototype.internalCellFocus = function (e) {\n if (!(e.byKey && e.container.isContent && e.keyArgs.action === 'enter'\n && (e.parent.classList.contains('e-detailcell') ||\n e.parent.classList.contains('e-unboundcell')))) {\n return;\n }\n this.clearIndicator();\n var focusEle = this.getContent().getFocusable(this.getFocusedElement());\n this.setFocusedElement(focusEle);\n this.currentInfo.skipAction = true;\n };\n return FocusStrategy;\n}());\nexport { FocusStrategy };\n/**\n * Create matrix from row collection which act as mental model for cell navigation\n *\n * @hidden\n */\nvar Matrix = /** @class */ (function () {\n function Matrix() {\n this.matrix = [];\n this.current = [];\n }\n Matrix.prototype.set = function (rowIndex, columnIndex, allow) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.columns));\n this.matrix[parseInt(rowIndex.toString(), 10)] = this.matrix[parseInt(rowIndex.toString(), 10)] || [];\n this.matrix[parseInt(rowIndex.toString(), 10)][parseInt(columnIndex.toString(), 10)] = allow ? 1 : 0;\n };\n Matrix.prototype.get = function (rowIndex, columnIndex, navigator, action, validator) {\n var tmp = columnIndex;\n if (rowIndex + navigator[0] < 0) {\n return [rowIndex, columnIndex];\n }\n rowIndex = Math.max(0, Math.min(rowIndex + navigator[0], this.rows));\n var emptyTable = true;\n if (isNullOrUndefined(this.matrix[parseInt(rowIndex.toString(), 10)])) {\n return null;\n }\n columnIndex = Math.max(0, Math.min(columnIndex + navigator[1], this.matrix[parseInt(rowIndex.toString(), 10)].length - 1));\n if (tmp + navigator[1] > this.matrix[parseInt(rowIndex.toString(), 10)].length - 1\n && validator(rowIndex, columnIndex, action)) {\n return [rowIndex, tmp];\n }\n var first = this.first(this.matrix[parseInt(rowIndex.toString(), 10)], columnIndex, navigator, true, action);\n columnIndex = first === null ? tmp : first;\n var val = getValue(rowIndex + \".\" + columnIndex, this.matrix);\n if (rowIndex === this.rows && (action === 'downArrow' || action === 'enter')) {\n navigator[0] = -1;\n }\n if (first === null) {\n for (var i = 0; i < this.rows; i++) {\n if (this.matrix[parseInt(i.toString(), 10)].some(function (v) { return v === 1; })) {\n emptyTable = false;\n break;\n }\n }\n if (emptyTable) {\n rowIndex = this.current.length ? this.current[0] : 0;\n return [rowIndex, columnIndex];\n }\n }\n return this.inValid(val) || !validator(rowIndex, columnIndex, action) ?\n this.get(rowIndex, tmp, navigator, action, validator) : [rowIndex, columnIndex];\n };\n Matrix.prototype.first = function (vector, index, navigator, moveTo, action) {\n if (((index < 0 || index === vector.length) && this.inValid(vector[parseInt(index.toString(), 10)])\n && (action !== 'upArrow' && action !== 'downArrow')) || !vector.some(function (v) { return v === 1; })) {\n return null;\n }\n return !this.inValid(vector[parseInt(index.toString(), 10)]) ? index :\n this.first(vector, (['upArrow', 'downArrow', 'shiftUp', 'shiftDown'].indexOf(action) !== -1) ? moveTo ? 0 : ++index : index + navigator[1], navigator, false, action);\n };\n Matrix.prototype.select = function (rowIndex, columnIndex) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.matrix[parseInt(rowIndex.toString(), 10)].length - 1));\n this.current = [rowIndex, columnIndex];\n };\n Matrix.prototype.generate = function (rows, selector, isRowTemplate) {\n this.rows = rows.length - 1;\n this.matrix = [];\n for (var i = 0; i < rows.length; i++) {\n var cells = rows[parseInt(i.toString(), 10)].cells.filter(function (c) { return c.isSpanned !== true; });\n this.columns = Math.max(cells.length - 1, this.columns | 0);\n var incrementNumber = 0;\n for (var j = 0; j < cells.length; j++) {\n if (cells[parseInt(j.toString(), 10)].column && cells[parseInt(j.toString(), 10)].column.columns) {\n incrementNumber = this.columnsCount(cells[parseInt(j.toString(), 10)].column.columns, incrementNumber);\n }\n else {\n incrementNumber++;\n }\n this.set(i, j, rows[parseInt(i.toString(), 10)].visible === false ?\n false : selector(rows[parseInt(i.toString(), 10)], cells[parseInt(j.toString(), 10)], isRowTemplate));\n }\n this.columns = Math.max(incrementNumber - 1, this.columns | 0);\n }\n return this.matrix;\n };\n Matrix.prototype.columnsCount = function (rowColumns, currentColumnCount) {\n var columns = rowColumns;\n var incrementNumber = currentColumnCount;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n incrementNumber = this.columnsCount(columns[parseInt(i.toString(), 10)].columns, incrementNumber);\n }\n else {\n incrementNumber++;\n }\n }\n return incrementNumber;\n };\n Matrix.prototype.inValid = function (value) {\n return value === 0 || value === undefined;\n };\n return Matrix;\n}());\nexport { Matrix };\n/**\n * @hidden\n */\nvar ContentFocus = /** @class */ (function () {\n function ContentFocus(parent) {\n var _this = this;\n this.matrix = new Matrix();\n this.lastIdxCell = false;\n this.parent = parent;\n this.keyActions = {\n 'rightArrow': [0, 1],\n 'tab': [0, 1],\n 'leftArrow': [0, -1],\n 'shiftTab': [0, -1],\n 'upArrow': [-1, 0],\n 'downArrow': [1, 0],\n 'shiftUp': [-1, 0],\n 'shiftDown': [1, 0],\n 'shiftRight': [0, 1],\n 'shiftLeft': [0, -1],\n 'enter': [1, 0],\n 'shiftEnter': [-1, 0]\n };\n this.indexesByKey = function (action) {\n var opt = {\n 'home': [_this.matrix.current[0], -1, 0, 1],\n 'end': [_this.matrix.current[0], _this.matrix.columns + 1, 0, -1],\n 'ctrlHome': [0, -1, 0, 1],\n 'ctrlEnd': [_this.matrix.rows, _this.matrix.columns + 1, 0, -1]\n };\n return opt[\"\" + action] || null;\n };\n }\n ContentFocus.prototype.getTable = function () {\n return (this.parent.getContentTable());\n };\n ContentFocus.prototype.onKeyPress = function (e) {\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (isMacLike && e.metaKey) {\n if (e.action === 'home') {\n e.action = 'ctrlHome';\n }\n else if (e.action === 'end') {\n e.action = 'ctrlEnd';\n }\n else if (['downArrow', 'upArrow', 'leftArrow', 'rightArrow'].indexOf(e.action) !== -1) {\n return;\n }\n }\n var navigators = this.keyActions[e.action];\n var current = this.getCurrentFromAction(e.action, navigators, e.action in this.keyActions, e);\n if (!current) {\n return;\n }\n if (((['tab', 'shiftTab'].indexOf(e.action) > -1 && this.matrix.current || []).toString() === current.toString())\n || (this.parent.allowPaging && !this.parent.pagerModule.pagerObj.checkPagerHasFocus()\n && this.matrix.current[0] === this.matrix.rows && ((this.parent.editSettings.mode === 'Batch'\n && this.parent.editSettings.allowAdding && e.keyCode === 40) || (e.keyCode === 40)))) {\n if (current.toString() === [this.matrix.rows, this.matrix.columns].toString() ||\n current.toString() === [0, 0].toString() || (this.matrix.current[0] === this.matrix.rows &&\n this.matrix.current.toString() === current.toString()) || (this.parent.allowGrouping &&\n this.parent.infiniteScrollSettings.enableCache && current.toString() === [0, 1].toString())) {\n return false;\n }\n else {\n current = this.editNextRow(current[0], current[1], e.action);\n }\n }\n this.matrix.select(current[0], current[1]);\n };\n ContentFocus.prototype.editNextRow = function (rowIndex, cellIndex, action) {\n var gObj = this.parent;\n var editNextRow = gObj.editSettings.allowNextRowEdit && (gObj.isEdit || gObj.isLastCellPrimaryKey);\n var visibleIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[0].field);\n var row = this.getTable().rows[parseInt(rowIndex.toString(), 10)];\n var cell = gObj.editSettings.showAddNewRow && row.classList.contains('e-addedrow') ?\n (row.querySelectorAll('td:not(.e-editcell)'))[parseInt(cellIndex.toString(), 10)]\n : row.cells[parseInt(cellIndex.toString(), 10)];\n if (action === 'tab' && editNextRow) {\n rowIndex++;\n var index = (this.getTable().rows[parseInt(rowIndex.toString(), 10)].getElementsByClassName('e-indentcell').length +\n this.getTable().rows[parseInt(rowIndex.toString(), 10)].getElementsByClassName('e-detailrowcollapse').length);\n cellIndex = visibleIndex + index;\n }\n if (action === 'shiftTab' && editNextRow) {\n rowIndex--;\n cellIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[gObj.getVisibleColumns().length - 1].field);\n }\n return !cell.classList.contains(literals.rowCell) && !cell.classList.contains('e-headercell') &&\n !cell.classList.contains('e-groupcaption') && !cell.classList.contains('e-filterbarcell') ?\n this.editNextRow(rowIndex, cellIndex, action) : [rowIndex, cellIndex];\n };\n ContentFocus.prototype.getCurrentFromAction = function (action, navigator, isPresent, e) {\n if (navigator === void 0) { navigator = [0, 0]; }\n if (!isPresent && !this.indexesByKey(action) || (this.matrix.current.length === 0)) {\n return null;\n }\n if (!this.shouldFocusChange(e)) {\n return this.matrix.current;\n }\n // eslint-disable-next-line\n var _a = this.indexesByKey(action) || this.matrix.current.concat(navigator), rowIndex = _a[0], cellIndex = _a[1], rN = _a[2], cN = _a[3];\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length && this.parent.aggregates.length && action === 'enter') {\n for (var i = rowIndex; i < this.matrix.matrix.length; i++) {\n var row = this.getTable().rows[i + 1];\n if (row && row.cells[parseInt(cellIndex.toString(), 10)] && row.cells[parseInt(cellIndex.toString(), 10)].classList.contains('e-rowcell')) {\n return [i + 1, cellIndex];\n }\n if (i === this.matrix.matrix.length - 1) {\n return [rowIndex, cellIndex];\n }\n }\n }\n if (action === 'ctrlEnd' || action === 'end') {\n var lastContentCellIndex = [this.matrix.matrix.length - 1,\n this.matrix.matrix[this.matrix.matrix.length - 1].length - 1];\n if (action === 'end') {\n lastContentCellIndex = [rowIndex, this.matrix.matrix[parseInt(rowIndex.toString(), 10)].length - 1];\n }\n if (this.matrix.matrix[lastContentCellIndex[0]][lastContentCellIndex[1]] === 0) {\n lastContentCellIndex = findCellIndex(this.matrix.matrix, lastContentCellIndex, false);\n }\n rowIndex = lastContentCellIndex[0];\n cellIndex = lastContentCellIndex[1] + 1;\n }\n var current = this.matrix.get(rowIndex, cellIndex, [rN, cN], action, this.validator());\n return current;\n };\n ContentFocus.prototype.onClick = function (e, force) {\n var target = e.target;\n this.target = target;\n target = (target.classList.contains(literals.rowCell) ? target : closest(target, 'td'));\n target = target ? target : closest(e.target, 'td.e-detailrowcollapse')\n || closest(e.target, 'td.e-detailrowexpand');\n target = closest(e.target, 'td.e-detailcell') ?\n isNullOrUndefined(closest(closest(e.target, '.e-grid'), 'td.e-detailcell')) ? null : target : target;\n target = target && closest(target, 'table').classList.contains(literals.table) ? target : null;\n if (!target) {\n return false;\n }\n var rowIdx = target.parentElement.rowIndex;\n if (this.parent.editSettings.showAddNewRow && parentsUntil(target, 'e-addedrow')) {\n rowIdx = parentsUntil(target, 'e-addedrow').rowIndex;\n }\n var _a = [rowIdx, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var _b = this.matrix.current, oRowIndex = _b[0], oCellIndex = _b[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val) || (!force && oRowIndex === rowIndex && oCellIndex === cellIndex) ||\n (!parentsUntil(e.target, literals.rowCell) && !parentsUntil(e.target, 'e-groupcaption')\n && !parentsUntil(e.target, 'e-recordpluscollapse') && !parentsUntil(e.target, 'e-recordplusexpand')\n && !parentsUntil(e.target, 'e-detailrowcollapse') && !parentsUntil(e.target, 'e-detailrowexpand')\n && !parentsUntil(e.target, 'e-templatecell'))) {\n return false;\n }\n this.matrix.select(rowIndex, cellIndex);\n };\n ContentFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n this.matrix.current = [rowIndex, cellIndex];\n var row = this.getTable().rows[parseInt(rowIndex.toString(), 10)];\n info.element = !isNullOrUndefined(row) ? this.parent.editSettings.showAddNewRow && row.classList.contains('e-addedrow') ?\n (row.querySelectorAll('td:not(.e-editcell)'))[parseInt(cellIndex.toString(), 10)]\n : row.cells[parseInt(cellIndex.toString(), 10)] : null;\n if (!info.element) {\n return info;\n }\n info.elementToFocus = (!info.element.classList.contains('e-unboundcell') || (this.parent.editSettings.showAddNewRow &&\n info.element.classList.contains('e-unboundcell') && parentsUntil(info.element, 'e-addedrow'))) &&\n !info.element.classList.contains('e-detailcell') ? this.getFocusable(info.element) : info.element;\n info.elementToFocus = info.element.classList.contains('e-detailcell') && info.element.querySelector('.e-childgrid')\n ? info.element.querySelector('.e-childgrid') : info.elementToFocus;\n if (this.parent.editSettings.mode === 'Batch' && this.parent.isEdit && info.elementToFocus.tagName.toLowerCase() === 'input'\n && info.elementToFocus.parentElement.classList.contains('e-ddl')) {\n info.elementToFocus = info.elementToFocus.parentElement;\n }\n info.outline = true;\n info.uid = info.element.parentElement.getAttribute('data-uid');\n return info;\n };\n ContentFocus.prototype.getFocusable = function (element) {\n var query = 'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n var isTemplate = !isNullOrUndefined(closest(element, '.e-templatecell'));\n if (this.parent.isEdit) {\n var commandCellQuery = this.parent.editSettings.showAddNewRow && parentsUntil(element, 'e-addedrow') ?\n \", button:not(.e-hide)\" : '';\n query = 'input:not([type=\"hidden\"]), select:not([aria-hidden=\"true\"]), textarea' + commandCellQuery;\n }\n var child = [].slice.call(element.querySelectorAll(query));\n /* Select the first focusable child element\n * if no child found then select the cell itself.\n * if Grid is in editable state, check for editable control inside child.\n */\n return child.length ? isTemplate && child.length > 1 ? this.target ? this.target : element : child[0] : element;\n };\n ContentFocus.prototype.selector = function (row, cell, isRowTemplate) {\n var types = [CellType.Expand, CellType.GroupCaption, CellType.CaptionSummary, CellType.GroupSummary];\n return ((row.isDataRow && cell.visible && (cell.isDataCell || cell.isTemplate))\n || (row.isDataRow && cell.cellType === CellType.DetailExpand && isNullOrUndefined(cell.visible))\n || (!row.isDataRow && types.indexOf(cell.cellType) > -1\n && !((cell.cellType === CellType.GroupSummary || cell.cellType === CellType.CaptionSummary)\n && !(cell.isDataCell && cell.visible)))\n || (cell.column && cell.visible && cell.column.type === 'checkbox')\n || (cell.cellType === CellType.CommandColumn)\n || (row.isDataRow && isRowTemplate))\n && !(row.edit === 'delete' && row.isDirty);\n };\n ContentFocus.prototype.nextRowFocusValidate = function (index) {\n var lastIndex = index;\n for (var i = index, len = this.matrix.rows; i <= len; i++) {\n if (this.matrix.matrix[parseInt(index.toString(), 10)].indexOf(1) === -1) {\n index = index + 1;\n }\n else {\n return index;\n }\n }\n this.lastIdxCell = true;\n return lastIndex;\n };\n ContentFocus.prototype.previousRowFocusValidate = function (index) {\n var firstIndex = index;\n for (var i = index, len = 0; i >= len; i--) {\n if (this.matrix.matrix[parseInt(index.toString(), 10)].indexOf(1) === -1) {\n index = index - 1;\n if (index < 0) {\n this.lastIdxCell = true;\n return firstIndex;\n }\n }\n else {\n return index;\n }\n }\n return firstIndex;\n };\n ContentFocus.prototype.jump = function (action, current) {\n this.lastIdxCell = false;\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var headerSwap = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n if (action === 'tab' && this.matrix.matrix.length &&\n current[1] === this.matrix.matrix[current[0]].lastIndexOf(1) && this.matrix.matrix.length - 1 !== current[0]) {\n this.matrix.current[0] = this.nextRowFocusValidate(this.matrix.current[0] + 1);\n this.matrix.current[1] = -1;\n }\n if (action === 'shiftTab' &&\n current[0] !== 0 && this.matrix.matrix[current[0]].indexOf(1) === current[1]) {\n this.matrix.current[0] = this.previousRowFocusValidate(this.matrix.current[0] - 1);\n this.matrix.current[1] = this.matrix.matrix[current[0]].length;\n }\n var isHeaderFocus = false;\n var row = parentsUntil(document.activeElement, 'e-addedrow') && this.parent.editSettings.showAddNewRow ?\n parentsUntil(document.activeElement, 'e-addedrow') : document.activeElement.parentElement;\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && !isNullOrUndefined(row) && row.classList.contains(literals.row)) {\n var rowIndex = parseInt(row.getAttribute(literals.dataRowIndex), 10);\n isHeaderFocus = rowIndex > 0;\n }\n var info = {\n swap: !isHeaderFocus ? ((action === 'upArrow' || enterFrozen) && current[0] === 0) : false,\n toHeader: headerSwap\n };\n return info;\n };\n ContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current = [];\n if (action === 'rightArrow' || action === 'tab') {\n current[0] = previous[0];\n current[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current[0] = -1;\n current[1] = previous[1];\n }\n return current;\n };\n ContentFocus.prototype.generateRows = function (rows, optionals) {\n var _a;\n var matrix = optionals.matrix, handlerInstance = optionals.handlerInstance;\n var len = handlerInstance.matrix.matrix.length;\n var defaultLen = this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' ? len + 1 : len;\n handlerInstance.matrix.matrix = handlerInstance.matrix.matrix.slice(0, defaultLen); //Header matrix update.\n handlerInstance.matrix.rows = defaultLen;\n (_a = handlerInstance.matrix.matrix).push.apply(_a, matrix);\n handlerInstance.matrix.rows += matrix.length;\n };\n ContentFocus.prototype.getInfo = function (e) {\n var info = this.getFocusInfo();\n var _a = this.matrix.current, rIndex = _a[0], cIndex = _a[1];\n var isData = info.element.classList.contains(literals.rowCell);\n var isSelectable = isData || (e && e.action !== 'enter' && (info.element.classList.contains('e-detailrowcollapse')\n || info.element.classList.contains('e-detailrowexpand')));\n // eslint-disable-next-line\n var _b = [Math.min(parseInt(info.element.parentElement.getAttribute(literals.dataRowIndex), 10), rIndex),\n Math.min(parseInt(info.element.getAttribute(literals.dataColIndex), 10), cIndex)], rowIndex = _b[0], cellIndex = _b[1];\n if (this.parent.allowGrouping && this.parent.groupSettings.enableLazyLoading && isData) {\n rowIndex = this.parent.getDataRows().indexOf(info.element.parentElement);\n }\n if (this.parent.editSettings.showAddNewRow && this.parent.editSettings.newRowPosition === 'Top' &&\n !this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling && e && e.action === 'downArrow') {\n rowIndex++;\n }\n return { isContent: true, isDataCell: isData, indexes: [rowIndex, cellIndex], isSelectable: isSelectable };\n };\n ContentFocus.prototype.validator = function () {\n var table = this.getTable();\n return function (rowIndex, cellIndex, action) {\n if (!isNullOrUndefined(table.rows[parseInt(rowIndex.toString(), 10)])) {\n var cell = void 0;\n cellIndex = table.querySelector('.e-emptyrow') ? 0 : cellIndex;\n if (table.rows[parseInt(rowIndex.toString(), 10)].cells[0].classList.contains('e-editcell')) {\n cell = table.rows[parseInt(rowIndex.toString(), 10)].cells[0].querySelectorAll('td')[parseInt(cellIndex.toString(), 10)];\n }\n else {\n cell = table.rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n }\n var isCellWidth = cell.getBoundingClientRect().width !== 0;\n if (action === 'enter' || action === 'shiftEnter') {\n return isCellWidth && cell.classList.contains(literals.rowCell);\n }\n if ((action === 'shiftUp' || action === 'shiftDown') && cell.classList.contains(literals.rowCell)) {\n return isCellWidth;\n }\n else if (action !== 'shiftUp' && action !== 'shiftDown') {\n return isCellWidth;\n }\n }\n return false;\n };\n };\n ContentFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, _b = _a[0], rIndex = _b === void 0 ? -1 : _b, _c = _a[1], cIndex = _c === void 0 ? -1 : _c;\n if (rIndex < 0 || cIndex < 0) {\n return true;\n }\n var cell = getValue(rIndex + \".cells.\" + cIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'shiftEnter' ?\n cell.classList.contains(literals.rowCell) && !cell.classList.contains('e-unboundcell')\n || cell.classList.contains('e-editedbatchcell') && !cell.classList.contains('e-detailcell') : true;\n };\n ContentFocus.prototype.getGridSeletion = function () {\n return this.parent.allowSelection && this.parent.selectionSettings.allowColumnSelection;\n };\n return ContentFocus;\n}());\nexport { ContentFocus };\n/**\n * @hidden\n */\nvar HeaderFocus = /** @class */ (function (_super) {\n __extends(HeaderFocus, _super);\n function HeaderFocus(parent) {\n return _super.call(this, parent) || this;\n }\n HeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderTable());\n };\n HeaderFocus.prototype.onClick = function (e) {\n var target = e.target;\n this.target = target;\n target = (target.classList.contains('e-headercell') ? target : closest(target, 'th'));\n if (!target && (this.parent.frozenRows !== 0 || ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) &&\n this.parent.editSettings.showAddNewRow))) {\n target = (e.target.classList.contains(literals.rowCell) ? e.target :\n closest(e.target, 'td'));\n }\n if (e.target.classList.contains('e-columnheader') ||\n e.target.querySelector('.e-stackedheadercell')) {\n return false;\n }\n if (!target) {\n return;\n }\n var rowIdx = target.parentElement.rowIndex;\n if (this.parent.editSettings.showAddNewRow && parentsUntil(target, 'e-addedrow')) {\n rowIdx = parentsUntil(target, 'e-addedrow').rowIndex;\n }\n var _a = [rowIdx, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val)) {\n return false;\n }\n this.matrix.select(rowIdx, target.cellIndex);\n };\n HeaderFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n var row = this.getTable().rows[parseInt(rowIndex.toString(), 10)];\n info.element = !isNullOrUndefined(row) ? this.parent.editSettings.showAddNewRow && row.classList.contains('e-addedrow') ?\n (row.querySelectorAll('td:not(.e-editcell)'))[parseInt(cellIndex.toString(), 10)]\n : row.cells[parseInt(cellIndex.toString(), 10)] : null;\n if (!isNullOrUndefined(info.element)) {\n info.elementToFocus = this.getFocusable(info.element);\n info.outline = !info.element.classList.contains('e-filterbarcell');\n }\n return info;\n };\n HeaderFocus.prototype.selector = function (row, cell) {\n return (cell.visible && (cell.column.field !== undefined || cell.isTemplate || !isNullOrUndefined(cell.column.template)\n || !isNullOrUndefined(cell.column.commands))) || cell.column.type === 'checkbox' || cell.cellType === CellType.StackedHeader;\n };\n HeaderFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var isLastCell;\n var lastRow;\n if (this.parent.enableHeaderFocus && action === 'tab') {\n lastRow = this.matrix.matrix.length - 1 === current[0];\n isLastCell = current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n if (isLastCell) {\n if (!lastRow) {\n this.matrix.current[0] = this.matrix.current[0] + 1;\n }\n else {\n this.matrix.current[0] = 0;\n }\n this.matrix.current[1] = -1;\n }\n }\n return {\n swap: ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (action === 'tab' && lastRow && isLastCell)\n };\n };\n HeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current1 = [];\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current1[0] = this.matrix.matrix.length;\n current1[1] = previous[1];\n }\n return current1;\n };\n HeaderFocus.prototype.generateRows = function (rows) {\n var length = this.matrix.matrix.length;\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar') {\n this.matrix.rows = ++this.matrix.rows;\n var cells = rows[0].cells;\n var incrementNumber = 0;\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].column && cells[parseInt(i.toString(), 10)].column.columns) {\n incrementNumber = this.checkFilterColumn(cells[parseInt(i.toString(), 10)].column.columns, length, incrementNumber);\n }\n else {\n this.matrix.set(length, incrementNumber, cells[parseInt(i.toString(), 10)].visible && cells[parseInt(i.toString(), 10)].column.allowFiltering !== false);\n incrementNumber++;\n }\n }\n }\n };\n HeaderFocus.prototype.checkFilterColumn = function (rowColumns, rowIndex, columnIndex) {\n var columns = rowColumns;\n var incrementNumber = columnIndex;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n incrementNumber = this.checkFilterColumn(columns[parseInt(i.toString(), 10)].columns, rowIndex, incrementNumber);\n }\n else {\n this.matrix.set(rowIndex, incrementNumber, columns[parseInt(i.toString(), 10)].visible && columns[parseInt(i.toString(), 10)].allowFiltering !== false);\n incrementNumber++;\n }\n }\n return incrementNumber;\n };\n HeaderFocus.prototype.getInfo = function (e) {\n return extend(_super.prototype.getInfo.call(this, e), { isContent: false, isHeader: true });\n };\n HeaderFocus.prototype.validator = function () {\n return function () { return true; };\n };\n HeaderFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, rowIndex = _a[0], columnIndex = _a[1];\n if (rowIndex < 0 || columnIndex < 0) {\n return true;\n }\n var cell = getValue(rowIndex + \".cells.\" + columnIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'altDownArrow' ? !cell.classList.contains('e-headercell') : true;\n };\n HeaderFocus.prototype.getHeaderType = function () {\n return 'HeaderFocus';\n };\n return HeaderFocus;\n}(ContentFocus));\nexport { HeaderFocus };\n/** @hidden */\nvar SearchBox = /** @class */ (function () {\n function SearchBox(searchBox, serviceLocator) {\n this.searchBox = searchBox;\n this.serviceLocator = serviceLocator;\n this.l10n = this.serviceLocator.getService('localization');\n }\n SearchBox.prototype.searchFocus = function (args) {\n args.target.parentElement.classList.add('e-input-focus');\n if (args.target.classList.contains('e-input') && args.target.classList.contains('e-search') && args.target.value) {\n var sIcon = args.target.parentElement.querySelector('.e-sicon');\n sIcon.classList.add('e-clear-icon');\n sIcon.setAttribute('title', this.l10n.getConstant('Clear'));\n (sIcon).style.cursor = 'pointer';\n }\n };\n SearchBox.prototype.searchBlur = function (args) {\n var relatedTarget = args.relatedTarget ? args.relatedTarget : null;\n if (relatedTarget && relatedTarget.classList.contains('e-sicon')) {\n if (relatedTarget.classList.contains('e-clear-icon')) {\n args.target.parentElement.classList.remove('e-input-focus');\n }\n }\n else {\n args.target.parentElement.classList.remove('e-input-focus');\n }\n if (args.target.classList.contains('e-search') && ((relatedTarget && !(relatedTarget.classList.contains('e-sicon e-clear-icon'))\n && !(relatedTarget.classList.contains('e-sicon'))) || isNullOrUndefined(relatedTarget))) {\n var sIcon = args.target.parentElement.querySelector('.e-sicon');\n sIcon.classList.remove('e-clear-icon');\n sIcon.removeAttribute('title');\n sIcon.style.cursor = 'default';\n }\n };\n SearchBox.prototype.wireEvent = function () {\n if (this.searchBox) {\n EventHandler.add(this.searchBox, 'focus', this.searchFocus, this);\n EventHandler.add(this.searchBox, 'blur', this.searchBlur, this);\n }\n };\n SearchBox.prototype.unWireEvent = function () {\n if (this.searchBox) {\n EventHandler.remove(this.searchBox, 'focus', this.searchFocus);\n EventHandler.remove(this.searchBox, 'blur', this.searchBlur);\n }\n };\n return SearchBox;\n}());\nexport { SearchBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the paging behavior of the Grid.\n */\nvar PageSettings = /** @class */ (function (_super) {\n __extends(PageSettings, _super);\n function PageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(12)\n ], PageSettings.prototype, \"pageSize\", void 0);\n __decorate([\n Property(8)\n ], PageSettings.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], PageSettings.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], PageSettings.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"pageSizes\", void 0);\n __decorate([\n Property(null)\n ], PageSettings.prototype, \"template\", void 0);\n return PageSettings;\n}(ChildProperty));\nexport { PageSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the column chooser behavior of the Grid.\n */\nvar ColumnChooserSettings = /** @class */ (function (_super) {\n __extends(ColumnChooserSettings, _super);\n function ColumnChooserSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('startsWith')\n ], ColumnChooserSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(false)\n ], ColumnChooserSettings.prototype, \"ignoreAccent\", void 0);\n return ColumnChooserSettings;\n}(ChildProperty));\nexport { ColumnChooserSettings };\n","import { Browser, EventHandler, createElement } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { remove, closest, select } from '@syncfusion/ej2-base';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { setCssInGridPopUp, getPosition, isGroupAdaptive, addRemoveActiveClasses, removeAddCboxClasses, getCellFromRow } from '../base/util';\nimport { getCellsByTableName, parentsUntil, getScrollBarWidth } from '../base/util';\nimport * as events from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { iterateExtend, setChecked, isComplexField, getObject } from '../base/util';\nimport { addRemoveEventListener } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * The `Selection` module is used to handle cell and row selection.\n */\nvar Selection = /** @class */ (function () {\n /**\n * Constructor for the Grid selection module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {SelectionSettings} selectionSettings - specifies the selectionsettings\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function Selection(parent, selectionSettings, locator) {\n //Internal letiables\n /**\n * @hidden\n */\n this.selectedRowIndexes = [];\n /**\n * @hidden\n */\n this.selectedRowCellIndexes = [];\n /**\n * @hidden\n */\n this.selectedRecords = [];\n /**\n * @hidden\n */\n this.preventFocus = false;\n /**\n * @hidden\n */\n this.selectedColumnsIndexes = [];\n this.checkBoxState = false;\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n this.isMultiCtrlRequestCell = false;\n this.enableSelectMultiTouch = false;\n this.clearRowCheck = false;\n this.selectRowCheck = false;\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.totalRecordsCount = 0;\n this.chkAllCollec = [];\n this.isCheckedOnAdd = false;\n this.persistSelectedData = [];\n this.deSelectedData = [];\n this.isHdrSelectAllClicked = false;\n this.needColumnSelection = false;\n this.isCancelDeSelect = false;\n this.isPreventCellSelect = false;\n this.disableUI = false;\n this.isPersisted = false;\n this.cmdKeyPressed = false;\n this.cellselected = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.initialRowSelection = false;\n this.isPrevRowSelection = false;\n this.isKeyAction = false;\n this.isRowDragSelected = false;\n this.isPartialSelection = false;\n this.rmtHdrChkbxClicked = false;\n this.isCheckboxReset = false;\n /**\n * @hidden\n */\n this.autoFillRLselection = true;\n this.bottom = '0 0 2px 0';\n this.top = '2px 0 0 0';\n /* eslint-disable */\n this.right_bottom = '0 2px 2px 0';\n this.bottom_left = '0 0 2px 2px';\n this.top_right = '2px 2px 0 0';\n this.top_left = '2px 0 0 2px';\n this.top_bottom = '2px 0 2px 0';\n this.top_right_bottom = '2px 2px 2px 0';\n this.top_bottom_left = '2px 0 2px 2px';\n this.top_right_left = '2px 2px 0 2px';\n this.right_bottom_left = '0 2px 2px 2px';\n this.all_border = '2px';\n this.parent = parent;\n this.selectionSettings = selectionSettings;\n this.factory = locator.getService('rendererFactory');\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.wireEvents();\n }\n Selection.prototype.initializeSelection = function () {\n this.parent.log('selection_key_missing');\n this.render();\n };\n /**\n * The function used to trigger onActionBegin\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionBegin = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n };\n Selection.prototype.fDataUpdate = function (args) {\n if (!this.isMultiSelection && (!isNullOrUndefined(args.cellIndex) || !isNullOrUndefined(args.rowIndex))) {\n var rowObj = this.getRowObj(isNullOrUndefined(args.rowIndex) ? isNullOrUndefined(args.cellIndex) ?\n this.currentIndex : args.cellIndex.rowIndex : args.rowIndex);\n args.foreignKeyData = rowObj.foreignKeyData;\n }\n return args;\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionComplete = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n this.isMultiSelection = false;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n /**\n * To destroy the selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.hidePopUp();\n this.clearSelection();\n this.destroyAutoFillElements();\n this.removeEventListener();\n this.unWireEvents();\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n };\n Selection.prototype.isEditing = function () {\n return (this.parent.editSettings.mode === 'Normal' || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule &&\n this.parent.editModule.formObj && !this.parent.editModule.formObj.validate())) &&\n (this.parent.isEdit && !this.parent.editSettings.showAddNewRow) && !this.parent.isPersistSelection;\n };\n Selection.prototype.getCurrentBatchRecordChanges = function () {\n var gObj = this.parent;\n if (gObj.editSettings.mode === 'Batch' && gObj.editModule) {\n var currentRecords = iterateExtend(this.parent.getCurrentViewRecords());\n currentRecords = gObj.editSettings.newRowPosition === 'Bottom' ?\n currentRecords.concat(this.parent.editModule.getBatchChanges()[literals.addedRecords]) :\n this.parent.editModule.getBatchChanges()[literals.addedRecords].concat(currentRecords);\n var deletedRecords = this.parent.editModule.getBatchChanges()[literals.deletedRecords];\n var primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < (deletedRecords.length); i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (deletedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey] === currentRecords[parseInt(j.toString(), 10)][\"\" + primaryKey]) {\n currentRecords.splice(j, 1);\n break;\n }\n }\n }\n return currentRecords;\n }\n else if (this.parent.enableVirtualization && this.parent.groupSettings.columns.length && !this.parent.isPersistSelection) {\n var selectedGroupedData = gObj.getCurrentViewRecords().filter(function (col) { return col['key'] === undefined; });\n return selectedGroupedData;\n }\n else {\n return gObj.getCurrentViewRecords();\n }\n };\n /**\n * Selects a row by the given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectRow = function (index, isToggle) {\n if (this.selectedRowIndexes.length && this.selectionSettings.enableSimpleMultiRowSelection) {\n this.addRowsToSelection([index]);\n return;\n }\n var gObj = this.parent;\n var selectedRow = gObj.getRowByIndex(index);\n var rowObj = selectedRow && gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid'));\n if (this.isPartialSelection && rowObj && rowObj.isDataRow && !rowObj.isSelectable) {\n return;\n }\n var selectData;\n var isRemoved = false;\n if (gObj.enableVirtualization && index > -1) {\n var e = { selectedIndex: index, isAvailable: true };\n this.parent.notify(events.selectVirtualRow, e);\n if (selectedRow && (gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')))) {\n selectData = gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')).data;\n }\n else {\n if (e.isAvailable && !gObj.selectionSettings.persistSelection) {\n var prevSelectedData = this.parent.getSelectedRecords();\n if (prevSelectedData.length > 0) {\n this.clearRowSelection();\n }\n }\n return;\n }\n }\n else {\n selectData = this.getRowObj(index).data;\n }\n if (!this.isRowType() || !selectedRow || this.isEditing()) {\n // if (this.isEditing()) {\n // gObj.selectedRowIndex = index;\n // }\n return;\n }\n var isRowSelected = selectedRow.hasAttribute('aria-selected');\n this.activeTarget();\n isToggle = !isToggle ? isToggle :\n !this.selectedRowIndexes.length ? false :\n (this.selectedRowIndexes.length === 1 ? (this.isKeyAction && this.parent.isCheckBoxSelection ?\n false : index === this.selectedRowIndexes[0]) : false);\n this.isKeyAction = false;\n var args;\n var can = 'cancel';\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest, row: selectedRow,\n previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can));\n }\n else {\n this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can)(args);\n }\n };\n Selection.prototype.rowSelectingCallBack = function (args, isToggle, index, selectData, isRemoved, isRowSelected, can) {\n var _this = this;\n return function (args) {\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n _this.disableInteracted();\n return;\n }\n _this.index = index;\n _this.toggle = isToggle;\n _this.data = selectData;\n _this.removed = isRemoved;\n if (isRowSelected && _this.selectionSettings.persistSelection && !(_this.selectionSettings.checkboxMode === 'ResetOnRowClick')) {\n _this.clearSelectedRow(index);\n _this.selectRowCallBack();\n }\n else if (!isRowSelected && _this.selectionSettings.persistSelection &&\n _this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n _this.selectRowCallBack();\n }\n if (_this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n _this.isCheckboxReset = true;\n _this.clearSelection();\n }\n if (!_this.selectionSettings.persistSelection || _this.selectionSettings.checkboxMode === 'ResetOnRowClick' ||\n (!_this.parent.isCheckBoxSelection && _this.selectionSettings.persistSelection)) {\n _this.selectRowCheck = true;\n _this.clearRow();\n }\n };\n };\n Selection.prototype.selectRowCallBack = function () {\n var gObj = this.parent;\n var args;\n var index = this.index;\n var isToggle = this.toggle;\n var selectData = this.data;\n var isRemoved = this.removed;\n var selectedRow = gObj.getRowByIndex(index);\n if (!isToggle && !isRemoved) {\n if (this.selectedRowIndexes.indexOf(index) <= -1) {\n this.updateRowSelection(selectedRow, index);\n }\n this.selectRowIndex(index);\n }\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index,\n row: selectedRow, previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, isInteracted: this.isInteracted,\n isHeaderCheckBoxClicked: this.isHeaderCheckboxClicked, rowIndexes: index\n };\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(index);\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n * @returns {void}\n */\n Selection.prototype.selectRowsByRange = function (startIndex, endIndex) {\n this.selectRows(this.getCollectionFromIndexes(startIndex, endIndex));\n this.selectRowIndex(endIndex);\n };\n Selection.prototype.selectedDataUpdate = function (selectedData, foreignKeyData, selectedRows, rowIndexes, selectableRowIndex) {\n for (var i = 0, len = rowIndexes.length; i < len; i++) {\n var currentRow = this.parent.getDataRows()[rowIndexes[parseInt(i.toString(), 10)]];\n if (this.parent.enableVirtualization) {\n currentRow = this.parent.getRowByIndex(rowIndexes[parseInt(i.toString(), 10)]);\n }\n var rowObj = this.getRowObj(currentRow);\n if (rowObj && rowObj.isDataRow && rowObj.isSelectable) {\n selectedData.push(rowObj.data);\n selectedRows.push(currentRow);\n foreignKeyData.push(rowObj.foreignKeyData);\n }\n else {\n if (this.isPartialSelection && selectableRowIndex) {\n selectableRowIndex.splice(selectableRowIndex.indexOf(rowIndexes[parseInt(i.toString(), 10)]), 1);\n }\n }\n }\n };\n /**\n * Selects a collection of rows by index.\n *\n * @param {number[]} rowIndexes - Specifies an array of row indexes.\n * @returns {void}\n */\n Selection.prototype.selectRows = function (rowIndexes) {\n var _this = this;\n var gObj = this.parent;\n var selectableRowIndex = rowIndexes.slice();\n var rowIndex = !this.isSingleSel() ? rowIndexes[0] : rowIndexes[rowIndexes.length - 1];\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var can = 'cancel';\n var selectedData = [];\n if (!this.isRowType() || this.isEditing()) {\n return;\n }\n this.selectedDataUpdate(selectedData, foreignKeyData, selectedRows, rowIndexes, selectableRowIndex);\n this.activeTarget();\n var args = {\n cancel: false,\n rowIndexes: selectableRowIndex, row: selectedRows, rowIndex: rowIndex, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n isInteracted: this.isInteracted, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n data: selectedData, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), function (args) {\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n _this.disableInteracted();\n return;\n }\n if (!(gObj.allowRowDragAndDrop && _this.isDragged && _this.selectionSettings.persistSelection)) {\n _this.clearRow();\n }\n _this.selectRowIndex(selectableRowIndex.slice(-1)[0]);\n var selectRowFn = function (index, preventFocus) {\n _this.updateRowSelection(gObj.getRowByIndex(index), index, preventFocus);\n _this.updateRowProps(rowIndex);\n };\n if (!_this.isSingleSel()) {\n for (var _i = 0, selectableRowIndex_1 = selectableRowIndex; _i < selectableRowIndex_1.length; _i++) {\n var rowIdx = selectableRowIndex_1[_i];\n selectRowFn(rowIdx, gObj.enableVirtualization ? true : false);\n }\n }\n else {\n selectRowFn(rowIndex);\n }\n args = {\n rowIndexes: selectableRowIndex, row: selectedRows, rowIndex: rowIndex, target: _this.actualTarget,\n prevRow: gObj.getRows()[_this.prevRowIndex], previousRowIndex: _this.prevRowIndex,\n data: _this.getSelectedRecords(), isInteracted: _this.isInteracted,\n isHeaderCheckboxClicked: _this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n if (_this.isRowSelected) {\n _this.onActionComplete(args, events.rowSelected);\n }\n _this.isInteracted = false;\n });\n };\n /**\n * Select rows with existing row selection by passing row indexes.\n *\n * @param {number} rowIndexes - Specifies the row indexes.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addRowsToSelection = function (rowIndexes) {\n var gObj = this.parent;\n var can = 'cancel';\n var target = this.target;\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var selectedData = [];\n var indexes = gObj.getSelectedRowIndexes().concat(rowIndexes);\n var selectedRow = !this.isSingleSel() ? gObj.getRowByIndex(rowIndexes[0]) :\n gObj.getRowByIndex(rowIndexes[rowIndexes.length - 1]);\n if ((!this.isRowType() || this.isEditing()) && !this.selectionSettings.checkboxOnly) {\n return;\n }\n var args;\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (this.isMultiCtrlRequest && !checkboxColumn.length) {\n this.selectedDataUpdate(selectedData, foreignKeyData, selectedRows, indexes);\n }\n for (var _i = 0, rowIndexes_1 = rowIndexes; _i < rowIndexes_1.length; _i++) {\n var rowIndex = rowIndexes_1[_i];\n var rowObj = this.getRowObj(rowIndex);\n var isUnSelected = this.selectedRowIndexes.indexOf(rowIndex) > -1;\n if (this.isPartialSelection && rowObj && rowObj.isDataRow && !rowObj.isSelectable) {\n continue;\n }\n this.selectRowIndex(rowIndex);\n if (isUnSelected && ((checkboxColumn.length ? true : this.selectionSettings.enableToggle) || this.isMultiCtrlRequest)) {\n this.isAddRowsToSelection = true;\n this.rowDeselect(events.rowDeselecting, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target);\n if (this.isCancelDeSelect) {\n return;\n }\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(rowIndex), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedRow), 1);\n this.selectRowIndex(this.selectedRowIndexes.length ? this.selectedRowIndexes[this.selectedRowIndexes.length - 1] : -1);\n selectedRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedRow, false, null, 'e-selectionbackground', 'e-active');\n this.rowDeselect(events.rowDeselected, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target, undefined, undefined, undefined);\n this.isInteracted = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.isHdrSelectAllClicked = false;\n }\n else {\n this.activeTarget();\n args = {\n cancel: false,\n data: selectedData.length ? selectedData : rowObj.data, rowIndex: rowIndex, row: selectedRows.length ? selectedRows :\n selectedRow, target: this.actualTarget, prevRow: gObj.getRows()[this.prevRowIndex],\n previousRowIndex: this.prevRowIndex, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n foreignKeyData: foreignKeyData.length ? foreignKeyData : rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args));\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n this.disableInteracted();\n return;\n }\n if (this.isSingleSel()) {\n this.clearRow();\n }\n this.updateRowSelection(selectedRow, rowIndex);\n }\n if (!isUnSelected) {\n args = {\n data: selectedData.length ? selectedData : rowObj.data, rowIndex: rowIndex, row: selectedRows.length ? selectedRows :\n selectedRow, target: this.actualTarget, prevRow: gObj.getRows()[this.prevRowIndex],\n previousRowIndex: this.prevRowIndex, foreignKeyData: foreignKeyData.length ? foreignKeyData : rowObj.foreignKeyData,\n isInteracted: this.isInteracted, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(rowIndex);\n if (this.isSingleSel()) {\n break;\n }\n }\n };\n Selection.prototype.getCollectionFromIndexes = function (startIndex, endIndex) {\n var indexes = [];\n // eslint-disable-next-line prefer-const\n var _a = (startIndex <= endIndex) ?\n { i: startIndex, max: endIndex } : { i: endIndex, max: startIndex }, i = _a.i, max = _a.max;\n for (; i <= max; i++) {\n indexes.push(i);\n }\n if (startIndex > endIndex) {\n indexes.reverse();\n }\n return indexes;\n };\n Selection.prototype.clearRow = function () {\n this.clearRowCheck = true;\n this.clearRowSelection();\n };\n Selection.prototype.clearRowCallBack = function () {\n if (this.isCancelDeSelect && this.parent.checkAllRows !== 'Check') {\n return;\n }\n this.selectedRowIndexes = [];\n this.selectedRecords = [];\n this.selectRowIndex(-1);\n if (this.isSingleSel() && this.parent.isPersistSelection) {\n this.selectedRowState = {};\n }\n };\n Selection.prototype.clearSelectedRow = function (index) {\n if (this.toggle) {\n var selectedEle = this.parent.getRowByIndex(index);\n if (!this.disableUI) {\n selectedEle.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedEle, false, true, 'e-selectionbackground', 'e-active');\n }\n this.removed = true;\n this.updatePersistCollection(selectedEle, false);\n this.updateCheckBoxes(selectedEle);\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(index), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(this.parent.getRowByIndex(index)), 1);\n }\n };\n Selection.prototype.updateRowProps = function (startIndex) {\n this.prevRowIndex = startIndex;\n this.isRowSelected = this.selectedRowIndexes.length && true;\n };\n Selection.prototype.getPkValue = function (pkField, data) {\n return pkField ? isComplexField(pkField) ? getObject(pkField, data) : data[\"\" + pkField] : data[\"\" + pkField];\n };\n Selection.prototype.updatePersistCollection = function (selectedRow, chkState) {\n var _this = this;\n if ((this.parent.isPersistSelection || this.parent.selectionSettings.persistSelection &&\n this.parent.getPrimaryKeyFieldNames().length > 0) && !isNullOrUndefined(selectedRow)) {\n if (!this.parent.isPersistSelection) {\n this.ensureCheckboxFieldSelection();\n }\n var rowObj = this.getRowObj(selectedRow);\n var pKey_1 = rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null;\n if (pKey_1 === null) {\n return;\n }\n rowObj.isSelected = chkState;\n if ((chkState && !this.isPartialSelection) || (this.isPartialSelection && rowObj.isSelectable && rowObj.isSelected)) {\n this.selectedRowState[\"\" + pKey_1] = chkState;\n delete (this.unSelectedRowState[\"\" + pKey_1]);\n if (!this.persistSelectedData.some(function (data) { return _this.getPkValue(_this.primaryKey, data) === pKey_1; })) {\n this.persistSelectedData.push(rowObj.data);\n }\n }\n else {\n this.updatePersistDelete(pKey_1);\n }\n }\n };\n Selection.prototype.updatePersistDelete = function (pKey, isPartialSelection) {\n var _this = this;\n delete (this.selectedRowState[\"\" + pKey]);\n if (this.rmtHdrChkbxClicked) {\n this.unSelectedRowState[\"\" + pKey] = true;\n }\n var index;\n var isPresent = this.persistSelectedData.some(function (data, i) {\n index = i;\n return _this.getPkValue(_this.primaryKey, data) === pKey;\n });\n if (isPresent) {\n this.persistSelectedData.splice(index, 1);\n if (isPartialSelection) {\n this.parent.partialSelectedRecords.splice(index, 1);\n }\n }\n };\n Selection.prototype.updateCheckBoxes = function (row, chkState, rowIndex) {\n if (!isNullOrUndefined(row)) {\n var chkBox = row.querySelector('.e-checkselect');\n if (!isNullOrUndefined(chkBox)) {\n removeAddCboxClasses(chkBox.nextElementSibling, chkState);\n setChecked(chkBox, chkState);\n if (isNullOrUndefined(this.checkedTarget) || (!isNullOrUndefined(this.checkedTarget)\n && !this.checkedTarget.classList.contains('e-checkselectall'))) {\n this.setCheckAllState(rowIndex);\n }\n }\n }\n };\n Selection.prototype.updateRowSelection = function (selectedRow, startIndex, preventFocus) {\n if (!selectedRow) {\n return;\n }\n if (this.selectedRowIndexes.indexOf(startIndex) === -1) {\n this.selectedRowIndexes.push(startIndex);\n this.selectedRecords.push(selectedRow);\n }\n selectedRow.setAttribute('aria-selected', 'true');\n this.updatePersistCollection(selectedRow, true);\n this.updateCheckBoxes(selectedRow, true);\n this.addRemoveClassesForRow(selectedRow, true, null, 'e-selectionbackground', 'e-active');\n if (!this.preventFocus) {\n var target = this.focus.getPrevIndexes().cellIndex ?\n selectedRow.cells[this.focus.getPrevIndexes().cellIndex] :\n selectedRow.querySelector('.e-selectionbackground:not(.e-hide):not(.e-detailrowcollapse):not(.e-detailrowexpand)');\n if (this.parent.contextMenuModule && this.mouseButton === 2) {\n target = this.parent.contextMenuModule.cell;\n }\n if (!target || preventFocus) {\n return;\n }\n this.focus.onClick({ target: target }, true);\n }\n };\n /**\n * Deselects the currently selected rows and cells.\n *\n * @returns {void}\n */\n Selection.prototype.clearSelection = function () {\n this.checkSelectAllClicked = true;\n if (this.selectionSettings.persistSelection && this.persistSelectedData.length) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (!this.parent.isPersistSelection || (this.parent.isPersistSelection && !this.parent.isEdit) ||\n (!isNullOrUndefined(this.checkedTarget) && this.checkedTarget.classList.contains('e-checkselectall'))) {\n var span = this.parent.element.querySelector('.e-gridpopup').querySelector('span');\n if (span.classList.contains('e-rowselect')) {\n span.classList.remove('e-spanclicked');\n }\n if (this.parent.isPersistSelection) {\n this.persistSelectedData = [];\n this.selectedRowState = {};\n }\n this.clearRowSelection();\n this.clearCellSelection();\n this.clearColumnSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n this.enableSelectMultiTouch = false;\n this.isInteracted = false;\n this.checkSelectAllClicked = false;\n this.isHdrSelectAllClicked = false;\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Selection.prototype.clearRowSelection = function () {\n var _this = this;\n if (this.isRowSelected) {\n var rows_1 = this.parent.getDataRows();\n var data_1 = [];\n var row_1 = [];\n var rowIndex_1 = [];\n var foreignKeyData_1 = [];\n var target_1 = this.target;\n for (var i = 0, len = this.selectedRowIndexes.length; i < len; i++) {\n var currentRow = this.parent.editSettings.mode === 'Batch' ?\n this.parent.getRows()[this.selectedRowIndexes[parseInt(i.toString(), 10)]]\n : this.parent.getDataRows()[this.selectedRowIndexes[parseInt(i.toString(), 10)]];\n var rowObj = this.getRowObj(currentRow);\n if (rowObj) {\n data_1.push(rowObj.data);\n row_1.push(currentRow);\n rowIndex_1.push(this.selectedRowIndexes[parseInt(i.toString(), 10)]);\n foreignKeyData_1.push(rowObj.foreignKeyData);\n }\n }\n if (this.selectionSettings.persistSelection && this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n this.isRowClicked = this.checkSelectAllClicked ? true : false;\n }\n this.rowDeselect(events.rowDeselecting, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, null, function () {\n if (_this.isCancelDeSelect && (_this.isRowClicked || _this.checkSelectAllClicked || (_this.isInteracted &&\n !_this.parent.isPersistSelection))) {\n if (_this.parent.isPersistSelection) {\n if (_this.getCheckAllStatus(_this.parent.element.querySelector('.e-checkselectall')) === 'Intermediate') {\n for (var i = 0; i < _this.selectedRecords.length; i++) {\n _this.updatePersistCollection(_this.selectedRecords[parseInt(i.toString(), 10)], true);\n }\n }\n else {\n _this.parent.checkAllRows = 'Check';\n _this.updatePersistSelectedData(true);\n }\n }\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n return;\n }\n var element = [].slice.call(rows_1.filter(function (record) { return record.hasAttribute('aria-selected'); }));\n for (var j = 0; j < element.length; j++) {\n if (!_this.disableUI) {\n element[parseInt(j.toString(), 10)].removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(element[parseInt(j.toString(), 10)], false, true, 'e-selectionbackground', 'e-active');\n }\n // tslint:disable-next-line:align\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(element[parseInt(j.toString(), 10)], false);\n }\n _this.updateCheckBoxes(element[parseInt(j.toString(), 10)]);\n }\n _this.selectedRowIndexes = [];\n _this.selectedRecords = [];\n _this.isRowSelected = false;\n _this.selectRowIndex(-1);\n _this.isPrevRowSelection = false;\n _this.rowDeselect(events.rowDeselected, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, null, undefined, null);\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n }, null);\n }\n else {\n if (this.clearRowCheck) {\n this.clearRowCallBack();\n this.clearRowCheck = false;\n if (this.selectRowCheck) {\n this.selectRowCallBack();\n this.selectRowCheck = false;\n }\n }\n }\n };\n Selection.prototype.rowDeselect = function (type, rowIndex, data, row, foreignKeyData, target, mRow, rowDeselectCallBack, frozenRightRow) {\n var _this = this;\n if ((this.selectionSettings.persistSelection && (this.isRowClicked || this.checkSelectAllClicked || (this.focus['activeKey'] &&\n this.focus.currentInfo.element.classList.contains('e-gridchkbox') && this.focus['activeKey'] === 'space'))) ||\n !this.selectionSettings.persistSelection) {\n var cancl_1 = 'cancel';\n var isSingleDeSel = rowIndex.length === 1 && this.deSelectedData.length === 1;\n var rowDeselectObj = {\n rowIndex: rowIndex[0], data: this.selectionSettings.persistSelection && (this.parent.checkAllRows === 'Uncheck' &&\n !isSingleDeSel) && this.selectionSettings.checkboxMode !== 'ResetOnRowClick' ? this.deSelectedData : data,\n foreignKeyData: foreignKeyData, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n if (type === 'rowDeselected') {\n delete rowDeselectObj.cancel;\n }\n var rowInString = 'row';\n var target_2 = 'target';\n var rowidx = 'rowIndex';\n var rowidxex = 'rowIndexes';\n var dataTxt = 'data';\n var foreignKey = 'foreignKeyData';\n rowDeselectObj[\"\" + rowInString] = row;\n rowDeselectObj[\"\" + target_2] = this.actualTarget;\n var isHeaderCheckBxClick = this.actualTarget && !isNullOrUndefined(closest(this.actualTarget, 'thead'));\n if (isHeaderCheckBxClick || rowIndex.length > 1) {\n rowDeselectObj[\"\" + rowidx] = rowIndex[0];\n rowDeselectObj[\"\" + rowidxex] = rowIndex;\n }\n else if (rowIndex.length === 1) {\n rowDeselectObj[\"\" + dataTxt] = rowDeselectObj[\"\" + dataTxt][0];\n rowDeselectObj[\"\" + rowInString] = rowDeselectObj[\"\" + rowInString][0];\n rowDeselectObj[\"\" + foreignKey] = rowDeselectObj[\"\" + foreignKey][0];\n if (this.isAddRowsToSelection) {\n rowDeselectObj[\"\" + rowidxex] = rowIndex;\n }\n }\n this.parent.trigger(type, rowDeselectObj, function (args) {\n _this.isCancelDeSelect = args[\"\" + cancl_1];\n if (!_this.isCancelDeSelect || (!_this.isRowClicked && !_this.isInteracted && !_this.checkSelectAllClicked)) {\n _this.updatePersistCollection(row[0], false);\n _this.updateCheckBoxes(row[0], undefined, rowIndex[0]);\n }\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n });\n }\n else if (this.selectionSettings.persistSelection && !this.isInteracted) {\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n }\n };\n Selection.prototype.getRowObj = function (row) {\n if (row === void 0) { row = this.currentIndex; }\n if (isNullOrUndefined(row)) {\n return {};\n }\n if (typeof row === 'number') {\n row = this.parent.getRowByIndex(row);\n }\n if (row) {\n return this.parent.getRowObjectFromUID(row.getAttribute('data-uid')) || {};\n }\n return {};\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectCell = function (cellIndex, isToggle) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var args;\n var selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n this.currentIndex = cellIndex.rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (!this.isCellType() || !selectedCell || this.isEditing()) {\n return;\n }\n var isCellSelected = selectedCell.classList.contains('e-cellselectionbackground');\n isToggle = !isToggle ? isToggle : (!isUndefined(this.prevCIdxs) &&\n cellIndex.rowIndex === this.prevCIdxs.rowIndex && cellIndex.cellIndex === this.prevCIdxs.cellIndex &&\n isCellSelected);\n if (!isToggle) {\n args = {\n data: selectedData, cellIndex: cellIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ?\n this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined,\n cancel: false\n };\n var currentCell = 'currentCell';\n args[\"\" + currentCell] = selectedCell;\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData));\n this.cellselected = true;\n }\n else {\n this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData)(args);\n }\n };\n Selection.prototype.successCallBack = function (cellSelectingArgs, isToggle, cellIndex, selectedCell, selectedData) {\n var _this = this;\n return function (cellSelectingArgs) {\n var cncl = 'cancel';\n var currentCell = 'currentCell';\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[\"\" + cncl] === true) {\n return;\n }\n if (!isToggle) {\n cellSelectingArgs[\"\" + currentCell] = cellSelectingArgs[\"\" + currentCell] ? cellSelectingArgs[\"\" + currentCell] : selectedCell;\n }\n _this.clearCell();\n if (!isToggle) {\n _this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isToggle) {\n var args = {\n data: selectedData, cellIndex: cellIndex, currentCell: selectedCell,\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ?\n _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = _this.prevECIdxs;\n _this.updateCellProps(cellIndex, cellIndex);\n _this.onActionComplete(args, events.cellSelected);\n }\n };\n };\n Selection.prototype.getCellIndex = function (rIdx, cIdx) {\n return this.parent.getCellFromIndex(rIdx, cIdx);\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n * @returns {void}\n */\n Selection.prototype.selectCellsByRange = function (startIndex, endIndex) {\n var _this = this;\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.parent.isSpan ? getCellFromRow(this.parent, startIndex.rowIndex, startIndex.cellIndex) :\n gObj.getCellFromIndex(startIndex.rowIndex, startIndex.cellIndex);\n var min;\n var max;\n var stIndex = startIndex;\n var edIndex = endIndex = endIndex ? endIndex : startIndex;\n var cellIndexes;\n this.currentIndex = startIndex.rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var args = {\n data: selectedData, cellIndex: startIndex, currentCell: selectedCell,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), function (cellSelectingArgs) {\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[\"\" + cncl] === true) {\n return;\n }\n _this.clearCell();\n if (startIndex.rowIndex > endIndex.rowIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex.rowIndex; i <= endIndex.rowIndex; i++) {\n if (_this.selectionSettings.cellSelectionMode.indexOf('Box') < 0) {\n min = i === startIndex.rowIndex ? (startIndex.cellIndex) : 0;\n max = i === endIndex.rowIndex ? (endIndex.cellIndex) : _this.getLastColIndex(i);\n }\n else {\n min = startIndex.cellIndex;\n max = endIndex.cellIndex;\n }\n cellIndexes = [];\n for (var j = min < max ? min : max, len = min > max ? min : max; j <= len; j++) {\n selectedCell = _this.parent.isSpan ? getCellFromRow(gObj, i, j) : gObj.getCellFromIndex(i, j);\n if (!selectedCell) {\n continue;\n }\n cellIndexes.push(j);\n _this.updateCellSelection(selectedCell);\n _this.addAttribute(selectedCell);\n }\n _this.selectedRowCellIndexes.push({ rowIndex: i, cellIndexes: cellIndexes });\n }\n var cellSelectedArgs = {\n data: selectedData, cellIndex: edIndex, currentCell: gObj.getCellFromIndex(edIndex.rowIndex, edIndex.cellIndex),\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ? _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[\"\" + previousRowCellIndex] = _this.prevECIdxs;\n if (!_this.isDragged) {\n _this.onActionComplete(cellSelectedArgs, events.cellSelected);\n _this.cellselected = true;\n }\n _this.updateCellProps(stIndex, edIndex);\n });\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @returns {void}\n */\n Selection.prototype.selectCells = function (rowCellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = gObj.getCellFromIndex(rowCellIndexes[0].rowIndex, rowCellIndexes[0].cellIndexes[0]);\n this.currentIndex = rowCellIndexes[0].rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var cellSelectArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectArgs[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.onActionBegin(cellSelectArgs, events.cellSelecting);\n for (var i = 0, len = rowCellIndexes.length; i < len; i++) {\n for (var j = 0, cellLen = rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes.length; j < cellLen; j++) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n if (!selectedCell) {\n continue;\n }\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n this.addRowCellIndex({ rowIndex: rowCellIndexes[parseInt(i.toString(), 10)].rowIndex,\n cellIndex: rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)] });\n }\n }\n this.updateCellProps({ rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] }, { rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] });\n var cellSelectedArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, selectedRowCellIndex: this.selectedRowCellIndexes,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var prvRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[\"\" + prvRowCellIndex] = this.prevECIdxs;\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n };\n /**\n * Select cells with existing cell selection by passing row and column index.\n *\n * @param {IIndex} cellIndexes - Defines the collection of row and column index.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addCellsToSelection = function (cellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell;\n var index;\n this.currentIndex = cellIndexes[0].rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n this.hideAutoFill();\n var rowObj;\n rowObj = gObj.getRowsObject()[cellIndexes[0].rowIndex];\n if (gObj.groupSettings.columns.length > 0) {\n rowObj = gObj.getRowObjectFromUID(this.target.parentElement.getAttribute('data-uid'));\n }\n var foreignKeyData = [];\n for (var _i = 0, cellIndexes_1 = cellIndexes; _i < cellIndexes_1.length; _i++) {\n var cellIndex = cellIndexes_1[_i];\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[parseInt(i.toString(), 10)].rowIndex === cellIndex.rowIndex) {\n index = i;\n break;\n }\n }\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n var idx = cellIndex.cellIndex;\n if (gObj.groupSettings.columns.length > 0) {\n foreignKeyData.push(rowObj.cells[idx + gObj.groupSettings.columns.length].foreignKeyData);\n }\n else {\n foreignKeyData.push(rowObj.cells[parseInt(idx.toString(), 10)].foreignKeyData);\n }\n var args = {\n cancel: false, data: selectedData, cellIndex: cellIndexes[0],\n isShiftPressed: this.isMultiShiftRequest,\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n previousRowCell: this.prevECIdxs ?\n gObj.getCellFromIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var prvRowCellIndex = 'previousRowCellIndex';\n args[\"\" + prvRowCellIndex] = this.prevECIdxs;\n var isUnSelected = index > -1;\n if (isUnSelected) {\n var selectedCellIdx = this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes;\n if (selectedCellIdx.indexOf(cellIndex.cellIndex) > -1 || (this.selectionSettings.mode === 'Both' &&\n selectedCell.classList.contains('e-gridchkbox') && !selectedCell.getAttribute('aria-selected'))) {\n this.cellDeselect(events.cellDeselecting, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n selectedCellIdx.splice(selectedCellIdx.indexOf(cellIndex.cellIndex), 1);\n if (selectedCellIdx.length === 0) {\n this.selectedRowCellIndexes.splice(index, 1);\n }\n selectedCell.classList.remove('e-cellselectionbackground');\n selectedCell.removeAttribute('aria-selected');\n this.cellDeselect(events.cellDeselected, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n }\n else {\n isUnSelected = false;\n this.onActionBegin(args, events.cellSelecting);\n this.addRowCellIndex({ rowIndex: cellIndex.rowIndex, cellIndex: cellIndex.cellIndex });\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n }\n }\n else {\n this.onActionBegin(args, events.cellSelecting);\n if (!isNullOrUndefined(args) && args[\"\" + cncl] === true) {\n return;\n }\n this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isUnSelected) {\n var cellSelectedArgs = {\n data: selectedData, cellIndex: cellIndexes[0], currentCell: selectedCell,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) :\n undefined, selectedRowCellIndex: this.selectedRowCellIndexes\n };\n cellSelectedArgs[\"\" + prvRowCellIndex] = this.prevECIdxs;\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n this.cellselected = true;\n }\n this.updateCellProps(cellIndex, cellIndex);\n }\n };\n Selection.prototype.getColIndex = function (rowIndex, index) {\n var col = this.parent.getColumnByIndex(index);\n var cells = getCellsByTableName(this.parent, col, rowIndex);\n if (cells) {\n for (var m = 0; m < cells.length; m++) {\n var colIndex = parseInt(cells[parseInt(m.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n if (colIndex === index) {\n return m;\n }\n }\n }\n return -1;\n };\n Selection.prototype.getLastColIndex = function (rowIndex) {\n var cells = this.parent.getDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll('td.e-rowcell');\n return parseInt(cells[cells.length - 1].getAttribute(literals.dataColIndex), 10);\n };\n Selection.prototype.clearCell = function () {\n this.clearCellSelection();\n };\n Selection.prototype.cellDeselect = function (type, cellIndexes, data, cells, foreignKeyData) {\n var cancl = 'cancel';\n if (cells && cells.length > 0) {\n for (var _i = 0, cells_1 = cells; _i < cells_1.length; _i++) {\n var cell = cells_1[_i];\n if (cell && cell.classList.contains(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(cell, 'tr'));\n }\n }\n }\n var args = {\n cells: cells, data: data, cellIndexes: cellIndexes, foreignKeyData: foreignKeyData, cancel: false\n };\n this.parent.trigger(type, args);\n this.isPreventCellSelect = args[\"\" + cancl];\n };\n Selection.prototype.updateCellSelection = function (selectedCell, rowIndex, cellIndex) {\n if (!isNullOrUndefined(rowIndex)) {\n this.addRowCellIndex({ rowIndex: rowIndex, cellIndex: cellIndex });\n }\n selectedCell.classList.add('e-cellselectionbackground');\n if (selectedCell.classList.contains(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(selectedCell, 'tr'), true);\n }\n this.addAttribute(selectedCell);\n };\n Selection.prototype.addAttribute = function (cell) {\n this.target = cell;\n if (!isNullOrUndefined(cell)) {\n cell.setAttribute('aria-selected', 'true');\n if (!this.preventFocus) {\n this.focus.onClick({ target: cell }, true);\n }\n }\n };\n Selection.prototype.updateCellProps = function (startIndex, endIndex) {\n this.prevCIdxs = startIndex;\n this.prevECIdxs = endIndex;\n this.isCellSelected = this.selectedRowCellIndexes.length && true;\n };\n Selection.prototype.addRowCellIndex = function (rowCellIndex) {\n var isRowAvail;\n var index;\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[parseInt(i.toString(), 10)].rowIndex === rowCellIndex.rowIndex) {\n isRowAvail = true;\n index = i;\n break;\n }\n }\n if (isRowAvail) {\n if (this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes.indexOf(rowCellIndex.cellIndex) < 0) {\n this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes.push(rowCellIndex.cellIndex);\n }\n }\n else {\n this.selectedRowCellIndexes.push({ rowIndex: rowCellIndex.rowIndex, cellIndexes: [rowCellIndex.cellIndex] });\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Selection.prototype.clearCellSelection = function () {\n if (this.isCellSelected) {\n var gObj = this.parent;\n var selectedCells = this.getSelectedCellsElement();\n var rowCell = this.selectedRowCellIndexes;\n var data = [];\n var cells = [];\n var foreignKeyData = [];\n var currentViewData = this.getCurrentBatchRecordChanges();\n this.hideAutoFill();\n for (var i = 0, len = rowCell.length; i < len; i++) {\n data.push(currentViewData[rowCell[parseInt(i.toString(), 10)].rowIndex]);\n var rowObj = this.getRowObj(rowCell[parseInt(i.toString(), 10)].rowIndex);\n for (var j = 0, cLen = rowCell[parseInt(i.toString(), 10)].cellIndexes.length; j < cLen; j++) {\n if (rowObj.cells) {\n foreignKeyData.push(rowObj.cells[rowCell[parseInt(i.toString(), 10)]\n .cellIndexes[parseInt(j.toString(), 10)]].foreignKeyData);\n }\n cells.push(gObj.getCellFromIndex(rowCell[parseInt(i.toString(), 10)].rowIndex, rowCell[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]));\n }\n }\n this.cellDeselect(events.cellDeselecting, rowCell, data, cells, foreignKeyData);\n if (this.isPreventCellSelect === true) {\n return;\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n selectedCells[parseInt(i.toString(), 10)].classList.remove('e-cellselectionbackground');\n selectedCells[parseInt(i.toString(), 10)].removeAttribute('aria-selected');\n }\n if (this.bdrElement) {\n this.showHideBorders('none');\n }\n this.selectedRowCellIndexes = [];\n this.isCellSelected = false;\n if (!this.isDragged && this.cellselected) {\n this.cellDeselect(events.cellDeselected, rowCell, data, cells, foreignKeyData);\n }\n }\n };\n Selection.prototype.getSelectedCellsElement = function () {\n var gObj = this.parent;\n var rows = gObj.getDataRows();\n var cells = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n cells = cells.concat([].slice.call(rows[parseInt(i.toString(), 10)].getElementsByClassName('e-cellselectionbackground')));\n }\n return cells;\n };\n Selection.prototype.mouseMoveHandler = function (e) {\n e.preventDefault();\n this.stopTimer();\n var gBRect = this.parent.element.getBoundingClientRect();\n var x1 = this.x;\n var y1 = this.y;\n var position = getPosition(e);\n var x2 = position.x - gBRect.left;\n var y2 = position.y - gBRect.top;\n var tmp;\n var target = closest(e.target, 'tr');\n this.isDragged = true;\n if (!this.isCellDrag) {\n if (!target) {\n target = closest(document.elementFromPoint(this.parent.element.offsetLeft + 2, e.clientY), 'tr');\n }\n if (x1 > x2) {\n tmp = x2;\n x2 = x1;\n x1 = tmp;\n }\n if (y1 > y2) {\n tmp = y2;\n y2 = y1;\n y1 = tmp;\n }\n this.element.style.left = x1 + 'px';\n this.element.style.top = y1 + 'px';\n this.element.style.width = x2 - x1 + 'px';\n this.element.style.height = y2 - y1 + 'px';\n }\n if (target && !e.ctrlKey && !e.shiftKey) {\n var rowIndex = parseInt(target.getAttribute(literals.dataRowIndex), 10);\n if (!this.isCellDrag) {\n this.hideAutoFill();\n this.selectRowsByRange(this.startDIndex, rowIndex);\n this.isRowDragSelected = true;\n }\n else {\n var td = parentsUntil(e.target, literals.rowCell);\n if (td) {\n this.startAFCell = this.startCell;\n this.endAFCell = parentsUntil(e.target, literals.rowCell);\n if (rowIndex > -1) {\n this.selectLikeExcel(e, rowIndex, parseInt(td.getAttribute(literals.dataColIndex), 10));\n }\n }\n }\n }\n if (!e.ctrlKey && !e.shiftKey && !this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling &&\n !this.parent.enableColumnVirtualization && !this.parent.groupSettings.columns.length && this.isCellDrag) {\n this.updateScrollPosition(e, position, this.parent.getContent());\n }\n };\n Selection.prototype.updateScrollPosition = function (mouseEvent, position, scrollElement) {\n var _this = this;\n var clientRect = scrollElement.getBoundingClientRect();\n if (clientRect.left >= position.x - 20 -\n (this.parent.enableRtl && this.parent.height !== 'auto' ? getScrollBarWidth() : 0)) {\n this.timer1 = window.setInterval(function () { _this.setScrollPosition(scrollElement.firstElementChild, _this.parent.enableRtl ? 'right' : 'left', mouseEvent); }, 200);\n }\n else if (clientRect.left + scrollElement.clientWidth - 20 -\n (!this.parent.enableRtl && this.parent.height !== 'auto' ? getScrollBarWidth() : 0) < position.x) {\n this.timer1 = window.setInterval(function () { _this.setScrollPosition(scrollElement.firstElementChild, _this.parent.enableRtl ? 'left' : 'right', mouseEvent); }, 200);\n }\n if (clientRect.top >= position.y - (this.parent.getRowHeight() * 0.5)) {\n this.timer2 = window.setInterval(function () { _this.setScrollPosition(scrollElement.firstElementChild, 'up', mouseEvent); }, 200);\n }\n else if (clientRect.top + scrollElement.clientHeight - (this.parent.getRowHeight() * 0.5) -\n (scrollElement.firstElementChild.scrollWidth > scrollElement.firstElementChild.offsetWidth ?\n getScrollBarWidth() : 0) <= position.y) {\n this.timer2 = window.setInterval(function () { _this.setScrollPosition(scrollElement.firstElementChild, 'down', mouseEvent); }, 200);\n }\n };\n Selection.prototype.stopTimer = function () {\n if (this.timer1) {\n window.clearInterval(this.timer1);\n this.timer1 = null;\n }\n if (this.timer2) {\n window.clearInterval(this.timer2);\n this.timer2 = null;\n }\n this.preventFocus = false;\n };\n Selection.prototype.setScrollPosition = function (scrollElement, direction, mouseEvent) {\n var rowIndex = -1;\n var columnIndex = -1;\n if (this.endAFCell || this.prevECIdxs) {\n rowIndex = this.endAFCell ? parseInt(this.endAFCell.getAttribute('index')) : this.prevECIdxs.rowIndex;\n columnIndex = this.endAFCell ? parseInt(this.endAFCell.getAttribute('data-colindex')) : this.prevECIdxs.cellIndex;\n }\n switch (direction) {\n case 'up':\n if (mouseEvent && closest(mouseEvent.target, '.e-headercontent'))\n return;\n if (this.isAutoFillSel && this.startAFCell && this.selectedRowCellIndexes.length &&\n ((this.selectedRowCellIndexes.length === 1 && this.startAFCell !== this.startCell) ||\n (this.selectedRowCellIndexes.length > 1 && this.startAFCell.getBoundingClientRect().top > 0))) {\n rowIndex = parseInt(this.startAFCell.getAttribute('index'));\n }\n rowIndex -= 1;\n if (this.parent.frozenRows)\n rowIndex += this.parent.frozenRows + 1;\n rowIndex < 1 ? scrollElement.scrollTop = 0 : scrollElement.scrollTop -= this.parent.getRowByIndex(rowIndex).offsetHeight;\n break;\n case 'down':\n if (this.isAutoFillSel && this.startAFCell && this.startAFCell !== this.startCell) {\n rowIndex = parseInt(this.startAFCell.getAttribute('index'));\n }\n if (rowIndex < this.parent.getRows().length - 1) {\n rowIndex += 1;\n if (this.isAutoFillSel && this.startAFCell && this.startAFCell !== this.startCell) {\n this.startAFCell = this.parent.getCellFromIndex(rowIndex, this.selectedRowCellIndexes[0].cellIndexes[0]);\n }\n scrollElement.scrollTop += this.parent.getRowByIndex(rowIndex).offsetHeight;\n }\n else {\n scrollElement.scrollTop = scrollElement.scrollHeight;\n }\n break;\n case 'left':\n if (columnIndex > 0 && rowIndex > -1) {\n if (this.isAutoFillSel && this.startAFCell && this.selectedRowCellIndexes.length &&\n ((this.selectedRowCellIndexes[0].cellIndexes.length > 0 && this.startAFCell !== this.startCell) ||\n (this.selectedRowCellIndexes[0].cellIndexes.length > 1 &&\n ((!this.parent.enableRtl && this.startAFCell.getBoundingClientRect().left > 0) ||\n (this.parent.enableRtl && this.startAFCell.getBoundingClientRect().left < this.parent.element.offsetWidth))))) {\n columnIndex = parseInt(this.startAFCell.getAttribute('data-colindex'));\n }\n var nextElement_1 = this.findNextCell(scrollElement, direction, columnIndex, rowIndex);\n columnIndex = nextElement_1 ? parseInt(nextElement_1.getAttribute('data-colindex')) : -1;\n if (this.parent.enableRtl && nextElement_1) {\n columnIndex < 1 ? scrollElement.scrollLeft = scrollElement.scrollWidth :\n scrollElement.scrollLeft += nextElement_1.offsetWidth;\n }\n else if (nextElement_1) {\n columnIndex < 1 ? scrollElement.scrollLeft = 0 : scrollElement.scrollLeft -= nextElement_1.offsetWidth;\n }\n }\n break;\n case 'right':\n if (this.isAutoFillSel && this.startAFCell && this.startAFCell !== this.startCell) {\n columnIndex = parseInt(this.startAFCell.getAttribute('data-colindex'));\n }\n var currentElement = this.parent.getCellFromIndex(rowIndex, columnIndex);\n var nextElement = this.findNextCell(scrollElement, direction, columnIndex, rowIndex);\n if (nextElement && this.isAutoFillSel && this.startAFCell && this.startAFCell !== this.startCell) {\n this.startAFCell = this.parent.getCellFromIndex(this.selectedRowCellIndexes[0].rowIndex, parseInt(nextElement.getAttribute('data-colindex')));\n }\n columnIndex = nextElement ? parseInt(nextElement.getAttribute('data-colindex')) : -1;\n if (this.parent.enableRtl && nextElement) {\n columnIndex < this.parent.columns.length - 1 ? scrollElement.scrollLeft -= currentElement.offsetWidth :\n scrollElement.scrollLeft = -scrollElement.scrollWidth;\n }\n else if (nextElement) {\n columnIndex < this.parent.columns.length - 1 ? scrollElement.scrollLeft += currentElement.offsetWidth :\n scrollElement.scrollLeft = scrollElement.scrollWidth;\n }\n if (this.isAutoFillSel && (columnIndex === this.parent.columns.length - 1 || columnIndex === -1) &&\n this.startAFCell && this.endAFCell) {\n this.positionAFBorders();\n scrollElement.scrollLeft = this.parent.enableRtl ? -scrollElement.scrollWidth : scrollElement.scrollWidth;\n }\n break;\n }\n if (rowIndex > -1 && rowIndex < this.parent.getRows().length && columnIndex > -1) {\n var mouseEvent_1 = { target: this.parent.getCellFromIndex(rowIndex, columnIndex) };\n if (this.isAutoFillSel && mouseEvent_1.target.classList.contains('e-cellselectionbackground') &&\n ((direction === 'down' && parseInt(mouseEvent_1.target.getAttribute('index')) === this.parent.getRows().length - 1) ||\n (direction === 'right' && parseInt(mouseEvent_1.target.getAttribute('data-colindex')) === this.parent.columns.length - 1))) {\n return;\n }\n this.endAFCell = mouseEvent_1.target;\n this.preventFocus = true;\n this.selectLikeExcel(mouseEvent_1, rowIndex, columnIndex);\n }\n };\n Selection.prototype.findNextCell = function (scrollElement, direction, columnIndex, rowIndex) {\n var nextElement = this.parent.getCellFromIndex(rowIndex, direction === 'left' ? columnIndex - 1 : columnIndex + 1);\n if (nextElement && nextElement.classList.contains('e-hide')) {\n var siblingEles = nextElement.closest('tr').querySelectorAll('.e-rowcell:not(.e-hide)');\n var nextEleInd = Array.from(siblingEles).indexOf(nextElement.nextElementSibling);\n if (nextEleInd > 0 && nextEleInd < siblingEles.length - 1) {\n nextElement = siblingEles[nextEleInd + (direction === 'left' ? -1 : 1)];\n return nextElement;\n }\n else {\n scrollElement.scrollLeft = 0;\n return null;\n }\n }\n return nextElement;\n };\n Selection.prototype.selectLikeExcel = function (e, rowIndex, cellIndex) {\n if (!this.isAutoFillSel) {\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.drawBorders();\n }\n else { //Autofill\n this.showAFBorders();\n this.selectLikeAutoFill(e);\n }\n };\n Selection.prototype.setFrozenBorders = function (parentEle, border, bdrStr) {\n var width = border.style.borderWidth.toString().split(' ');\n var strCell = ['', 'e-leftfreeze', 'e-unfreeze', 'e-leftfreeze', 'e-unfreeze', 'e-rightfreeze', 'e-rightfreeze'];\n var cells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground' + '.' + strCell[\"\" + bdrStr])).\n filter(function (ele) { return ele.style.display === ''; });\n var fixedCells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground.e-fixedfreeze')).\n filter(function (ele) { return ele.style.display === ''; });\n var isRtl = this.parent.enableRtl;\n if (cells.length) {\n var firstRowIdx = cells[0].getAttribute('index');\n var firstColIdx = cells[0].getAttribute('data-colindex');\n var lastRowIdx = cells[cells.length - 1].getAttribute('index');\n var lastColIdx = cells[cells.length - 1].getAttribute('data-colindex');\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].getAttribute('index') === firstRowIdx && (width.length === 1 || (width.length === 3\n && parseInt(width[0], 10) === 2) || (width.length === 4 && parseInt(width[0], 10) === 2))) {\n cells[parseInt(i.toString(), 10)].classList.add('e-xlsel-top-border');\n }\n if (cells[parseInt(i.toString(), 10)].getAttribute('data-colindex') === firstColIdx && (width.length === 1 ||\n (width.length === 3 && parseInt(width[1], 10) === 2) || (width.length === 4 && (((!isRtl && parseInt(width[3], 10) === 2)) ||\n (isRtl && parseInt(width[1], 10) === 2))))) {\n cells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-right-border' : 'e-xlsel-left-border');\n }\n if (cells[parseInt(i.toString(), 10)].getAttribute('index') === lastRowIdx && (width.length === 1 ||\n (width.length === 3 && parseInt(width[2], 10) === 2) || (width.length === 4 && parseInt(width[2], 10) === 2))) {\n cells[parseInt(i.toString(), 10)].classList.add('e-xlsel-bottom-border');\n }\n if (cells[parseInt(i.toString(), 10)].getAttribute('data-colindex') === lastColIdx && (width.length === 1 ||\n (width.length === 3 && parseInt(width[1], 10) === 2) || (width.length === 4 && ((!isRtl && parseInt(width[1], 10) === 2)) ||\n (isRtl && parseInt(width[3], 10) === 2)))) {\n cells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-left-border' : 'e-xlsel-right-border');\n }\n }\n }\n if (fixedCells.length) {\n var firstRowIdx = fixedCells[0].getAttribute('index');\n var firstColIdx = fixedCells[0].getAttribute('data-colindex');\n var lastRowIdx = fixedCells[fixedCells.length - 1].getAttribute('index');\n var lastColIdx = fixedCells[fixedCells.length - 1].getAttribute('data-colindex');\n for (var i = 0; i < fixedCells.length; i++) {\n var idx = fixedCells[parseInt(i.toString(), 10)].getAttribute('index');\n var colIdx = fixedCells[parseInt(i.toString(), 10)].getAttribute('data-colindex');\n if (idx === firstRowIdx &&\n ((!this.parent.getHeaderContent().querySelector('.e-cellselectionbackground.e-fixedfreeze')\n && parentsUntil(parentEle, 'e-content')) || !parentsUntil(parentEle, 'e-content'))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add('e-xlsel-top-border');\n }\n if (idx === lastRowIdx &&\n ((!this.parent.getContent().querySelector('.e-cellselectionbackground.e-fixedfreeze')\n && parentsUntil(parentEle, 'e-headercontent')) || !parentsUntil(parentEle, 'e-headercontent'))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add('e-xlsel-bottom-border');\n }\n var preCell = fixedCells[parseInt(i.toString(), 10)].parentElement.children[parseInt(colIdx, 10) - 1];\n if (colIdx === firstColIdx && (!preCell || (preCell && !preCell.classList.contains('e-cellselectionbackground')))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-right-border' : 'e-xlsel-left-border');\n }\n var nextCell = fixedCells[parseInt(i.toString(), 10)].parentElement.children[parseInt(colIdx, 10) + 1];\n if (colIdx === lastColIdx && (!nextCell || (nextCell && !nextCell.classList.contains('e-cellselectionbackground')))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-left-border' : 'e-xlsel-right-border');\n }\n }\n }\n };\n Selection.prototype.refreshFrozenBorders = function () {\n if (this.bdrElement) {\n this.setFrozenBorders(this.parent.getContentTable(), this.bdrElement, '1');\n if (this.parent.isFrozenGrid() && this.parent.getFrozenMode() === literals.leftRight) {\n this.setFrozenBorders(this.parent.getContentTable(), this.frcBdrElement, '5');\n }\n if (this.parent.frozenRows) {\n this.setFrozenBorders(this.parent.getHeaderTable(), this.fhBdrElement, '3');\n if (this.parent.isFrozenGrid() && this.parent.getFrozenMode() === literals.leftRight) {\n this.setFrozenBorders(this.parent.getHeaderTable(), this.frhBdrElement, '6');\n }\n }\n }\n };\n Selection.prototype.drawBorders = function () {\n if (this.selectionSettings.cellSelectionMode === 'BoxWithBorder' && this.selectedRowCellIndexes.length && !this.parent.isEdit) {\n this.parent.element.classList.add('e-enabledboxbdr');\n if (!this.bdrElement) {\n this.createBorders();\n }\n this.positionBorders();\n if (this.parent.isFrozenGrid()) {\n this.showHideBorders('none', true);\n this.refreshFrozenBorders();\n }\n }\n else {\n this.showHideBorders('none');\n }\n };\n Selection.prototype.isLastCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[cells.length - 1] === cell;\n };\n Selection.prototype.isLastRow = function (cell) {\n var rows = [].slice.call(closest(cell, literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[rows.length - 1];\n };\n Selection.prototype.isFirstRow = function (cell) {\n var rows = [].slice.call(closest(cell, literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[0];\n };\n Selection.prototype.isFirstCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[0] === cell;\n };\n Selection.prototype.setBorders = function (parentEle, border, bdrStr) {\n var cells = [].slice.call(parentEle.getElementsByClassName('e-cellselectionbackground')).\n filter(function (ele) { return ele.style.display === ''; });\n if (cells.length && this.parent.isFrozenGrid()) {\n var strCell = ['', 'e-leftfreeze', 'e-unfreeze', 'e-leftfreeze', 'e-unfreeze', 'e-rightfreeze', 'e-rightfreeze'];\n cells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground' + '.' + strCell[\"\" + bdrStr] + ':not(.e-hide)')).\n filter(function (ele) { return ele.style.display === ''; });\n }\n if (cells.length) {\n var isFrozen = this.parent.isFrozenGrid();\n var start = cells[0];\n var end = cells[cells.length - 1];\n var stOff = start.getBoundingClientRect();\n var endOff = end.getBoundingClientRect();\n var parentOff = start.offsetParent.getBoundingClientRect();\n if (start.offsetParent.classList.contains('e-content') || start.offsetParent.classList.contains('e-headercontent')) {\n parentOff = start.offsetParent.querySelector('table').getBoundingClientRect();\n }\n var rowHeight = !isFrozen && this.isLastRow(end) && (bdrStr === '1' || bdrStr === '2' || bdrStr === '5') ? 2 : 0;\n var topOffSet = 0;\n var leftOffset = isFrozen && (bdrStr === '2' || bdrStr === '4') && this.isFirstCell(start) ? 1 : 0;\n var rightOffset = ((this.parent.getFrozenMode() === 'Right' && (bdrStr === '1' || bdrStr === '3'))\n || (this.parent.getFrozenMode() === literals.leftRight && (bdrStr === '5' || bdrStr === '6')))\n && this.isFirstCell(start) ? 1 : 0;\n if (this.parent.enableRtl) {\n border.style.right = parentOff.right - stOff.right - leftOffset + 'px';\n border.style.width = stOff.right - endOff.left + leftOffset + 1 + 'px';\n }\n else {\n border.style.left = stOff.left - parentOff.left - leftOffset - rightOffset + 'px';\n border.style.width = endOff.right - stOff.left + leftOffset - rightOffset + 1 + 'px';\n }\n border.style.top = stOff.top - parentOff.top - topOffSet + 'px';\n border.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + (isFrozen ? 0 : 1)) - (stOff.top - parentOff.top) - rowHeight + topOffSet + 'px' :\n endOff.height + topOffSet - rowHeight + (isFrozen ? 0 : 1) + 'px';\n this.selectDirection += bdrStr;\n }\n else {\n border.style.display = 'none';\n }\n };\n Selection.prototype.positionBorders = function () {\n this.updateStartEndCells();\n if (!this.startCell || !this.bdrElement || !this.selectedRowCellIndexes.length) {\n return;\n }\n this.selectDirection = '';\n this.showHideBorders('');\n this.setBorders(this.parent.getContentTable(), this.bdrElement, '1');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.getContentTable(), this.mcBdrElement, '2');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.getContentTable(), this.frcBdrElement, '5');\n }\n }\n if (this.parent.frozenRows) {\n this.setBorders(this.parent.getHeaderTable(), this.fhBdrElement, '3');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.getHeaderTable(), this.mhBdrElement, '4');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.getHeaderTable(), this.frhBdrElement, '6');\n }\n }\n }\n this.applyBorders(this.selectDirection);\n };\n /* eslint-enable */\n Selection.prototype.applyBothFrozenBorders = function (str) {\n var rtl = this.parent.enableRtl;\n switch (str.length) {\n case 6:\n {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = this.bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = this.top;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n break;\n case 4:\n {\n if (str.includes('1') && str.includes('2') && str.includes('3') && str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n }\n if (str.includes('2') && str.includes('4') && str.includes('5') && str.includes('6')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 3:\n {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mcBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mhBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n break;\n case 2:\n {\n if (str.includes('1')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('2')) {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.mhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('3')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.bdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('5')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.frozenRows) {\n this.frhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('6')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n this.mcBdrElement.style.borderWidth = this.all_border;\n this.frcBdrElement.style.borderWidth = this.all_border;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n this.mhBdrElement.style.borderWidth = this.all_border;\n this.frhBdrElement.style.borderWidth = this.all_border;\n }\n break;\n }\n };\n Selection.prototype.applyBorders = function (str) {\n var rtl = this.parent.enableRtl;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.applyBothFrozenBorders(str);\n }\n else {\n switch (str.length) {\n case 4:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n }\n else {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 2:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n }\n }\n else {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = this.all_border;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = this.all_border;\n }\n }\n break;\n }\n }\n };\n Selection.prototype.createBorders = function () {\n if (!this.bdrElement) {\n this.bdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_bdr',\n styles: 'width: 2px; border-width: 0;'\n }));\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_mcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frcBdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_frcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_fhbdr', styles: 'height: 2px;' }));\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_mhbdr', styles: 'height: 2px;' }));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_frhbdr', styles: 'height: 2px;' }));\n }\n }\n }\n };\n Selection.prototype.showHideBorders = function (display, freeze) {\n if (this.bdrElement) {\n this.bdrElement.style.display = display;\n if (this.parent.isFrozenGrid()) {\n var parentEle = this.parent.getContentTable();\n removeClass(parentEle.querySelectorAll('.e-xlsel-top-border'), 'e-xlsel-top-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-left-border'), 'e-xlsel-left-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-right-border'), 'e-xlsel-right-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-bottom-border'), 'e-xlsel-bottom-border');\n if (!freeze) {\n this.mcBdrElement.style.display = display;\n }\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frcBdrElement.style.display = display;\n }\n }\n if (this.parent.frozenRows) {\n var parentEle = this.parent.getHeaderTable();\n removeClass(parentEle.querySelectorAll('.e-xlsel-top-border'), 'e-xlsel-top-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-left-border'), 'e-xlsel-left-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-right-border'), 'e-xlsel-right-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-bottom-border'), 'e-xlsel-bottom-border');\n this.fhBdrElement.style.display = display;\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n if (!freeze) {\n this.mhBdrElement.style.display = display;\n }\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frhBdrElement.style.display = display;\n }\n }\n }\n };\n Selection.prototype.drawAFBorders = function () {\n if (!this.bdrAFBottom) {\n this.createAFBorders();\n }\n this.positionAFBorders();\n };\n Selection.prototype.positionAFBorders = function () {\n if (!this.startCell || !this.bdrAFLeft) {\n return;\n }\n var stOff = this.startAFCell.getBoundingClientRect();\n var endOff = this.endAFCell.getBoundingClientRect();\n var top = endOff.top - stOff.top > 0 ? 1 : 0;\n var firstCellTop = endOff.top - stOff.top >= 0 && (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, 'e-frozencontent')) && this.isFirstRow(this.startAFCell) ? 1.5 : 0;\n var firstCellLeft = (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, literals.movableHeader)) && this.isFirstCell(this.startAFCell) ? 1 : 0;\n var rowHeight = this.isLastRow(this.endAFCell) && (parentsUntil(this.endAFCell, literals.movableContent) ||\n parentsUntil(this.endAFCell, 'e-frozencontent')) ? 2 : 0;\n var parentOff = this.startAFCell.offsetParent.getBoundingClientRect();\n var parentRect = this.parent.element.getBoundingClientRect();\n var sTop = this.startAFCell.offsetParent.parentElement.scrollTop;\n var sLeft = this.startAFCell.offsetParent.parentElement.scrollLeft;\n var scrollTop = sTop - this.startAFCell.offsetTop;\n var scrollLeft = sLeft - this.startAFCell.offsetLeft;\n var totalHeight = this.parent.element.clientHeight - getScrollBarWidth();\n if (this.parent.allowPaging) {\n totalHeight -= this.parent.element.querySelector('.e-pager').offsetHeight;\n }\n if (this.parent.aggregates.length) {\n totalHeight -= this.parent.getFooterContent().offsetHeight;\n }\n var totalWidth = this.parent.element.clientWidth - (this.parent.height !== 'auto' ? getScrollBarWidth() : 0);\n scrollTop = scrollTop > 0 ? Math.floor(scrollTop) - 1 : 0;\n scrollLeft = scrollLeft > 0 ? scrollLeft : 0;\n var left = stOff.left - parentRect.left;\n if (!this.parent.enableRtl) {\n this.bdrAFLeft.style.left = left - firstCellLeft + scrollLeft - 1 + 'px';\n this.bdrAFRight.style.left = endOff.left - parentRect.left - 2 + endOff.width + 'px';\n this.bdrAFRight.style.width = totalWidth <= parseInt(this.bdrAFRight.style.left, 10) ? '0px' : '2px';\n this.bdrAFTop.style.left = left + scrollLeft - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFRight.style.left, 10) - parseInt(this.bdrAFLeft.style.left, 10)\n - firstCellLeft + 1 + 'px';\n if (totalWidth <= (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10))) {\n var leftRemove = (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10)) - totalWidth;\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) - leftRemove + 'px';\n }\n }\n else {\n var scrolloffSet = (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, literals.movableHeader)) ? stOff.right -\n this.startAFCell.offsetParent.parentElement.getBoundingClientRect().width -\n parentRect.left : 0;\n this.bdrAFLeft.style.right = parentRect.right - endOff.right - 2 + endOff.width + 'px';\n this.bdrAFLeft.style.width = totalWidth <= parseInt(this.bdrAFLeft.style.right, 10) ? '0px' : '2px';\n var borderAFRightValue = parentRect.right - stOff.right - firstCellLeft + scrolloffSet - 1;\n borderAFRightValue > 0 ? this.bdrAFRight.style.right = borderAFRightValue + 'px' : this.bdrAFRight.style.right = '0px';\n this.bdrAFTop.style.left = endOff.left - parentRect.left - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFLeft.style.right, 10) - parseInt(this.bdrAFRight.style.right, 10)\n - firstCellLeft + 1 + 'px';\n if (parseInt(this.bdrAFTop.style.left, 10) < 0) {\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10) + 'px';\n if (this.parent.height !== 'auto' && getScrollBarWidth()) {\n this.bdrAFTop.style.left = getScrollBarWidth() + 'px';\n this.bdrAFTop.style.width = (parseInt(this.bdrAFTop.style.width, 10) - getScrollBarWidth()) + 'px';\n }\n else {\n this.bdrAFTop.style.left = '0px';\n }\n }\n }\n this.bdrAFLeft.style.top = stOff.top - parentRect.top - firstCellTop + scrollTop + 'px';\n this.bdrAFLeft.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) + firstCellTop - rowHeight - scrollTop + 'px' :\n endOff.height + firstCellTop - rowHeight - scrollTop + 'px';\n this.bdrAFRight.style.top = this.bdrAFLeft.style.top;\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n this.bdrAFTop.style.top = this.bdrAFRight.style.top;\n this.bdrAFBottom.style.left = this.bdrAFTop.style.left;\n this.bdrAFBottom.style.top = parseFloat(this.bdrAFLeft.style.top) + parseFloat(this.bdrAFLeft.style.height) - top - 1 + 'px';\n this.bdrAFBottom.style.width = totalHeight <= parseFloat(this.bdrAFBottom.style.top) ? '0px' : this.bdrAFTop.style.width;\n if (totalHeight <= (parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10))) {\n var topRemove = parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10) - totalHeight;\n this.bdrAFLeft.style.height = parseInt(this.bdrAFLeft.style.height, 10) - topRemove + 'px';\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n }\n };\n Selection.prototype.createAFBorders = function () {\n if (!this.bdrAFLeft) {\n this.bdrAFLeft = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafleft', styles: 'width: 2px;' }));\n this.bdrAFRight = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafright', styles: 'width: 2px;' }));\n this.bdrAFBottom = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafbottom', styles: 'height: 2px;' }));\n this.bdrAFTop = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdraftop', styles: 'height: 2px;' }));\n }\n };\n Selection.prototype.destroyAutoFillElements = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.remove();\n this.bdrAFRight.remove();\n this.bdrAFBottom.remove();\n this.bdrAFTop.remove();\n this.bdrAFLeft = this.bdrAFRight = this.bdrAFBottom = this.bdrAFTop = null;\n }\n if (this.autofill) {\n this.autofill.remove();\n this.autofill = null;\n }\n };\n Selection.prototype.showAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = '';\n this.bdrAFRight.style.display = '';\n this.bdrAFBottom.style.display = '';\n this.bdrAFTop.style.display = '';\n }\n };\n Selection.prototype.hideAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = 'none';\n this.bdrAFRight.style.display = 'none';\n this.bdrAFBottom.style.display = 'none';\n this.bdrAFTop.style.display = 'none';\n }\n };\n Selection.prototype.updateValue = function (rIdx, cIdx, cell) {\n var args = this.createBeforeAutoFill(rIdx, cIdx, cell);\n if (!args.cancel) {\n var col = this.parent.getColumnByIndex(cIdx);\n if (this.parent.editModule && cell) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.value));\n }\n else {\n this.parent.editModule.updateCell(rIdx, col.field, args.value);\n }\n }\n }\n };\n Selection.prototype.createBeforeAutoFill = function (rowIndex, colIndex, cell) {\n var col = this.parent.getColumnByIndex(colIndex);\n var args = {\n column: col,\n value: cell.innerText\n };\n this.parent.trigger(events.beforeAutoFill, args);\n return args;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.getAutoFillCells = function (rowIndex, startCellIdx) {\n var cls = '.e-cellselectionbackground';\n var cells = [].slice.call(this.parent.getDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll(cls));\n return cells;\n };\n Selection.prototype.selectLikeAutoFill = function (e, isApply) {\n var startrowIdx = parseInt(parentsUntil(this.startAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n var startCellIdx = parseInt(this.startAFCell.getAttribute(literals.dataColIndex), 10);\n var endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n var endCellIdx = parseInt(this.endAFCell.getAttribute(literals.dataColIndex), 10);\n var rowLen = this.selectedRowCellIndexes.length - 1;\n var colLen = this.selectedRowCellIndexes[0].cellIndexes.length - 1;\n switch (true) { //direction\n case !isApply && this.endAFCell.classList.contains('e-cellselectionbackground') &&\n !!parentsUntil(e.target, literals.rowCell):\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, startCellIdx);\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, startCellIdx + colLen);\n this.drawAFBorders();\n break;\n case this.autoFillRLselection && startCellIdx + colLen < endCellIdx && //right\n endCellIdx - startCellIdx - colLen + 1 > endrowIdx - startrowIdx - rowLen // right bottom\n && endCellIdx - startCellIdx - colLen + 1 > startrowIdx - endrowIdx: //right top\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, endCellIdx);\n endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n endCellIdx = parseInt(this.endAFCell.getAttribute(literals.dataColIndex), 10);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var cellIdx = parseInt(this.endCell.getAttribute(literals.dataColIndex), 10);\n for (var i = startrowIdx; i <= endrowIdx; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n var c = 0;\n for (var j = cellIdx + 1; j <= endCellIdx; j++) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: this.startCellIndex }, { rowIndex: endrowIdx, cellIndex: endCellIdx });\n }\n break;\n case this.autoFillRLselection && startCellIdx > endCellIdx && // left\n startCellIdx - endCellIdx + 1 > endrowIdx - startrowIdx - rowLen && //left top\n startCellIdx - endCellIdx + 1 > startrowIdx - endrowIdx: // left bottom\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, endCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n for (var i = startrowIdx; i <= startrowIdx + rowLen; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n cells.reverse();\n var c = 0;\n for (var j = this.startCellIndex - 1; j >= endCellIdx; j--) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: endCellIdx }, { rowIndex: startrowIdx + rowLen, cellIndex: this.startCellIndex + colLen });\n }\n break;\n case startrowIdx > endrowIdx: //up\n this.startAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var r = trIdx;\n for (var i = startrowIdx - 1; i >= endrowIdx; i--) {\n if (r === this.startIndex - 1) {\n r = trIdx;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n var c = 0;\n r--;\n for (var j = this.startCellIndex; j <= this.startCellIndex + colLen; j++) {\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: endrowIdx, cellIndex: startCellIdx + colLen }, { rowIndex: startrowIdx + rowLen, cellIndex: startCellIdx });\n }\n break;\n default: //down\n this.endAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx + colLen);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var r = this.startIndex;\n for (var i = trIdx + 1; i <= endrowIdx; i++) {\n if (r === trIdx + 1) {\n r = this.startIndex;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n r++;\n var c = 0;\n for (var m = this.startCellIndex; m <= this.startCellIndex + colLen; m++) {\n this.updateValue(i, m, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: trIdx - rowLen, cellIndex: startCellIdx }, { rowIndex: endrowIdx, cellIndex: startCellIdx + colLen });\n }\n break;\n }\n };\n Selection.prototype.mouseUpHandler = function (e) {\n this.stopTimer();\n document.body.classList.remove('e-disableuserselect');\n if (this.element && !isNullOrUndefined(this.element.parentElement)) {\n remove(this.element);\n }\n if (this.isDragged && this.selectedRowCellIndexes.length === 1 && this.selectedRowCellIndexes[0].cellIndexes.length === 1) {\n this.mUPTarget = parentsUntil(e.target, literals.rowCell);\n }\n else {\n this.mUPTarget = null;\n }\n var closeRowCell = closest(e.target, '.e-rowcell');\n if (this.isDragged && !this.isAutoFillSel && this.selectionSettings.mode === 'Cell' &&\n closeRowCell && closeRowCell.classList.contains(literals.rowCell)) {\n var rowIndex = parseInt(closeRowCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var cellIndex = parseInt(closeRowCell.getAttribute(literals.dataColIndex), 10);\n this.isDragged = false;\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isDragged = false;\n this.updateAutoFillPosition();\n if (this.isAutoFillSel) {\n this.preventFocus = true;\n var lastCell = parentsUntil(e.target, literals.rowCell);\n this.endAFCell = lastCell ? lastCell : this.endCell === this.endAFCell ? this.startAFCell : this.endAFCell;\n this.startAFCell = this.startCell;\n if (!isNullOrUndefined(this.endAFCell) && !isNullOrUndefined(this.startAFCell)) {\n this.updateStartCellsIndex();\n this.selectLikeAutoFill(e, true);\n this.updateAutoFillPosition();\n this.hideAFBorders();\n this.positionBorders();\n if (this.parent.isFrozenGrid()) {\n this.showHideBorders('none', true);\n this.refreshFrozenBorders();\n }\n if (this.parent.aggregates.length > 0) {\n this.parent.notify(events.refreshFooterRenderer, {});\n }\n }\n this.isAutoFillSel = false;\n this.preventFocus = false;\n }\n EventHandler.remove(this.parent.getContent(), 'mousemove', this.mouseMoveHandler);\n if (this.parent.frozenRows) {\n EventHandler.remove(this.parent.getHeaderContent(), 'mousemove', this.mouseMoveHandler);\n }\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n };\n Selection.prototype.hideAutoFill = function () {\n if (this.autofill) {\n this.autofill.style.display = 'none';\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.updateAutoFillPosition = function () {\n if (this.parent.enableAutoFill && !this.parent.isEdit &&\n this.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()\n && this.selectedRowCellIndexes.length) {\n var index = parseInt(this.target.getAttribute(literals.dataColIndex), 10);\n var rindex = parseInt(this.target.getAttribute('index'), 10);\n var rowIndex = this.selectedRowCellIndexes[this.selectedRowCellIndexes.length - 1].rowIndex;\n var cells = this.getAutoFillCells(rowIndex, index).filter(function (ele) { return ele.style.display === ''; });\n var col = this.parent.getColumnByIndex(index);\n var isFrozenCol = col.getFreezeTableName() === 'movable';\n var isFrozenRow = rindex < this.parent.frozenRows;\n var isFrozenRight = this.parent.getFrozenMode() === literals.leftRight\n && col.getFreezeTableName() === literals.frozenRight;\n if (!select('#' + this.parent.element.id + '_autofill', parentsUntil(this.target, literals.table))) {\n if (select('#' + this.parent.element.id + '_autofill', this.parent.element)) {\n select('#' + this.parent.element.id + '_autofill', this.parent.element).remove();\n }\n this.autofill = createElement('div', { className: 'e-autofill', id: this.parent.element.id + '_autofill' });\n this.autofill.style.display = 'none';\n if (this.target.classList.contains('e-leftfreeze') || this.target.classList.contains('e-rightfreeze') ||\n this.target.classList.contains('e-fixedfreeze')) {\n this.autofill.classList.add('e-freeze-autofill');\n }\n if (!isFrozenRow) {\n if (!isFrozenCol) {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n }\n else {\n if (!isFrozenCol) {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n }\n if (isFrozenRight) {\n if (isFrozenRow) {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n }\n }\n var cell = cells[cells.length - 1];\n if (cell && cell.offsetParent) {\n var clientRect = cell.getBoundingClientRect();\n var parentOff = cell.offsetParent.getBoundingClientRect();\n if (cell.offsetParent.classList.contains('e-content') || cell.offsetParent.classList.contains('e-headercontent')) {\n parentOff = cell.offsetParent.querySelector('table').getBoundingClientRect();\n }\n var colWidth = this.isLastCell(cell) ? 4 : 0;\n var rowHeight = this.isLastRow(cell) ? 3 : 0;\n if (!this.parent.enableRtl) {\n this.autofill.style.left = clientRect.left - parentOff.left + clientRect.width - 4 - colWidth + 'px';\n }\n else {\n this.autofill.style.right = parentOff.right - clientRect.right + clientRect.width - 4 - colWidth + 'px';\n }\n this.autofill.style.top = clientRect.top - parentOff.top + clientRect.height - 5 - rowHeight + 'px';\n }\n this.autofill.style.display = '';\n }\n else {\n this.hideAutoFill();\n }\n };\n Selection.prototype.mouseDownHandler = function (e) {\n this.mouseButton = e.button;\n var target = e.target;\n var gObj = this.parent;\n var isDrag;\n var gridElement = parentsUntil(target, 'e-grid');\n if (gridElement && gridElement.id !== gObj.element.id || parentsUntil(target, literals.headerContent) && !this.parent.frozenRows ||\n parentsUntil(target, 'e-editedbatchcell') || parentsUntil(target, literals.editedRow)) {\n return;\n }\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (parentsUntil(target, literals.rowCell) && !e.shiftKey && !e.ctrlKey) {\n if (gObj.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()) {\n this.isCellDrag = true;\n isDrag = true;\n }\n else if (gObj.allowRowDragAndDrop && !gObj.isEdit && !this.parent.selectionSettings.checkboxOnly) {\n this.isRowDragSelected = false;\n if (!this.isRowType() || this.isSingleSel() || closest(target, 'td').classList.contains('e-selectionbackground')) {\n this.isDragged = false;\n return;\n }\n isDrag = true;\n this.element = this.parent.createElement('div', { className: 'e-griddragarea' });\n gObj.getContent().appendChild(this.element);\n }\n if (isDrag) {\n this.enableDrag(e, true);\n }\n }\n this.updateStartEndCells();\n if (target.classList.contains('e-autofill') || target.classList.contains('e-xlsel')) {\n this.isCellDrag = true;\n this.isAutoFillSel = true;\n this.enableDrag(e);\n }\n };\n Selection.prototype.updateStartEndCells = function () {\n var cells = [].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground'));\n this.startCell = cells[0];\n this.endCell = cells[cells.length - 1];\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n };\n Selection.prototype.updateStartCellsIndex = function () {\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n };\n Selection.prototype.enableDrag = function (e, isUpdate) {\n var gObj = this.parent;\n if (isUpdate) {\n var tr = closest(e.target, 'tr');\n this.startDIndex = parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n this.startDCellIndex = parseInt(parentsUntil(e.target, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n document.body.classList.add('e-disableuserselect');\n var gBRect = gObj.element.getBoundingClientRect();\n var postion = getPosition(e);\n this.x = postion.x - gBRect.left;\n this.y = postion.y - gBRect.top;\n EventHandler.add(gObj.getContent(), 'mousemove', this.mouseMoveHandler, this);\n if (this.parent.frozenRows) {\n EventHandler.add(gObj.getHeaderContent(), 'mousemove', this.mouseMoveHandler, this);\n }\n EventHandler.add(document, 'mouseup', this.mouseUpHandler, this);\n };\n Selection.prototype.clearSelAfterRefresh = function (e) {\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfiniteScroll) {\n this.clearSelection();\n }\n if ((e.requestType === 'virtualscroll' || isInfiniteScroll) && this.parent.isPersistSelection && this.isPartialSelection\n && this.isHdrSelectAllClicked) {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n var indexes = [];\n this.selectedRowState = {};\n this.persistSelectedData = [];\n for (var i = 0; i < rowObj.length; i++) {\n indexes.push(rowObj[parseInt(i.toString(), 10)].index);\n var pkValue = this.getPkValue(this.primaryKey, rowObj[parseInt(i.toString(), 10)].data);\n this.selectedRowState[\"\" + pkValue] = true;\n this.persistSelectedData.push(rowObj[parseInt(i.toString(), 10)].data);\n }\n this.selectedRowIndexes = indexes;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.uiUpdate, handler: this.enableAfterRender },\n { event: events.initialEnd, handler: this.initializeSelection },\n { event: events.rowSelectionComplete, handler: this.onActionComplete },\n { event: events.cellSelectionComplete, handler: this.onActionComplete },\n { event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.cellFocused, handler: this.onCellFocused },\n { event: events.beforeFragAppend, handler: this.clearSelAfterRefresh },\n { event: events.columnPositionChanged, handler: this.columnPositionChanged },\n { event: events.contentReady, handler: this.initialEnd },\n { event: events.rowsRemoved, handler: this.rowsRemoved },\n { event: events.headerRefreshed, handler: this.refreshHeader },\n { event: events.destroyAutoFillElements, handler: this.destroyAutoFillElements },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n this.addEventListener_checkbox();\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.removeEventListener_checkbox();\n this.parent.off(events.destroyAutoFillElements, this.destroyAutoFillElements);\n };\n Selection.prototype.wireEvents = function () {\n this.isMacOS = navigator.userAgent.indexOf('Mac OS') !== -1;\n if (this.isMacOS) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.parent.element, 'keyup', this.keyUpHandler, this);\n }\n else {\n if (!this.parent.allowKeyboard) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n }\n }\n };\n Selection.prototype.unWireEvents = function () {\n if (this.isMacOS) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.parent.element, 'keyup', this.keyUpHandler);\n }\n else {\n if (!this.parent.allowKeyboard) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n }\n }\n };\n Selection.prototype.columnPositionChanged = function () {\n if (!this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.refreshHeader = function () {\n this.setCheckAllState();\n };\n Selection.prototype.rowsRemoved = function (e) {\n for (var i = 0; i < e.records.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, e.records[parseInt(i.toString(), 10)]);\n delete (this.selectedRowState[\"\" + pkValue]);\n --this.totalRecordsCount;\n }\n this.setCheckAllState();\n };\n Selection.prototype.beforeFragAppend = function (e) {\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.getCheckAllBox = function () {\n return this.parent.getHeaderContent().querySelector('.e-checkselectall');\n };\n Selection.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.initPerisistSelection();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.render = function (e) {\n EventHandler.add(this.parent.getContent(), 'mousedown', this.mouseDownHandler, this);\n EventHandler.add(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler, this);\n };\n Selection.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n if (!isNullOrUndefined(e.properties.type)) {\n if (this.selectionSettings.type === 'Single') {\n gObj.element.removeAttribute('aria-multiselectable');\n if (this.selectedRowCellIndexes.length > 1) {\n this.clearCellSelection();\n this.prevCIdxs = undefined;\n }\n if (this.selectedRowIndexes.length > 1) {\n this.clearRowSelection();\n this.prevRowIndex = undefined;\n }\n if (this.selectedColumnsIndexes.length > 1) {\n this.clearColumnSelection();\n this.prevColIndex = undefined;\n }\n this.enableSelectMultiTouch = false;\n this.hidePopUp();\n }\n else if (this.selectionSettings.type === 'Multiple') {\n gObj.element.setAttribute('aria-multiselectable', 'true');\n }\n }\n if (!isNullOrUndefined(e.properties.mode) ||\n !isNullOrUndefined(e.properties.cellSelectionMode)) {\n this.clearSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevColIndex = undefined;\n }\n this.isPersisted = true;\n this.checkBoxSelectionChanged();\n this.isPersisted = false;\n if (!this.parent.isCheckBoxSelection) {\n this.initPerisistSelection();\n }\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length) {\n gObj.isCheckBoxSelection = !(this.selectionSettings.checkboxMode === 'ResetOnRowClick');\n }\n this.drawBorders();\n };\n Selection.prototype.hidePopUp = function () {\n if (this.parent.element.querySelector('.e-gridpopup').getElementsByClassName('e-rowselect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.initialEnd = function () {\n if (!this.selectedRowIndexes.length) {\n this.parent.off(events.contentReady, this.initialEnd);\n this.selectRow(this.parent.selectedRowIndex);\n }\n };\n Selection.prototype.checkBoxSelectionChanged = function () {\n var gobj = this.parent;\n gobj.off(events.contentReady, this.checkBoxSelectionChanged);\n var checkboxColumn = gobj.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length > 0) {\n gobj.isCheckBoxSelection = true;\n this.chkField = checkboxColumn[0].field;\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n if (isNullOrUndefined(this.totalRecordsCount)) {\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.isSingleSel()) {\n gobj.selectionSettings.type = 'Multiple';\n gobj.dataBind();\n }\n else {\n this.initPerisistSelection();\n }\n }\n if (!gobj.isCheckBoxSelection && !this.isPersisted) {\n this.chkField = null;\n this.initPerisistSelection();\n }\n };\n Selection.prototype.initPerisistSelection = function () {\n var gobj = this.parent;\n if (this.parent.selectionSettings.persistSelection && this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = true;\n this.ensureCheckboxFieldSelection();\n }\n else if (this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = false;\n this.ensureCheckboxFieldSelection();\n }\n else {\n gobj.isPersistSelection = false;\n this.selectedRowState = {};\n }\n };\n Selection.prototype.ensureCheckboxFieldSelection = function () {\n var gobj = this.parent;\n this.primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n if (!gobj.enableVirtualization && this.chkField\n && ((gobj.isPersistSelection && Object.keys(this.selectedRowState).length === 0) ||\n !gobj.isPersistSelection)) {\n var data = this.parent.getDataModule();\n var query = new Query().where(this.chkField, 'equal', true);\n if (!query.params) {\n query.params = this.parent.query.params;\n }\n var dataManager = data.getData({}, query);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n this.parent.showSpinner();\n dataManager.then(function (e) {\n proxy_1.dataSuccess(e.result);\n proxy_1.refreshPersistSelection();\n proxy_1.parent.hideSpinner();\n });\n }\n };\n Selection.prototype.dataSuccess = function (res) {\n var data = (this.parent.getDataModule().isRemote() && !isNullOrUndefined(res['result'])) ? res['result'] : res;\n for (var i = 0; i < data.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (isNullOrUndefined(this.selectedRowState[\"\" + pkValue]) && data[parseInt(i.toString(), 10)][this.chkField]) {\n this.selectedRowState[\"\" + pkValue] = data[parseInt(i.toString(), 10)][this.chkField];\n }\n }\n this.persistSelectedData = data;\n };\n Selection.prototype.setRowSelection = function (state) {\n if (!(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))) {\n if (state) {\n if (this.isPartialSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n for (var _i = 0, rowObj_1 = rowObj; _i < rowObj_1.length; _i++) {\n var row = rowObj_1[_i];\n this.selectedRowState[this.getPkValue(this.primaryKey, row.data)] = true;\n }\n }\n else {\n var selectedData = this.isPartialSelection ? this.parent.partialSelectedRecords : this.getData();\n if (this.parent.groupSettings.columns.length) {\n for (var _a = 0, _b = this.isPartialSelection ? selectedData : selectedData.records; _a < _b.length; _a++) {\n var data = _b[_a];\n this.selectedRowState[this.getPkValue(this.primaryKey, data)] = true;\n }\n }\n else {\n for (var _c = 0, selectedData_1 = selectedData; _c < selectedData_1.length; _c++) {\n var data = selectedData_1[_c];\n this.selectedRowState[this.getPkValue(this.primaryKey, data)] = true;\n }\n }\n }\n }\n else {\n this.selectedRowState = {};\n }\n // (this.getData()).forEach(function (data) {\n // this.selectedRowState[data[this.primaryKey]] = true;\n // })\n }\n else {\n if (state) {\n var selectedStateKeys = Object.keys(this.selectedRowState);\n var unSelectedRowStateKeys = Object.keys(this.unSelectedRowState);\n if (!this.isCheckboxReset) {\n var rowData = (this.parent.groupSettings.columns.length && this.parent.isPersistSelection) ?\n this.parent.currentViewData['records'] : this.parent.currentViewData;\n for (var _d = 0, rowData_1 = rowData; _d < rowData_1.length; _d++) {\n var data = rowData_1[_d];\n if (!isNullOrUndefined(data[this.primaryKey])) {\n var key = data[this.primaryKey].toString();\n if (selectedStateKeys.indexOf(key) === -1 && unSelectedRowStateKeys.indexOf(key) === -1) {\n this.selectedRowState[data[this.primaryKey]] = true;\n }\n }\n }\n }\n }\n else {\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.rmtHdrChkbxClicked = false;\n }\n }\n };\n Selection.prototype.getData = function () {\n return this.parent.getDataModule().dataManager.executeLocal(this.parent.getDataModule().generateQuery(true));\n };\n Selection.prototype.getAvailableSelectedData = function () {\n var filteredSearchedSelectedData = new DataManager(this.persistSelectedData).executeLocal(this.parent.getDataModule().generateQuery(true));\n if (this.parent.groupSettings.columns.length && filteredSearchedSelectedData &&\n filteredSearchedSelectedData.records) {\n filteredSearchedSelectedData = filteredSearchedSelectedData.records.slice();\n }\n return filteredSearchedSelectedData;\n };\n Selection.prototype.refreshPersistSelection = function () {\n var rows = this.parent.getRows();\n this.totalRecordsCount = this.parent.getCurrentViewRecords().length;\n if (this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (!isNullOrUndefined(rows) && rows.length > 0 && (this.parent.isPersistSelection || this.chkField)) {\n var indexes = [];\n for (var j = 0; j < rows.length; j++) {\n var rowObj = this.getRowObj(rows[parseInt(j.toString(), 10)]);\n var pKey = rowObj ? rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null : null;\n if (pKey === null) {\n return;\n }\n if (this.isPartialSelection && !rowObj.isSelectable) {\n continue;\n }\n var checkState = void 0;\n var chkBox = rows[parseInt(j.toString(), 10)].querySelector('.e-checkselect');\n if (this.selectedRowState[\"\" + pKey] || (this.parent.checkAllRows === 'Check' && this.selectedRowState[\"\" + pKey] &&\n this.totalRecordsCount === Object.keys(this.selectedRowState).length && this.chkAllCollec.indexOf(pKey) < 0)\n || (this.parent.checkAllRows === 'Uncheck' && this.chkAllCollec.indexOf(pKey) > 0 && !this.parent.selectedRowIndex)\n || (this.parent.checkAllRows === 'Intermediate' && !isNullOrUndefined(this.chkField) && rowObj.data[this.chkField])) {\n indexes.push(parseInt(rows[parseInt(j.toString(), 10)].getAttribute(literals.dataRowIndex), 10));\n checkState = true;\n }\n else {\n checkState = false;\n if (this.checkedTarget !== chkBox && this.parent.isCheckBoxSelection && chkBox) {\n removeAddCboxClasses(chkBox.nextElementSibling, checkState);\n }\n }\n this.updatePersistCollection(rows[parseInt(j.toString(), 10)], checkState);\n }\n if (this.isSingleSel() && indexes.length > 0) {\n this.selectRow(indexes[0], true);\n }\n else {\n this.selectRows(indexes);\n }\n }\n if ((this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') && this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n }\n };\n Selection.prototype.actionBegin = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n var editChkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n var row = closest(editChkBox, '.' + literals.editedRow);\n if (row) {\n if (this.parent.editSettings.mode === 'Dialog') {\n row = this.parent.element.querySelector('.e-dlgeditrow');\n }\n var rowObj = this.getRowObj(row);\n if (!rowObj) {\n return;\n }\n this.selectedRowState[this.getPkValue(this.primaryKey, rowObj.data)] = rowObj.isSelected = editChkBox.checked;\n }\n else {\n this.isCheckedOnAdd = editChkBox.checked;\n }\n }\n }\n if (this.parent.isPersistSelection && this.isPartialSelection) {\n if (e.requestType === 'paging' && (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.selectedRowIndexes = [];\n }\n if (e.requestType === 'filtering' || e.requestType === 'searching') {\n this.parent.partialSelectedRecords = [];\n this.parent.disableSelectedRecords = [];\n }\n }\n };\n Selection.prototype.actionComplete = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n if (e.action === 'add') {\n if (this.isCheckedOnAdd) {\n var rowObj = this.parent.getRowObjectFromUID(this.parent.getRows()[e.selectedRow].getAttribute('data-uid'));\n this.selectedRowState[this.getPkValue(this.primaryKey, rowObj.data)] = rowObj.isSelected = this.isCheckedOnAdd;\n }\n this.isHdrSelectAllClicked = false;\n this.setCheckAllState();\n }\n this.refreshPersistSelection();\n }\n if (e.requestType === 'delete' && this.parent.isPersistSelection) {\n var records = e.data;\n var data = records.slice();\n for (var i = 0; i < data.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(pkValue)) {\n this.updatePersistDelete(pkValue, this.isPartialSelection);\n }\n }\n this.isHdrSelectAllClicked = false;\n this.setCheckAllState();\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (e.requestType === 'paging') {\n if (this.parent.isPersistSelection && this.isPartialSelection && this.isHdrSelectAllClicked) {\n var rows = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isSelectable) {\n indexes.push(rows[parseInt(i.toString(), 10)].index);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n }\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n }\n };\n Selection.prototype.onDataBound = function () {\n if (!this.parent.enableVirtualization && this.parent.isPersistSelection) {\n if (this.selectedRecords.length) {\n this.isPrevRowSelection = true;\n }\n }\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && this.rmtHdrChkbxClicked) {\n if (this.parent.checkAllRows === 'Intermediate') {\n this.setRowSelection(true);\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n }\n }\n if (this.parent.enableVirtualization) {\n this.setCheckAllState();\n }\n if (this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n this.initialRowSelection = this.isRowType() && this.parent.element.querySelectorAll('.e-selectionbackground') &&\n this.parent.getSelectedRows().length ? true : false;\n if (this.parent.isCheckBoxSelection && !this.initialRowSelection) {\n var totalRecords = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < totalRecords.length; i++) {\n if (totalRecords[parseInt(i.toString(), 10)].isSelected) {\n indexes.push(i);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n this.initialRowSelection = true;\n }\n };\n Selection.prototype.updatePersistSelectedData = function (checkState) {\n if (this.parent.isPersistSelection) {\n var rows = this.parent.getRows();\n for (var i = 0; i < rows.length; i++) {\n this.updatePersistCollection(rows[parseInt(i.toString(), 10)], checkState);\n }\n if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n this.persistSelectedData = (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n ? this.persistSelectedData : [];\n }\n else if (this.parent.checkAllRows === 'Check') {\n this.setRowSelection(true);\n this.persistSelectedData = !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n && !this.isPartialSelection ?\n this.parent.groupSettings.columns.length ? this.getData().records.slice() :\n this.getData().slice() : this.persistSelectedData;\n }\n }\n };\n Selection.prototype.checkSelectAllAction = function (checkState) {\n var cRenderer = this.getRenderer();\n var editForm = this.parent.element.querySelector('.e-gridform');\n this.checkedTarget = this.getCheckAllBox();\n if (checkState && this.getCurrentBatchRecordChanges().length) {\n this.parent.checkAllRows = 'Check';\n this.updatePersistSelectedData(checkState);\n this.selectRowsByRange(cRenderer.getVirtualRowIndex(0), cRenderer.getVirtualRowIndex(this.getCurrentBatchRecordChanges().length - 1));\n }\n else {\n this.parent.checkAllRows = 'Uncheck';\n this.updatePersistSelectedData(checkState);\n this.clearSelection();\n }\n this.chkAllCollec = [];\n if (!isNullOrUndefined(editForm)) {\n var editChkBox = editForm.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n removeAddCboxClasses(editChkBox.nextElementSibling, checkState);\n }\n }\n };\n Selection.prototype.checkSelectAll = function (checkBox) {\n var _this = this;\n var stateStr = this.getCheckAllStatus(checkBox);\n var state = stateStr === 'Check';\n this.isHeaderCheckboxClicked = true;\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && ((stateStr === 'Uncheck' || this.isCheckboxReset) ||\n (stateStr === 'Intermediate' && this.parent.isPersistSelection))) {\n this.rmtHdrChkbxClicked = true;\n }\n else {\n this.rmtHdrChkbxClicked = false;\n }\n if (this.rmtHdrChkbxClicked && this.isCheckboxReset) {\n this.unSelectedRowState = {};\n }\n this.isCheckboxReset = false;\n if (stateStr === 'Intermediate') {\n if (!this.chkField && !this.parent.isPersistSelection) {\n state = this.getCurrentBatchRecordChanges().some(function (data) {\n return _this.getPkValue(_this.primaryKey, data) in _this.selectedRowState;\n });\n }\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && this.parent.isPersistSelection) {\n for (var i = 0; i < this.getCurrentBatchRecordChanges().length; i++) {\n if (!isNullOrUndefined(this.getPkValue(this.primaryKey, this.getCurrentBatchRecordChanges()[\"\" + i]))) {\n if (Object.keys(this.selectedRowState).includes((this.getPkValue(this.primaryKey, this.getCurrentBatchRecordChanges()[\"\" + i])).toString())) {\n state = true;\n }\n else {\n state = false;\n break;\n }\n }\n }\n }\n }\n if (this.parent.isPersistSelection && this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n this.checkSelectAllAction(!state);\n this.target = null;\n if (this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n this.updateSelectedRowIndexes();\n }\n this.triggerChkChangeEvent(checkBox, !state);\n };\n Selection.prototype.getCheckAllStatus = function (ele) {\n var classes = ele ? ele.nextElementSibling.classList :\n this.getCheckAllBox().nextElementSibling.classList;\n var status;\n if (classes.contains('e-check')) {\n status = 'Check';\n }\n else if (classes.contains('e-uncheck')) {\n status = 'Uncheck';\n }\n else if (classes.contains('e-stop')) {\n status = 'Intermediate';\n }\n else {\n status = 'None';\n }\n return status;\n };\n Selection.prototype.checkSelect = function (checkBox) {\n var target = closest(this.checkedTarget, '.' + literals.rowCell);\n var gObj = this.parent;\n this.isMultiCtrlRequest = true;\n var rIndex = 0;\n this.isHeaderCheckboxClicked = false;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n if (this.parent.enableVirtualization && this.parent.groupSettings.columns.length) {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n else {\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(literals.addedRow).length > 0 &&\n this.parent.editSettings.newRowPosition === 'Top' && !this.parent.editSettings.showAddNewRow) {\n ++rIndex;\n }\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.dataColIndex), 10));\n this.moveIntoUncheckCollection(closest(target, '.' + literals.row));\n this.setCheckAllState();\n this.isMultiCtrlRequest = false;\n this.triggerChkChangeEvent(checkBox, checkBox.nextElementSibling.classList.contains('e-check'));\n };\n Selection.prototype.moveIntoUncheckCollection = function (row) {\n if (this.parent.checkAllRows === 'Check' || this.parent.checkAllRows === 'Uncheck') {\n var rowObj = this.getRowObj(row);\n var pKey = rowObj && rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null;\n if (!pKey) {\n return;\n }\n if (this.chkAllCollec.indexOf(pKey) < 0) {\n this.chkAllCollec.push(pKey);\n }\n else {\n this.chkAllCollec.splice(this.chkAllCollec.indexOf(pKey), 1);\n }\n }\n };\n Selection.prototype.triggerChkChangeEvent = function (checkBox, checkState) {\n this.parent.trigger(events.checkBoxChange, {\n checked: checkState, selectedRowIndexes: this.parent.getSelectedRowIndexes(),\n target: checkBox\n });\n if (!this.parent.isEdit) {\n this.checkedTarget = null;\n }\n };\n Selection.prototype.updateSelectedRowIndexes = function () {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) &&\n this.isPartialSelection && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && this.parent.selectionSettings.persistSelection) {\n if (this.parent.checkAllRows !== 'Uncheck') {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n for (var _i = 0, rowObj_2 = rowObj; _i < rowObj_2.length; _i++) {\n var row = rowObj_2[_i];\n this.selectedRowIndexes.push(row.index);\n }\n }\n }\n if (this.parent.isCheckBoxSelection && this.parent.enableVirtualization && !this.isPartialSelection &&\n (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && !this.parent.isPersistSelection && this.parent.checkAllRows === 'Check') {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n if (rowObj.length !== this.selectedRowIndexes.length) {\n for (var _a = 0, rowObj_3 = rowObj; _a < rowObj_3.length; _a++) {\n var row = rowObj_3[_a];\n if (this.selectedRowIndexes.indexOf(row.index) <= -1) {\n this.selectedRowIndexes.push(row.index);\n }\n }\n }\n }\n };\n Selection.prototype.updateSelectedRowIndex = function (index) {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && !this.isPartialSelection) {\n if (this.parent.checkAllRows === 'Check') {\n this.selectedRowIndexes = [];\n var dataLength = this.parent.groupSettings.columns.length ? this.getData()['records'].length :\n this.getData().length;\n for (var data = 0; data < dataLength; data++) {\n this.selectedRowIndexes.push(data);\n }\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.selectedRowIndexes = [];\n }\n else {\n var row = this.parent.getRowByIndex(index);\n if (index && row && row.getAttribute('aria-selected') === 'false') {\n var selectedVal = this.selectedRowIndexes.indexOf(index);\n this.selectedRowIndexes.splice(selectedVal, 1);\n }\n }\n }\n };\n Selection.prototype.isAllSelected = function (count) {\n if (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) {\n return this.getAvailableSelectedData().length === (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling\n ? this.parent.totalDataRecordsCount : this.totalRecordsCount);\n }\n else {\n if (this.isPartialSelection) {\n if (this.parent.allowPaging && this.parent.pageSettings.pageSize < this.parent.pageSettings.totalRecordsCount) {\n var data = this.parent.partialSelectedRecords;\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n }\n else {\n return this.isSelectAllRowCount(count);\n }\n }\n else {\n var data = (this.parent.groupSettings.columns.length) ? this.getData()['records'] : this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n }\n }\n };\n Selection.prototype.someDataSelected = function () {\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && (this.parent.searchSettings.key.length || this.parent.filterSettings.columns.length)) {\n var filteredSearchedSelectedData = this.getAvailableSelectedData();\n for (var i = 0; i < filteredSearchedSelectedData.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, filteredSearchedSelectedData[parseInt(i.toString(), 10)]);\n if (this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n }\n var data = this.isPartialSelection ? this.parent.partialSelectedRecords\n : (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) ? [] : this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n };\n Selection.prototype.setCheckAllState = function (index, isInteraction) {\n if (this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n var checkToSelectAll = false;\n var isFiltered = false;\n var checkedLen = Object.keys(this.selectedRowState).length;\n if (!this.parent.isPersistSelection) {\n checkedLen = this.selectedRowIndexes.length;\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.parent.isPersistSelection && !((this.parent.getDataModule().isRemote() ||\n (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n this.isPartialSelection)\n && (this.parent.searchSettings.key.length || this.parent.filterSettings.columns.length)) {\n isFiltered = true;\n checkToSelectAll = this.isAllSelected(checkedLen);\n }\n var input = this.getCheckAllBox();\n if (input) {\n var spanEle = input.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n setChecked(input, false);\n input.indeterminate = false;\n var getRecord = this.parent.getDataModule().isRemote() ? [] :\n (this.parent.groupSettings.columns.length) ? this.getData()['records'] : this.getData();\n if ((checkToSelectAll && isFiltered && (this.parent.getDataModule().isRemote() ||\n (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result) ||\n getRecord.length)) || (!isFiltered && ((checkedLen === this.totalRecordsCount && this.totalRecordsCount\n && !this.isPartialSelection && (!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n || this.parent.allowPaging)) ||\n (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling\n && this.isPartialSelection && (this.isSelectAllRowCount(checkedLen) || this.isHdrSelectAllClicked))\n || ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && ((!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n getRecord.length && checkedLen === getRecord.length) || ((this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n !this.isPartialSelection && ((checkedLen === this.parent.totalDataRecordsCount) || ((this.isSelectAllRowCount(checkedLen)\n || checkedLen === this.totalRecordsCount) && !this.parent.isPersistSelection))) ||\n (this.isPartialSelection && (this.isHdrSelectAllClicked || this.isSelectAllRowCount(checkedLen)))))\n || (checkedLen === this.totalRecordsCount && this.totalRecordsCount && !this.isPartialSelection &&\n !this.parent.allowPaging && !this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling)))) {\n addClass([spanEle], ['e-check']);\n setChecked(input, true);\n if (isInteraction) {\n this.getRenderer().setSelection(null, true, true);\n }\n this.parent.checkAllRows = 'Check';\n }\n else if (((!this.selectedRowIndexes.length && (!this.parent.enableVirtualization ||\n (!this.persistSelectedData.length && !isFiltered) || (isFiltered && this.someDataSelected())) ||\n checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) && !this.parent.allowPaging) ||\n (this.parent.allowPaging && (checkedLen === 0 || (checkedLen && isFiltered && this.someDataSelected())))) {\n addClass([spanEle], ['e-uncheck']);\n if (isInteraction) {\n this.getRenderer().setSelection(null, false, true);\n }\n this.parent.checkAllRows = 'Uncheck';\n }\n else {\n addClass([spanEle], ['e-stop']);\n this.parent.checkAllRows = 'Intermediate';\n input.indeterminate = true;\n }\n if (checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n if (this.isPartialSelection) {\n var rowCount = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; }).length;\n if (rowCount === 0 && spanEle.parentElement.querySelector('.e-frame').classList.contains('e-uncheck')) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n }\n if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.updateSelectedRowIndex(index);\n }\n }\n }\n };\n Selection.prototype.isSelectAllRowCount = function (count) {\n var rowCount = 0;\n var rowObj = this.parent.getRowsObject();\n if (this.parent.selectionSettings.persistSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var dataLen = (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) ?\n this.parent.totalDataRecordsCount : this.getData() && this.getData().length;\n if (dataLen === rowObj.length) {\n rowCount = rowObj.filter(function (e) { return e.isSelectable; }).length;\n return rowCount && count === rowCount;\n }\n else {\n return false;\n }\n }\n else {\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n rowCount = this.parent.partialSelectedRecords.length + this.parent.disableSelectedRecords.length;\n if (rowCount === this.totalRecordsCount) {\n return this.parent.partialSelectedRecords.length && count === this.parent.partialSelectedRecords.length;\n }\n else {\n return false;\n }\n }\n else {\n rowCount = rowObj.filter(function (e) { return e.isSelectable; }).length;\n return rowCount && count === rowCount;\n }\n }\n };\n Selection.prototype.keyDownHandler = function (e) {\n // Below are keyCode for command key in MAC OS. Safari/Chrome(91-Left command, 93-Right Command), Opera(17), FireFox(224)\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = true;\n }\n var targetHeadCell = parentsUntil(e.target, 'e-headercell');\n var targetRowCell = parentsUntil(e.target, literals.rowCell);\n var isCheckBox = targetHeadCell ? targetHeadCell.children[0].classList.contains('e-headerchkcelldiv') :\n targetRowCell ? targetRowCell.classList.contains('e-gridchkbox') : false;\n if (isCheckBox && !this.parent.allowKeyboard && e.keyCode === 32) {\n e.preventDefault();\n }\n };\n Selection.prototype.keyUpHandler = function (e) {\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = false;\n }\n };\n Selection.prototype.clickHandler = function (e) {\n var target = e.target;\n this.actualTarget = target;\n if (!this.isAutoFillSel && !e.ctrlKey && !e.shiftKey) {\n this.startAFCell = this.endAFCell = null;\n }\n if (this.selectionSettings.persistSelection) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (parentsUntil(target, literals.row) || parentsUntil(target, 'e-headerchkcelldiv') ||\n (this.selectionSettings.allowColumnSelection && target.classList.contains('e-headercell'))) {\n this.isInteracted = true;\n }\n this.cmdKeyPressed = e.metaKey;\n this.isMultiCtrlRequest = e.ctrlKey || this.enableSelectMultiTouch ||\n (this.isMacOS && this.cmdKeyPressed);\n if (!this.parent.allowKeyboard) {\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n }\n else {\n this.isMultiShiftRequest = e.shiftKey;\n }\n this.isMultiCtrlRequestCell = this.isMultiCtrlRequest;\n this.popUpClickHandler(e);\n var chkSelect = false;\n this.preventFocus = true;\n var checkBox;\n var checkWrap = parentsUntil(target, 'e-checkbox-wrapper');\n this.checkSelectAllClicked = checkWrap && checkWrap.getElementsByClassName('e-checkselectall') ||\n (this.selectionSettings.persistSelection && parentsUntil(target, literals.row)) ? true : false;\n if (this.selectionSettings.persistSelection && this.isPartialSelection && parentsUntil(target, 'e-headerchkcelldiv')\n && !target.querySelector('.e-checkbox-disabled')) {\n this.isHdrSelectAllClicked = true;\n }\n if (checkWrap && checkWrap.querySelectorAll('.e-checkselect,.e-checkselectall').length > 0) {\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n chkSelect = true;\n }\n this.drawBorders();\n this.updateAutoFillPosition();\n target = parentsUntil(target, literals.rowCell);\n if (this.parent.isReact && (target && !target.parentElement && target.classList.contains('e-rowcell'))) {\n target = this.parent.getCellFromIndex(parseInt(target.getAttribute('index'), 10), parseInt(target.getAttribute('data-colindex'), 10));\n }\n if (this.isRowDragSelected && isNullOrUndefined(target) && this.parent.allowRowDragAndDrop &&\n this.selectionSettings.persistSelection && this.checkSelectAllClicked) {\n this.isRowDragSelected = false;\n }\n if (((target && target.parentElement.classList.contains(literals.row) && !this.parent.selectionSettings.checkboxOnly) || chkSelect)\n && !this.isRowDragSelected) {\n if (this.parent.isCheckBoxSelection) {\n this.isMultiCtrlRequest = true;\n }\n this.target = target;\n if (!isNullOrUndefined(checkBox)) {\n this.checkedTarget = checkBox;\n if (checkBox.classList.contains('e-checkselectall')) {\n this.checkSelectAll(checkBox);\n }\n else {\n this.checkSelect(checkBox);\n }\n }\n else {\n var gObj = this.parent;\n var rIndex = 0;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n if (this.parent.isPersistSelection && !this.parent.editSettings.showAddNewRow\n && this.parent.element.getElementsByClassName(literals.addedRow).length > 0) {\n ++rIndex;\n }\n if (!this.mUPTarget || !this.mUPTarget.isEqualNode(target)) {\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.dataColIndex), 10));\n }\n if (this.parent.isCheckBoxSelection) {\n this.moveIntoUncheckCollection(closest(target, '.' + literals.row));\n this.setCheckAllState();\n }\n }\n if (!this.parent.isCheckBoxSelection && Browser.isDevice && !this.isSingleSel()) {\n this.showPopup(e);\n }\n }\n else if (e.target.classList.contains('e-headercell') &&\n !e.target.classList.contains('e-stackedheadercell')) {\n var uid = e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n this.headerSelectionHandler(this.parent.getColumnIndexByUid(uid));\n }\n this.isMultiCtrlRequest = false;\n this.isMultiCtrlRequestCell = this.isMultiCtrlRequest;\n this.isMultiShiftRequest = false;\n if (isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n this.preventFocus = false;\n }\n };\n Selection.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains(literals.rowCell) ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-rowselect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSelectMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSelectMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.showPopup = function (e) {\n if (!this.selectionSettings.enableSimpleMultiRowSelection) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-rowselect e-icons e-icon-rowselect' +\n (!this.isSingleSel() && (this.selectedRecords.length > 1\n || this.selectedRowCellIndexes.length > 1) ? ' e-spanclicked' : ''));\n }\n };\n Selection.prototype.rowCellSelectionHandler = function (rowIndex, cellIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n if (!this.isDragged) {\n this.selectRow(rowIndex, this.selectionSettings.enableToggle);\n }\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, this.selectionSettings.enableToggle);\n if (this.selectedRowCellIndexes.length) {\n this.updateAutoFillPosition();\n }\n this.drawBorders();\n }\n else if (this.isMultiShiftRequest) {\n if (this.parent.isCheckBoxSelection || (!this.parent.isCheckBoxSelection &&\n !closest(this.target, '.' + literals.rowCell).classList.contains(literals.gridChkBox))) {\n this.selectRowsByRange(isUndefined(this.prevRowIndex) ? rowIndex : this.prevRowIndex, rowIndex);\n }\n else {\n this.addRowsToSelection([rowIndex]);\n }\n this.selectCellsByRange(isUndefined(this.prevCIdxs) ? { rowIndex: rowIndex, cellIndex: cellIndex } : this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.updateAutoFillPosition();\n this.drawBorders();\n }\n else {\n this.addRowsToSelection([rowIndex]);\n if (this.selectionSettings.mode === 'Both') {\n var checkboxColumn = this.parent.getColumns().find(function (col) { return col.type === 'checkbox'; });\n var checkboxColumnIndexCheck = checkboxColumn && checkboxColumn.index !== cellIndex;\n if (checkboxColumnIndexCheck && !this.isMultiCtrlRequestCell) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, this.selectionSettings.enableToggle);\n }\n else if (!checkboxColumn || checkboxColumnIndexCheck) {\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n }\n }\n else {\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n }\n this.showHideBorders('none');\n }\n this.isDragged = false;\n };\n Selection.prototype.onCellFocused = function (e) {\n if (this.parent.frozenRows && e.container.isHeader && e.byKey) {\n if (e.keyArgs.action === 'upArrow') {\n if (this.parent.allowFiltering) {\n e.isJump = e.element.tagName === 'INPUT' ? true : false;\n }\n else {\n e.isJump = e.element.tagName === 'TH' ? true : false;\n }\n }\n else {\n if (e.keyArgs.action === 'downArrow') {\n var rIdx = Number(e.element.parentElement.getAttribute(literals.dataRowIndex));\n e.isJump = rIdx === 0 ? true : false;\n }\n else {\n if (e.keyArgs.action === 'ctrlHome') {\n e.isJump = true;\n }\n }\n }\n }\n var clear = ((e.container.isHeader && e.isJump) ||\n (e.container.isContent && !e.container.isSelectable)) && !(e.byKey && e.keyArgs.action === 'space')\n && !(e.element.classList.contains('e-detailrowexpand') || e.element.classList.contains('e-detailrowcollapse'));\n var headerAction = (e.container.isHeader && e.element.tagName !== 'TD' && !closest(e.element, '.' + literals.rowCell))\n && !(e.byKey && e.keyArgs.action === 'space');\n if (!e.byKey || clear) {\n if (clear && !this.parent.isCheckBoxSelection) {\n this.clearSelection();\n }\n return;\n }\n var _a = e.container.isContent ? e.container.indexes : e.indexes, rowIndex = _a[0], cellIndex = _a[1];\n var prev = this.focus.getPrevIndexes();\n if (e.element.parentElement.querySelector('.e-rowcelldrag') || e.element.parentElement.querySelector('.e-dtdiagonalright')\n || e.element.parentElement.querySelector('.e-dtdiagonaldown')) {\n prev.cellIndex = prev.cellIndex - 1;\n }\n if (this.parent.frozenRows) {\n if (e.container.isHeader && (e.element.tagName === 'TD' || closest(e.element, '.' + literals.rowCell))) {\n var hdrLength = this.parent.getHeaderTable().querySelector('thead').childElementCount;\n if (this.parent.editSettings.showAddNewRow && this.parent.editSettings.newRowPosition === 'Top' &&\n e.keyArgs.action === 'upArrow') {\n hdrLength++;\n }\n rowIndex -= hdrLength;\n prev.rowIndex = !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex - hdrLength : null;\n }\n else {\n rowIndex += this.parent.frozenRows;\n prev.rowIndex = prev.rowIndex === 0 || !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex + this.parent.frozenRows : null;\n }\n }\n if (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) {\n rowIndex = parseInt(e.element.parentElement.getAttribute('data-rowindex'), 10);\n }\n if ((headerAction || (['ctrlPlusA', 'escape'].indexOf(e.keyArgs.action) === -1 &&\n e.keyArgs.action !== 'space' && rowIndex === prev.rowIndex && cellIndex === prev.cellIndex)) &&\n !this.selectionSettings.allowColumnSelection) {\n return;\n }\n if (this.parent.editSettings.showAddNewRow && this.parent.editSettings.newRowPosition === 'Top' &&\n (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling) && e.keyArgs.action === 'downArrow') {\n rowIndex--;\n }\n this.preventFocus = true;\n var columnIndex = this.getKeyColIndex(e);\n if (this.needColumnSelection) {\n cellIndex = columnIndex;\n }\n if (this.parent.element.classList.contains('e-gridcell-read') && (e.keyArgs.action === 'tab' || e.keyArgs.action === 'shiftTab'\n || e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow')) {\n var targetLabel = this.target.getAttribute('aria-label');\n targetLabel = this.target.innerHTML + ' column header ' + this.parent.getColumnByIndex(cellIndex).field;\n this.target.setAttribute('aria-label', targetLabel);\n }\n switch (e.keyArgs.action) {\n case 'downArrow':\n case 'upArrow':\n case 'enter':\n case 'shiftEnter':\n this.target = e.element;\n this.isKeyAction = true;\n this.applyDownUpKey(rowIndex, cellIndex);\n break;\n case 'rightArrow':\n case 'leftArrow':\n this.applyRightLeftKey(rowIndex, cellIndex);\n break;\n case 'shiftDown':\n case 'shiftUp':\n this.shiftDownKey(rowIndex, cellIndex);\n break;\n case 'shiftLeft':\n case 'shiftRight':\n this.applyShiftLeftRightKey(rowIndex, cellIndex);\n break;\n case 'home':\n case 'end':\n cellIndex = e.keyArgs.action === 'end' ? this.getLastColIndex(rowIndex) : 0;\n this.applyHomeEndKey(rowIndex, cellIndex);\n break;\n case 'ctrlHome':\n case 'ctrlEnd':\n this.applyCtrlHomeEndKey(rowIndex, cellIndex);\n break;\n case 'escape':\n this.clearSelection();\n if (this.parent.clipboardModule) {\n window.navigator['clipboard'].writeText('');\n }\n break;\n case 'ctrlPlusA':\n this.ctrlPlusA();\n break;\n case 'space':\n this.applySpaceSelection(e.element);\n break;\n case 'tab':\n if (this.parent.editSettings.allowNextRowEdit) {\n this.selectRow(rowIndex);\n }\n break;\n }\n this.needColumnSelection = false;\n this.preventFocus = false;\n this.positionBorders();\n if (this.parent.isFrozenGrid()) {\n this.showHideBorders('none', true);\n this.refreshFrozenBorders();\n }\n this.updateAutoFillPosition();\n };\n Selection.prototype.getKeyColIndex = function (e) {\n var uid;\n var index = null;\n var stackedHeader = e.element.querySelector('.e-stackedheadercelldiv');\n if (this.selectionSettings.allowColumnSelection && parentsUntil(e.element, 'e-columnheader')) {\n this.needColumnSelection = e.container.isHeader ? true : false;\n if (stackedHeader) {\n if (e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow') {\n return index;\n }\n uid = stackedHeader.getAttribute('e-mappinguid');\n var innerColumn = this.getstackedColumns(this.parent.getColumnByUid(uid).columns);\n var lastIndex = this.parent.getColumnIndexByUid(innerColumn[innerColumn.length - 1].uid);\n var firstIndex = this.parent.getColumnIndexByUid(innerColumn[0].uid);\n index = this.prevColIndex >= lastIndex ? firstIndex : lastIndex;\n }\n else {\n index = this.parent.getColumnIndexByUid(e.element\n .querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n }\n }\n return index;\n };\n /**\n * Apply ctrl + A key selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.ctrlPlusA = function () {\n if (this.isRowType() && !this.isSingleSel()) {\n this.selectRowsByRange(0, this.getCurrentBatchRecordChanges().length - 1);\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange({ rowIndex: 0, cellIndex: 0 }, { rowIndex: this.parent.getRows().length - 1, cellIndex: this.parent.getColumns().length - 1 });\n }\n };\n Selection.prototype.applySpaceSelection = function (target) {\n if (target.classList.contains('e-checkselectall')) {\n this.checkedTarget = target;\n this.checkSelectAll(this.checkedTarget);\n }\n else {\n if (target.classList.contains('e-checkselect')) {\n this.checkedTarget = target;\n this.checkSelect(this.checkedTarget);\n }\n }\n };\n Selection.prototype.applyDownUpKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n if (this.parent.isCheckBoxSelection && this.parent.checkAllRows === 'Check' && !this.selectionSettings.persistSelection &&\n !this.selectionSettings.checkboxOnly) {\n this.checkSelectAllAction(false);\n this.checkedTarget = null;\n }\n if (this.isRowType() && !this.selectionSettings.checkboxOnly) {\n if (this.parent.frozenRows) {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n else {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n };\n Selection.prototype.applyUpDown = function (rowIndex) {\n if (rowIndex < 0) {\n return;\n }\n if (!this.target) {\n this.target = this.parent.getRows()[0].children[this.parent.groupSettings.columns.length || 0];\n }\n var cIndex = parseInt(this.target.getAttribute(literals.dataColIndex), 10);\n var row = this.contentRenderer.getRowByIndex(rowIndex);\n if (row) {\n this.target = row.getElementsByClassName(literals.rowCell)[parseInt(cIndex.toString(), 10)];\n }\n this.addAttribute(this.target);\n if (this.parent.element.classList.contains('e-gridcell-read')) {\n var targetLabel = this.target.getAttribute('aria-label');\n targetLabel = this.target.innerHTML;\n this.target.setAttribute('aria-label', targetLabel);\n }\n };\n Selection.prototype.applyRightLeftKey = function (rowIndex, cellIndex) {\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n else if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n this.addAttribute(this.target);\n }\n };\n Selection.prototype.applyHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n else {\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n };\n /**\n * Apply shift+down key selection\n *\n * @param {number} rowIndex - specfies the rowIndex\n * @param {number} cellIndex - specifies the CellIndex\n * @returns {void}\n * @hidden\n */\n Selection.prototype.shiftDownKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.isRowType() && !this.isSingleSel()) {\n if (!isUndefined(this.prevRowIndex)) {\n this.selectRowsByRange(this.prevRowIndex, rowIndex);\n this.applyUpDown(rowIndex);\n }\n else if (this.isPartialSelection) {\n this.selectRow(rowIndex, true);\n }\n else {\n this.selectRow(0, true);\n }\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange(this.prevCIdxs || { rowIndex: 0, cellIndex: 0 }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.applyShiftLeftRightKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumnsByRange(this.prevColIndex, cellIndex);\n }\n else {\n this.selectCellsByRange(this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.getstackedColumns = function (column) {\n var innerColumnIndexes = [];\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[parseInt(i.toString(), 10)].columns) {\n this.getstackedColumns(column[parseInt(i.toString(), 10)].columns);\n }\n else {\n innerColumnIndexes.push(column[parseInt(i.toString(), 10)]);\n }\n }\n return innerColumnIndexes;\n };\n Selection.prototype.applyCtrlHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isRowType()) {\n this.selectRow(rowIndex, true);\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n };\n Selection.prototype.addRemoveClassesForRow = function (row, isAdd, clearAll) {\n var args = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n args[_i - 3] = arguments[_i];\n }\n if (row) {\n var cells = [].slice.call(row.getElementsByClassName(literals.rowCell));\n var detailIndentCell = row.querySelector('.e-detailrowcollapse') || row.querySelector('.e-detailrowexpand');\n var dragdropIndentCell = row.querySelector('.e-rowdragdrop');\n if (detailIndentCell) {\n cells.push(detailIndentCell);\n }\n if (dragdropIndentCell) {\n cells.push(dragdropIndentCell);\n }\n addRemoveActiveClasses.apply(void 0, [cells, isAdd].concat(args));\n }\n this.getRenderer().setSelection(row ? row.getAttribute('data-uid') : null, isAdd, clearAll);\n };\n Selection.prototype.isRowType = function () {\n return this.selectionSettings.mode === 'Row' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isCellType = function () {\n return this.selectionSettings.mode === 'Cell' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isSingleSel = function () {\n return this.selectionSettings.type === 'Single';\n };\n Selection.prototype.getRenderer = function () {\n if (isNullOrUndefined(this.contentRenderer)) {\n this.contentRenderer = this.factory.getRenderer(RenderType.Content);\n }\n return this.contentRenderer;\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} returns the Object\n */\n Selection.prototype.getSelectedRecords = function () {\n var selectedData = [];\n if (!this.selectionSettings.persistSelection && this.selectedRecords.length) {\n selectedData = this.parent.getRowsObject().filter(function (row) { return row.isSelected; })\n .map(function (m) { return m.data; });\n }\n else {\n selectedData = this.persistSelectedData;\n }\n return selectedData;\n };\n /**\n * Select the column by passing start column index\n *\n * @param {number} index - specifies the index\n * @returns {void}\n */\n Selection.prototype.selectColumn = function (index) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(index.toString(), 10)])) {\n return;\n }\n var column = gObj.getColumnByIndex(index);\n var selectedCol = gObj.getColumnHeaderByUid(column.uid);\n var isColSelected = selectedCol.classList.contains('e-columnselection');\n if ((!gObj.selectionSettings.allowColumnSelection)) {\n return;\n }\n var isMultiColumns = this.selectedColumnsIndexes.length > 1 &&\n this.selectedColumnsIndexes.indexOf(index) > -1;\n this.clearColDependency();\n if (!isColSelected || !this.selectionSettings.enableToggle || isMultiColumns) {\n var args = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(args, events.columnSelecting);\n if (args.cancel) {\n this.disableInteracted();\n return;\n }\n if (!(gObj.selectionSettings.enableToggle && index === this.prevColIndex && isColSelected) || isMultiColumns) {\n this.updateColSelection(selectedCol, index);\n }\n var selectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(index);\n };\n /**\n * Select the columns by passing start and end column index\n *\n * @param {number} startIndex - specifies the start index\n * @param {number} endIndex - specifies the end index\n * @returns {void}\n */\n Selection.prototype.selectColumnsByRange = function (startIndex, endIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var indexes = [];\n if (gObj.selectionSettings.type === 'Single' || isNullOrUndefined(endIndex)) {\n indexes[0] = startIndex;\n }\n else {\n var min = startIndex < endIndex;\n for (var i = startIndex; min ? i <= endIndex : i >= endIndex; min ? i++ : i--) {\n indexes.push(i);\n }\n }\n this.selectColumns(indexes);\n };\n /**\n * Select the columns by passing column indexes\n *\n * @param {number[]} columnIndexes - specifies the columnIndexes\n * @returns {void}\n */\n Selection.prototype.selectColumns = function (columnIndexes) {\n var gObj = this.parent;\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n columnIndexes = [columnIndexes[0]];\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n this.clearColDependency();\n var selectingArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n for (var i = 0, len = columnIndexes.length; i < len; i++) {\n this.updateColSelection(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(columnIndexes[parseInt(i.toString(), 10)]).uid), columnIndexes[parseInt(i.toString(), 10)]);\n }\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n this.updateColProps(columnIndexes[0]);\n };\n /**\n * Select the column with existing column by passing column index\n *\n * @param {number} startIndex - specifies the start index\n * @returns {void}\n */\n Selection.prototype.selectColumnWithExisting = function (startIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var newCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(startIndex).uid);\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n this.clearColDependency();\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n if (this.selectedColumnsIndexes.indexOf(startIndex) > -1) {\n this.clearColumnSelection(startIndex);\n }\n else {\n var selectingArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: gObj.getColumnByIndex(startIndex),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n this.updateColSelection(newCol, startIndex);\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n column: gObj.getColumnByIndex(startIndex),\n columnIndexes: this.selectedColumnsIndexes,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(startIndex);\n };\n /**\n * Clear the column selection\n *\n * @param {number} clearIndex - specifies the clearIndex\n * @returns {void}\n */\n Selection.prototype.clearColumnSelection = function (clearIndex) {\n if (this.isColumnSelected) {\n var gObj = this.parent;\n if (!isNullOrUndefined(clearIndex) && this.selectedColumnsIndexes.indexOf(clearIndex) === -1) {\n return;\n }\n var index = !isNullOrUndefined(clearIndex) ? clearIndex :\n this.selectedColumnsIndexes[this.selectedColumnsIndexes.length - 1];\n var column = gObj.getColumnByIndex(index);\n var selectedCol = gObj.getColumnHeaderByUid(column.uid);\n var deselectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted\n };\n var isCanceled = this.columnDeselect(deselectedArgs, events.columnDeselecting);\n if (isCanceled) {\n this.disableInteracted();\n return;\n }\n var selectedHeader = !isNullOrUndefined(clearIndex) ? [selectedCol] :\n [].slice.call(gObj.getHeaderContent().getElementsByClassName('e-columnselection'));\n var selectedCells = this.getSelectedColumnCells(clearIndex);\n for (var i = 0, len = selectedHeader.length; i < len; i++) {\n addRemoveActiveClasses([selectedHeader[parseInt(i.toString(), 10)]], false, 'e-columnselection');\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n addRemoveActiveClasses([selectedCells[parseInt(i.toString(), 10)]], false, 'e-columnselection');\n }\n if (!isNullOrUndefined(clearIndex)) {\n this.selectedColumnsIndexes.splice(this.selectedColumnsIndexes.indexOf(clearIndex), 1);\n this.parent.getColumns()[parseInt(clearIndex.toString(), 10)].isSelected = false;\n }\n else {\n this.columnDeselect(deselectedArgs, events.columnDeselected);\n this.selectedColumnsIndexes = [];\n this.isColumnSelected = false;\n this.parent.getColumns().filter(function (col) { return col.isSelected = false; });\n }\n }\n };\n Selection.prototype.getselectedCols = function () {\n var gObj = this.parent;\n var selectedCol;\n if (this.selectedColumnsIndexes.length > 1) {\n selectedCol = [];\n for (var i = 0; i < this.selectedColumnsIndexes.length; i++) {\n (selectedCol).push(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[parseInt(i.toString(), 10)]).uid));\n }\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[0]).uid);\n }\n return selectedCol;\n };\n Selection.prototype.getSelectedColumnCells = function (clearIndex) {\n var gObj = this.parent;\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows = isRowTemplate ? gObj.getRows() : gObj.getDataRows();\n var seletedcells = [];\n var selectionString = !isNullOrUndefined(clearIndex) ? '[data-colindex=\"' + clearIndex + '\"]' : '.e-columnselection';\n for (var i = 0, len = rows.length; i < len; i++) {\n seletedcells = seletedcells.concat([].slice.call(rows[parseInt(i.toString(), 10)].querySelectorAll(selectionString)));\n }\n return seletedcells;\n };\n Selection.prototype.columnDeselect = function (args, event) {\n if (event === 'columnDeselected') {\n delete args.cancel;\n }\n this.onActionComplete(args, event);\n return args.cancel;\n };\n Selection.prototype.updateColProps = function (startIndex) {\n this.prevColIndex = startIndex;\n this.isColumnSelected = this.selectedColumnsIndexes.length && true;\n };\n Selection.prototype.clearColDependency = function () {\n this.clearColumnSelection();\n this.selectedColumnsIndexes = [];\n };\n Selection.prototype.updateColSelection = function (selectedCol, startIndex) {\n if (isNullOrUndefined(this.parent.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows = isRowTemplate ? this.parent.getRows() : this.parent.getDataRows();\n this.selectedColumnsIndexes.push(startIndex);\n this.parent.getColumns()[parseInt(startIndex.toString(), 10)].isSelected = true;\n startIndex = startIndex + this.parent.getIndentCount();\n addRemoveActiveClasses([selectedCol], true, 'e-columnselection');\n for (var j = 0, len = rows.length; j < len; j++) {\n if (rows[parseInt(j.toString(), 10)].classList.contains(literals.row)) {\n if ((rows[parseInt(j.toString(), 10)].classList.contains(literals.editedRow)\n || rows[parseInt(j.toString(), 10)].classList.contains(literals.addedRow))\n && this.parent.editSettings.mode === 'Normal'\n && !isNullOrUndefined(rows[parseInt(j.toString(), 10)].querySelector('tr').childNodes[parseInt(startIndex.toString(), 10)])) {\n addRemoveActiveClasses([rows[parseInt(j.toString(), 10)].querySelector('tr').childNodes[parseInt(startIndex.toString(), 10)]], true, 'e-columnselection');\n }\n else {\n if (this.parent.isSpan && this.parent.isFrozenGrid()) {\n var cells = rows[parseInt(j.toString(), 10)].querySelectorAll('.e-rowcell');\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].getAttribute('aria-colindex') === selectedCol.getAttribute('aria-colindex')) {\n addRemoveActiveClasses([cells[parseInt(i.toString(), 10)]], true, 'e-columnselection');\n }\n }\n }\n else if (!isNullOrUndefined(rows[parseInt(j.toString(), 10)].childNodes[parseInt(startIndex.toString(), 10)])) {\n addRemoveActiveClasses([rows[parseInt(j.toString(), 10)].childNodes[parseInt(startIndex.toString(), 10)]], true, 'e-columnselection');\n }\n }\n }\n }\n };\n Selection.prototype.headerSelectionHandler = function (colIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n this.selectColumn(colIndex);\n }\n else if (this.isMultiShiftRequest) {\n this.selectColumnsByRange(isUndefined(this.prevColIndex) ? colIndex : this.prevColIndex, colIndex);\n }\n else {\n this.selectColumnWithExisting(colIndex);\n }\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.addEventListener_checkbox = function () {\n var _this = this;\n this.parent.on(events.dataReady, this.dataReady, this);\n this.onDataBoundFunction = this.onDataBound.bind(this);\n this.parent.addEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.on(events.refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.on(events.contentReady, this.checkBoxSelectionChanged, this);\n this.parent.on(events.beforeRefreshOnDataChange, this.initPerisistSelection, this);\n this.parent.on(events.onEmpty, this.setCheckAllForEmptyGrid, this);\n this.actionCompleteFunc = this.actionCompleteHandler.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.click, this.clickHandler, this);\n this.resizeEndFn = function () {\n _this.updateAutoFillPosition();\n _this.drawBorders();\n };\n this.resizeEndFn.bind(this);\n this.parent.addEventListener(events.resizeStop, this.resizeEndFn);\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.removeEventListener_checkbox = function () {\n this.parent.off(events.dataReady, this.dataReady);\n this.parent.removeEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.off(events.onEmpty, this.setCheckAllForEmptyGrid);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.beforeRefreshOnDataChange, this.initPerisistSelection);\n };\n Selection.prototype.setCheckAllForEmptyGrid = function () {\n var checkAllBox = this.getCheckAllBox();\n if (checkAllBox) {\n this.parent.isCheckBoxSelection = true;\n var spanEle = checkAllBox.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n };\n Selection.prototype.dataReady = function (e) {\n this.isHeaderCheckboxClicked = false;\n var isInfinitecroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfinitecroll) {\n this.disableUI = !this.parent.enableImmutableMode && !(e.requestType === 'save' && e['action'] === 'add');\n this.clearSelection();\n this.setCheckAllState();\n this.disableUI = false;\n }\n };\n Selection.prototype.actionCompleteHandler = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n };\n Selection.prototype.selectRowIndex = function (index) {\n this.parent.isSelectedRowIndexUpdating = true;\n if ((isNullOrUndefined(this.parent.selectedRowIndex) || this.parent.selectedRowIndex === -1) || !this.parent.enablePersistence) {\n this.parent.selectedRowIndex = index;\n }\n else {\n this.parent.selectedRowIndex = -1;\n }\n };\n Selection.prototype.disableInteracted = function () {\n this.isInteracted = false;\n };\n Selection.prototype.activeTarget = function () {\n this.actualTarget = this.isInteracted ? this.actualTarget : null;\n };\n return Selection;\n}());\nexport { Selection };\n","import { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { isActionPrevent } from '../base/util';\n/**\n * The `Search` module is used to handle search action.\n */\nvar Search = /** @class */ (function () {\n /**\n * Constructor for Grid search module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Search(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * Searches Grid records by given key.\n *\n * > You can customize the default search action by using [`searchSettings`](./searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n * @returns {void}\n */\n Search.prototype.search = function (searchString) {\n var gObj = this.parent;\n searchString = isNullOrUndefined(searchString) ? '' : searchString;\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.search, arg1: searchString });\n return;\n }\n if (searchString !== gObj.searchSettings.key) {\n // Check searchString is decimal or integer and parseFloat to remove trailing zeros\n /* eslint-disable-next-line */\n gObj.searchSettings.key = /^\\d+(\\.\\d+)?$/.test(searchString) ? parseFloat(searchString).toString() : searchString.toString();\n gObj.dataBind();\n }\n else if (this.refreshSearch) {\n gObj.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.searchComplete, this.onSearchComplete, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.actionCompleteFunc = this.onActionComplete.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.cancelBegin, this.cancelBeginEvent, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.searchComplete, this.onSearchComplete);\n this.parent.off(events.destroy, this.destroy);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.cancelBegin, this.cancelBeginEvent);\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Search.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @param {NotifyArgs} e - specfies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (!isNullOrUndefined(e.properties.key)) {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin, searchString: this.parent.searchSettings.key\n });\n }\n else {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin\n });\n }\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onSearchComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, {\n searchString: this.parent.searchSettings.key, requestType: 'searching', type: events.actionComplete\n }));\n };\n /**\n * The function used to store the requestType\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onActionComplete = function (e) {\n this.refreshSearch = e.requestType !== 'searching';\n };\n Search.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'searching') {\n this.parent.setProperties({ searchSettings: { key: '' } }, true);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Search.prototype.getModuleName = function () {\n return 'search';\n };\n return Search;\n}());\nexport { Search };\n","import { isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject, isGroupAdaptive, isActionPrevent, addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\n/**\n * The `ShowHide` module is used to control column visibility.\n */\nvar ShowHide = /** @class */ (function () {\n /**\n * Constructor for the show hide module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function ShowHide(parent) {\n this.colName = [];\n this.isShowHide = false;\n this.parent = parent;\n this.addEventListener();\n }\n ShowHide.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.batchCancel, handler: this.batchChanges },\n { event: events.batchCnfrmDlgCancel, handler: this.resetColumnState }\n ];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ShowHide.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n ShowHide.prototype.batchChanges = function () {\n if (this.isShowHide) {\n this.isShowHide = false;\n this.setVisible(this.colName, this.changedCol);\n this.changedCol = this.colName = [];\n }\n };\n /**\n * Shows a column by column name.\n *\n * @param {string|string[]} columnName - Defines a single or collection of column names to show.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n ShowHide.prototype.show = function (columnName, showBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, showBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].visible = true;\n }\n this.setVisible(columns);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} columnName - Defines a single or collection of column names to hide.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n ShowHide.prototype.hide = function (columnName, hideBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, hideBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].visible = false;\n }\n this.setVisible(columns);\n };\n ShowHide.prototype.getToggleFields = function (key) {\n var finalized = [];\n if (typeof key === 'string') {\n finalized = [key];\n }\n else {\n finalized = key;\n }\n return finalized;\n };\n ShowHide.prototype.getColumns = function (keys, getKeyBy) {\n var _this = this;\n var columns = iterateArrayOrObject(keys, function (key) {\n return iterateArrayOrObject(_this.parent.columnModel, function (item) {\n if (item[\"\" + getKeyBy] === key) {\n return item;\n }\n return undefined;\n })[0];\n });\n return columns;\n };\n ShowHide.prototype.batchActionPrevent = function (columns, changedStateColumns) {\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n if (isActionPrevent(this.parent)) {\n this.colName = columns;\n this.changedCol = changedStateColumns;\n this.parent.closeEdit();\n return false;\n }\n return true;\n };\n ShowHide.prototype.resetColumnState = function () {\n if (this.isShowHide) {\n for (var i = 0; i < this.colName.length; i++) {\n this.colName[parseInt(i.toString(), 10)].visible = !this.colName[parseInt(i.toString(), 10)].visible;\n }\n }\n };\n /**\n * Shows or hides columns by given column collection.\n *\n * @private\n * @param {Column[]} columns - Specifies the columns.\n * @param {Column[]} changedStateColumns - specifies the changedStateColumns\n * @returns {void}\n */\n ShowHide.prototype.setVisible = function (columns, changedStateColumns) {\n var _this = this;\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n this.isShowHide = true;\n if (!this.batchActionPrevent(columns, changedStateColumns)) {\n return;\n }\n changedStateColumns = (changedStateColumns.length > 0) ? changedStateColumns : columns;\n var args = {\n requestType: 'columnstate',\n cancel: false,\n columns: changedStateColumns\n };\n var cancel = 'cancel';\n if (this.parent.enableInfiniteScrolling && this.parent.allowGrouping\n && this.parent.groupModule.groupSettings.columns.length > 0) {\n this.parent.contentModule.visibleRows = [];\n }\n this.parent.trigger(events.actionBegin, args, function (showHideArgs) {\n var currentViewCols = _this.parent.getColumns();\n columns = isNullOrUndefined(columns) ? currentViewCols : columns;\n if (showHideArgs[\"\" + cancel]) {\n _this.parent.notify(events.resetColumns, { showHideArgs: showHideArgs });\n if (columns.length > 0) {\n columns[0].visible = true;\n }\n return;\n }\n if (isGroupAdaptive(_this.parent)) {\n _this.parent.contentModule.emptyVcRows();\n }\n var addedRow = _this.parent.element.querySelector('.e-addedrow');\n if (_this.parent.editSettings.showAddNewRow && addedRow) {\n remove(addedRow);\n if (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling) {\n _this.parent.isAddNewRow = true;\n }\n _this.parent.addNewRowFocus = true;\n _this.parent.isEdit = false;\n }\n if (_this.parent.allowSelection && _this.parent.getSelectedRecords().length &&\n !_this.parent.selectionSettings.persistSelection) {\n _this.parent.clearSelection();\n }\n if (_this.parent.enableColumnVirtualization) {\n var colsInCurrentView = columns.filter(function (col1) { return (currentViewCols.some(function (col2) { return col1.field === col2.field; })); });\n if (colsInCurrentView.length) {\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n }\n else {\n if (_this.parent.isFrozenGrid() && columns.length) {\n _this.parent.notify(events.refreshFrozenPosition, { isModeChg: true });\n }\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n var params = {\n requestType: 'columnstate',\n columns: changedStateColumns\n };\n _this.parent.trigger(events.actionComplete, params);\n var startAdd = !_this.parent.element.querySelector('.e-addedrow');\n if (_this.parent.editSettings.showAddNewRow && startAdd) {\n _this.parent.isEdit = false;\n _this.parent.addRecord();\n if (!(_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling)) {\n _this.parent.notify(events.showAddNewRowFocus, {});\n }\n }\n if (_this.parent.columnQueryMode !== 'All') {\n _this.parent.refresh();\n }\n });\n if (this.parent.autoFit && !this.parent.groupSettings.columns.length) {\n this.parent.preventAdjustColumns();\n }\n };\n return ShowHide;\n}());\nexport { ShowHide };\n","import { Browser, EventHandler } from '@syncfusion/ej2-base';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\nimport { formatUnit, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getScrollBarWidth, getUpdateUsingRaf } from '../base/util';\nimport { scroll, contentReady, uiUpdate, onEmpty, headerRefreshed, textWrapRefresh, virtualScrollEdit, infiniteScrollHandler, closeFilterDialog } from '../base/constant';\nimport { lazyLoadScrollHandler, checkScrollReset } from '../base/constant';\nimport { ColumnWidthService } from '../services/width-controller';\nimport * as literals from '../base/string-literals';\nimport * as events from '../base/constant';\n/**\n * The `Scroll` module is used to handle scrolling behaviour.\n */\nvar Scroll = /** @class */ (function () {\n /**\n * Constructor for the Grid scrolling.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Scroll(parent) {\n //To maintain scroll state on grid actions.\n this.previousValues = { top: 0, left: 0 };\n this.oneTimeReady = true;\n this.parent = parent;\n this.widthService = new ColumnWidthService(parent);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Scroll.prototype.getModuleName = function () {\n return 'scroll';\n };\n /**\n * @param {boolean} uiupdate - specifies the uiupdate\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setWidth = function (uiupdate) {\n this.parent.element.style.width = formatUnit(this.parent.width);\n if (uiupdate) {\n this.widthService.setWidthToColumns();\n }\n if (this.parent.toolbarModule && this.parent.toolbarModule.toolbar &&\n this.parent.toolbarModule.toolbar.element) {\n var tlbrElement = this.parent.toolbarModule.toolbar.element;\n var tlbrLeftElement = tlbrElement.querySelector('.e-toolbar-left');\n var tlbrCenterElement = tlbrElement.querySelector('.e-toolbar-center');\n var tlbrRightElement = tlbrElement.querySelector('.e-toolbar-right');\n var tlbrItems = tlbrElement.querySelector('.e-toolbar-items');\n var tlbrLeftWidth = tlbrLeftElement ? tlbrLeftElement.clientWidth : 0;\n var tlbrCenterWidth = tlbrCenterElement ? tlbrCenterElement.clientWidth : 0;\n var tlbrRightWidth = tlbrRightElement ? tlbrRightElement.clientWidth : 0;\n var tlbrItemsWidth = tlbrItems ? tlbrItems.clientWidth : 0;\n var tlbrWidth = tlbrElement ? tlbrElement.clientWidth : 0;\n if (!this.parent.enableAdaptiveUI || tlbrLeftWidth > tlbrWidth || tlbrCenterWidth > tlbrWidth || tlbrRightWidth > tlbrWidth ||\n tlbrItemsWidth > tlbrWidth) {\n this.parent.toolbarModule.toolbar.refreshOverflow();\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setHeight = function () {\n var mHdrHeight = 0;\n var content = this.parent.getContent().querySelector('.' + literals.content);\n var height = this.parent.height;\n if (this.parent.enableColumnVirtualization && this.parent.isFrozenGrid() && this.parent.height !== 'auto'\n && this.parent.height.toString().indexOf('%') < 0) {\n height = parseInt(height, 10) - Scroll.getScrollBarWidth();\n }\n if (!this.parent.enableVirtualization && this.parent.frozenRows && this.parent.height !== 'auto') {\n var tbody = this.parent.getHeaderContent()\n .querySelector(literals.tbody + ':not(.e-masked-tbody)');\n mHdrHeight = tbody ? tbody.offsetHeight : 0;\n if (tbody && mHdrHeight) {\n var add = tbody.getElementsByClassName(literals.addedRow).length;\n var height_1 = add * this.parent.getRowHeight();\n mHdrHeight -= height_1;\n }\n else if (!this.parent.isInitialLoad && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && this.parent.getHeaderContent().querySelector('.e-masked-table')) {\n height = parseInt(height, 10) - (this.parent.frozenRows * this.parent.getRowHeight());\n }\n content.style.height = formatUnit(height - mHdrHeight);\n }\n else {\n content.style.height = formatUnit(height);\n }\n this.ensureOverflow(content);\n if (this.parent.isFrozenGrid()) {\n this.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setPadding = function () {\n var content = this.parent.getHeaderContent();\n var scrollWidth = Scroll.getScrollBarWidth() - this.getThreshold();\n var cssProps = this.getCssProperties();\n content.querySelector('.' + literals.headerContent).style[cssProps.border] = scrollWidth > 0 ? '1px' : '0px';\n content.style[cssProps.padding] = scrollWidth > 0 ? scrollWidth + 'px' : '0px';\n };\n /**\n * @param {boolean} rtl - specifies the rtl\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.removePadding = function (rtl) {\n var cssProps = this.getCssProperties(rtl);\n var hDiv = this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n hDiv.style[cssProps.border] = '';\n hDiv.parentElement.style[cssProps.padding] = '';\n var footerDiv = this.parent.getFooterContent();\n if (footerDiv && footerDiv.classList.contains('e-footerpadding')) {\n footerDiv.classList.remove('e-footerpadding');\n }\n };\n /**\n * Refresh makes the Grid adoptable with the height of parent container.\n *\n * > The [`height`](./#height) must be set to 100%.\n *\n * @returns {void}\n */\n Scroll.prototype.refresh = function () {\n if (this.parent.height !== '100%') {\n return;\n }\n var content = this.parent.getContent();\n this.parent.element.style.height = '100%';\n var height = this.widthService.getSiblingsHeight(content);\n content.style.height = 'calc(100% - ' + height + 'px)'; //Set the height to the '.' + literals.gridContent;\n };\n Scroll.prototype.getThreshold = function () {\n /* Some browsers places the scroller outside the content,\n * hence the padding should be adjusted.*/\n var appName = Browser.info.name;\n if (appName === 'mozilla') {\n return 0.5;\n }\n return 1;\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(onEmpty, this.wireEvents, this);\n this.parent.on(contentReady, this.wireEvents, this);\n this.parent.on(uiUpdate, this.onPropertyChanged, this);\n this.parent.on(textWrapRefresh, this.wireEvents, this);\n this.parent.on(headerRefreshed, this.setScrollLeft, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(onEmpty, this.wireEvents);\n this.parent.off(contentReady, this.wireEvents);\n this.parent.off(uiUpdate, this.onPropertyChanged);\n this.parent.off(textWrapRefresh, this.wireEvents);\n this.parent.off(headerRefreshed, this.setScrollLeft);\n this.unwireEvents();\n };\n Scroll.prototype.unwireEvents = function () {\n if (this.parent.frozenRows && this.header) {\n EventHandler.remove(this.header, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(this.header, 'touchmove pointermove', this.onTouchScroll);\n }\n var mScrollBar = this.parent.getContent() ? this.parent.getContent().querySelector('.e-movablescrollbar') : null;\n if (this.parent.isFrozenGrid() && this.parent.enableColumnVirtualization) {\n if (mScrollBar) {\n EventHandler.remove(mScrollBar, 'scroll', this.onCustomScrollbarScroll);\n }\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(this.content, 'touchstart pointerdown', this.setPageXY);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.remove(this.content, 'touchmove pointermove', this.onTouchScroll);\n }\n }\n if (this.header) {\n EventHandler.remove(this.header, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(this.header, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(this.header, 'touchmove pointermove', this.onTouchScroll);\n }\n }\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.contentScrollHandler);\n }\n if (this.header) {\n EventHandler.remove(this.header, 'scroll', this.headerScrollHandler);\n }\n this.contentScrollHandler = null;\n this.headerScrollHandler = null;\n if (this.parent.aggregates.length && this.parent.getFooterContent()) {\n EventHandler.remove(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll);\n }\n };\n Scroll.prototype.setScrollLeft = function () {\n this.parent.getHeaderContent().querySelector('.' + literals.headerContent).scrollLeft = this.previousValues.left;\n };\n Scroll.prototype.onContentScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n var isHeader = element.classList.contains(literals.headerContent);\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n var target = e.target;\n if (_this.parent.frozenRows) {\n if (_this.content.scrollTop > 0 && _this.parent.frozenRows) {\n addClass([_this.parent.element], 'e-top-shadow');\n }\n else {\n removeClass([_this.parent.element], 'e-top-shadow');\n }\n }\n if (_this.parent.element.querySelectorAll('.e-leftfreeze,.e-fixedfreeze,.e-rightfreeze').length) {\n var errorFreeze = _this.parent.getContent().querySelectorAll('.e-freezeerror:not([style*=\"display: none\"])');\n var errorFixed = _this.parent.getContent().querySelectorAll('.e-fixederror:not([style*=\"display: none\"])');\n if (target.scrollLeft !== 0 && _this.parent.getVisibleFrozenLeftCount()) {\n addClass([_this.parent.element], 'e-left-shadow');\n }\n else {\n removeClass([_this.parent.element], 'e-left-shadow');\n }\n var widthVal = Math.round((_this.parent.enableRtl ? target.scrollWidth + target.scrollLeft : target.scrollWidth - target.scrollLeft) +\n (_this.parent.height === 'auto' ? 0 : 1));\n if (widthVal === target.offsetWidth && _this.parent.getVisibleFrozenRightCount()) {\n removeClass([_this.parent.element], 'e-right-shadow');\n }\n else {\n addClass([_this.parent.element], 'e-right-shadow');\n }\n var rows = [].slice.call(_this.parent.getContent().querySelectorAll('.e-row:not(.e-hiddenrow)'));\n if (((rows.length === 1 && errorFreeze.length) ||\n (_this.parent.element.querySelector('.e-freeze-autofill:not([style*=\"display: none\"])')) ||\n errorFixed.length) && target.scrollLeft !== _this.previousValues.left) {\n target.scrollLeft = _this.previousValues.left;\n return;\n }\n if (rows.length !== 1 && (errorFreeze.length || errorFixed.length) && target.scrollTop !== _this.previousValues.top) {\n target.scrollTop = _this.previousValues.top;\n return;\n }\n }\n var left = target.scrollLeft;\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling && (!_this.parent.isEdit\n || (_this.parent.editSettings.showAddNewRow && !_this.parent.element.querySelector('.e-editedrow')))) {\n _this.parent.notify(infiniteScrollHandler, { target: e.target, isLeft: _this.previousValues.left !== left });\n }\n if (_this.parent.groupSettings.columns.length && _this.parent.groupSettings.enableLazyLoading) {\n var isDown = _this.previousValues.top < _this.parent.getContent().firstElementChild.scrollTop;\n _this.parent.notify(lazyLoadScrollHandler, { scrollDown: isDown });\n }\n _this.parent.notify(virtualScrollEdit, {});\n var isFooter = target.classList.contains('e-summarycontent');\n if (_this.previousValues.left === left) {\n _this.previousValues.top = !isHeader ? _this.previousValues.top : target.scrollTop;\n return;\n }\n _this.parent.notify(closeFilterDialog, e);\n element.scrollLeft = left;\n if (isFooter) {\n _this.header.scrollLeft = left;\n }\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n };\n };\n Scroll.prototype.onCustomScrollbarScroll = function (cont, hdr) {\n var _this = this;\n var content = cont;\n var header = hdr;\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null) {\n return;\n }\n var target = e.target;\n var left = target.scrollLeft;\n if (_this.previousValues.left === left) {\n return;\n }\n content.scrollLeft = left;\n header.scrollLeft = left;\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n if (_this.parent.isDestroyed) {\n return;\n }\n };\n };\n Scroll.prototype.onTouchScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n var isFrozen = _this.parent.isFrozenGrid();\n var pageXY = _this.getPointXY(e);\n var left = element.scrollLeft + (_this.pageXY.x - pageXY.x);\n var mHdr = _this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n var mCont = _this.parent.getContent().querySelector('.' + literals.content);\n if (_this.previousValues.left === left || (left < 0 || (mHdr.scrollWidth - mHdr.clientWidth) < left)) {\n return;\n }\n e.preventDefault();\n mHdr.scrollLeft = left;\n mCont.scrollLeft = left;\n if (isFrozen && _this.parent.enableColumnVirtualization) {\n var scrollBar = _this.parent.getContent().querySelector('.e-movablescrollbar');\n scrollBar.scrollLeft = left;\n }\n _this.pageXY.x = pageXY.x;\n _this.previousValues.left = left;\n };\n };\n Scroll.prototype.setPageXY = function () {\n var _this = this;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n _this.pageXY = _this.getPointXY(e);\n };\n };\n Scroll.prototype.getPointXY = function (e) {\n var pageXY = { x: 0, y: 0 };\n if (e.touches && e.touches.length) {\n pageXY.x = e.touches[0].pageX;\n pageXY.y = e.touches[0].pageY;\n }\n else {\n pageXY.x = e.pageX;\n pageXY.y = e.pageY;\n }\n return pageXY;\n };\n Scroll.prototype.getScrollbleParent = function (node) {\n if (node === null) {\n return null;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parent = isNullOrUndefined(node.tagName) ? node.scrollingElement : node;\n var overflowY = document.defaultView.getComputedStyle(parent, null).overflowY;\n if (parent.scrollHeight > parent.clientHeight && overflowY !== 'hidden'\n && overflowY !== 'visible' || node.tagName === 'HTML' || node.tagName === 'BODY') {\n return node;\n }\n else {\n return this.getScrollbleParent(node.parentNode);\n }\n };\n /**\n * @param {boolean} isAdd - specifies whether adding/removing the event\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.addStickyListener = function (isAdd) {\n this.parentElement = this.getScrollbleParent(this.parent.element.parentElement);\n if (isAdd && this.parentElement) {\n this.eventElement = this.parentElement.tagName === 'HTML' || this.parentElement.tagName === 'BODY' ? document :\n this.parentElement;\n EventHandler.add(this.eventElement, 'scroll', this.makeStickyHeader, this);\n }\n else if (this.eventElement) {\n EventHandler.remove(this.eventElement, 'scroll', this.makeStickyHeader);\n this.eventElement = null;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.resizeFrozenRowBorder = function () {\n var div;\n if (!this.parent.element.querySelector('.e-frozenrow-border')) {\n div = this.parent.createElement('div', { className: 'e-frozenrow-border' });\n this.parent.element.insertBefore(div, this.parent.element.querySelector('.e-gridcontent'));\n }\n else {\n div = this.parent.element.querySelector('.e-frozenrow-border');\n }\n var scrollWidth = this.parent.height !== 'auto' ? Scroll.getScrollBarWidth() : 0;\n div.style.width = (this.parent.element.offsetWidth - scrollWidth) - 0.5 + 'px';\n };\n Scroll.prototype.wireEvents = function () {\n var _this = this;\n if (this.oneTimeReady) {\n var frzCols = this.parent.isFrozenGrid();\n this.content = this.parent.getContent().querySelector('.' + literals.content);\n this.header = this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n var mScrollBar = this.parent.getContent().querySelector('.e-movablescrollbar');\n if (this.parent.frozenRows && this.header && this.content) {\n EventHandler.add(this.header, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(this.header, 'touchmove pointermove', this.onTouchScroll(this.content), this);\n }\n if (frzCols && mScrollBar && this.parent.enableColumnVirtualization) {\n EventHandler.add(mScrollBar, 'scroll', this.onCustomScrollbarScroll(this.content, this.header), this);\n EventHandler.add(this.content, 'scroll', this.onCustomScrollbarScroll(mScrollBar, this.header), this);\n EventHandler.add(this.header, 'scroll', this.onCustomScrollbarScroll(mScrollBar, this.content), this);\n EventHandler.add(this.header, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(this.header, 'touchmove pointermove', this.onTouchScroll(this.content), this);\n EventHandler.add(this.content, 'touchstart pointerdown', this.setPageXY(), this);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.add(this.content, 'touchmove pointermove', this.onTouchScroll(this.header), this);\n }\n }\n this.contentScrollHandler = this.onContentScroll(this.header);\n this.headerScrollHandler = this.onContentScroll(this.content);\n EventHandler.add(this.content, 'scroll', this.contentScrollHandler, this);\n EventHandler.add(this.header, 'scroll', this.headerScrollHandler, this);\n if (this.parent.aggregates.length) {\n EventHandler.add(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll(this.content), this);\n }\n if (this.parent.enableStickyHeader) {\n this.addStickyListener(true);\n }\n this.refresh();\n this.oneTimeReady = false;\n }\n var table = this.parent.getContentTable();\n var sLeft;\n var sHeight;\n var clientHeight;\n getUpdateUsingRaf(function () {\n sLeft = _this.header.scrollLeft;\n sHeight = table.scrollHeight;\n clientHeight = _this.parent.getContent().clientHeight;\n }, function () {\n var args = { cancel: false };\n _this.parent.notify(checkScrollReset, args);\n if (sHeight < clientHeight && _this.parent.height !== 'auto') {\n _this.setLastRowCell();\n }\n if (_this.parent.frozenRows) {\n _this.resizeFrozenRowBorder();\n }\n if (!_this.parent.enableVirtualization && !_this.parent.enableInfiniteScrolling) {\n if (!args.cancel) {\n _this.header.scrollLeft = _this.previousValues.left;\n _this.content.scrollLeft = _this.previousValues.left;\n _this.content.scrollTop = _this.previousValues.top;\n }\n }\n if (!_this.parent.enableColumnVirtualization) {\n _this.content.scrollLeft = sLeft;\n if (_this.parent.isFrozenGrid()) {\n _this.previousValues.left = sLeft;\n }\n }\n });\n this.parent.isPreventScrollEvent = false;\n };\n /**\n * @returns {void} returns void\n * @hidden\n */\n Scroll.prototype.setLastRowCell = function () {\n var table = this.parent.getContentTable();\n if (table.querySelector('tr:nth-last-child(2)')) {\n removeClass(table.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n if (this.parent.isSpan) {\n removeClass(table.querySelectorAll('.e-row-span-lastrowcell'), 'e-lastrowcell');\n }\n if (this.parent.editSettings.showAddNewRow && this.parent.editSettings.newRowPosition === 'Bottom') {\n addClass(table.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n }\n }\n addClass(table.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n if (this.parent.isSpan) {\n addClass(table.querySelectorAll('.e-row-span-lastrowcell'), 'e-lastrowcell');\n }\n };\n /**\n * @param {boolean} rtl - specifies the rtl\n * @returns {ScrollCss} returns the ScrollCss\n * @hidden\n */\n Scroll.prototype.getCssProperties = function (rtl) {\n var css = {};\n var enableRtl = isNullOrUndefined(rtl) ? this.parent.enableRtl : rtl;\n css.border = enableRtl ? 'borderLeftWidth' : 'borderRightWidth';\n css.padding = enableRtl ? 'paddingLeft' : 'paddingRight';\n return css;\n };\n Scroll.prototype.ensureOverflow = function (content) {\n content.style.overflowY = this.parent.height === 'auto' ? 'auto' : 'scroll';\n };\n Scroll.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n this.setPadding();\n this.oneTimeReady = true;\n if (this.parent.height === 'auto') {\n this.removePadding();\n }\n this.wireEvents();\n this.setHeight();\n var width = 'width';\n this.setWidth(!isNullOrUndefined(e.properties[\"\" + width]));\n };\n Scroll.prototype.makeStickyHeader = function () {\n if (this.parent.enableStickyHeader && this.parent.element && this.parent.getContent()) {\n var contentRect = this.parent.getContent().getClientRects()[0];\n if (contentRect) {\n var headerEle = this.parent.getHeaderContent();\n var toolbarEle = this.parent.element.querySelector('.e-toolbar');\n var groupHeaderEle = this.parent.element.querySelector('.e-groupdroparea');\n var height = headerEle.offsetHeight + (toolbarEle ? toolbarEle.offsetHeight : 0) +\n (groupHeaderEle ? groupHeaderEle.offsetHeight : 0);\n var parentTop = this.parentElement.getClientRects()[0].top;\n var top_1 = contentRect.top - (parentTop < 0 ? 0 : parentTop);\n var left = contentRect.left;\n var colMenuEle = document.body.querySelector('#' + this.parent.element.id + '_columnmenu');\n if (top_1 < height && contentRect.bottom > 0) {\n headerEle.classList.add('e-sticky');\n var elemTop = 0;\n if (groupHeaderEle && this.parent.groupSettings.showDropArea) {\n this.setSticky(groupHeaderEle, elemTop, contentRect.width, left, true);\n elemTop += groupHeaderEle.getClientRects()[0].height;\n }\n if (toolbarEle) {\n this.setSticky(toolbarEle, elemTop, contentRect.width, left, true);\n elemTop += toolbarEle.getClientRects()[0].height;\n }\n this.setSticky(headerEle, elemTop, contentRect.width, left, true);\n if (!isNullOrUndefined(colMenuEle)) {\n colMenuEle.style.position = 'fixed';\n colMenuEle.style.top = height + 'px';\n }\n }\n else {\n if (headerEle.classList.contains('e-sticky')) {\n this.setSticky(headerEle, null, null, null, false);\n if (toolbarEle) {\n this.setSticky(toolbarEle, null, null, null, false);\n }\n if (groupHeaderEle) {\n this.setSticky(groupHeaderEle, null, null, null, false);\n }\n var ccDlg = this.parent.element.querySelector('.e-ccdlg');\n if (ccDlg) {\n ccDlg.classList.remove('e-sticky');\n }\n if (!isNullOrUndefined(colMenuEle)) {\n colMenuEle.style.position = 'absolute';\n var topStyle = contentRect.top - parentTop;\n colMenuEle.style.top = topStyle + 'px';\n }\n }\n }\n this.parent.notify(events.stickyScrollComplete, {});\n }\n }\n };\n Scroll.prototype.setSticky = function (ele, top, width, left, isAdd) {\n if (isAdd) {\n ele.style.width = width + 'px';\n ele.classList.add('e-sticky');\n }\n else {\n ele.classList.remove('e-sticky');\n }\n ele.style.top = top != null ? top + 'px' : '';\n ele.style.left = left !== null ? parseInt(ele.style.left, 10) !== left ? left + 'px' : ele.style.left : '';\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.removeEventListener();\n //Remove Dom event\n var cont = this.parent.getContent().querySelector('.' + literals.content);\n EventHandler.remove(cont, 'scroll', this.onContentScroll);\n if (this.parent.enableStickyHeader) {\n this.addStickyListener(false);\n }\n //Remove padding\n this.removePadding();\n removeClass([this.parent.getHeaderContent().querySelector('.' + literals.headerContent)], literals.headerContent);\n removeClass([cont], literals.content);\n //Remove height\n cont.style.height = '';\n //Remove width\n this.parent.element.style.width = '';\n };\n /**\n * Function to get the scrollbar width of the browser.\n *\n * @returns {number} return the width\n * @hidden\n */\n Scroll.getScrollBarWidth = function () {\n return getScrollBarWidth();\n };\n return Scroll;\n}());\nexport { Scroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { compile } from '@syncfusion/ej2-base';\nimport { getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { Property, Collection, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the Grid's aggregate column.\n */\nvar AggregateColumn = /** @class */ (function (_super) {\n __extends(AggregateColumn, _super);\n function AggregateColumn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.templateFn = {};\n return _this;\n }\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the Function\n * @hidden\n */\n AggregateColumn.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Object} helper - specifies the helper\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setTemplate = function (helper) {\n if (helper === void 0) { helper = {}; }\n if (this.footerTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.Summary)] = { fn: compile(this.footerTemplate, helper),\n property: 'footerTemplate' };\n }\n if (this.groupFooterTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.GroupSummary)] = { fn: compile(this.groupFooterTemplate, helper),\n property: 'groupFooterTemplate' };\n }\n if (this.groupCaptionTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.CaptionSummary)] = { fn: compile(this.groupCaptionTemplate, helper),\n property: 'groupCaptionTemplate' };\n }\n };\n /**\n * @param {CellType} type - specifies the cell type\n * @returns {Object} returns the object\n * @hidden\n */\n AggregateColumn.prototype.getTemplate = function (type) {\n return this.templateFn[getEnumValue(CellType, type)];\n };\n /**\n * @param {Object} prop - returns the Object\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setPropertiesSilent = function (prop) {\n this.setProperties(prop, true);\n };\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"columnName\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"format\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupFooterTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupCaptionTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"customAggregate\", void 0);\n return AggregateColumn;\n}(ChildProperty));\nexport { AggregateColumn };\n/**\n * Configures the aggregate rows.\n */\nvar AggregateRow = /** @class */ (function (_super) {\n __extends(AggregateRow, _super);\n function AggregateRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], AggregateColumn)\n ], AggregateRow.prototype, \"columns\", void 0);\n return AggregateRow;\n}(ChildProperty));\nexport { AggregateRow };\n","import { Browser, remove, EventHandler, isUndefined, closest, classList } from '@syncfusion/ej2-base';\nimport { parentsUntil, isGroupAdaptive } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * The `Clipboard` module is used to handle clipboard copy action.\n */\nvar Clipboard = /** @class */ (function () {\n /**\n * Constructor for the Grid clipboard module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @hidden\n */\n function Clipboard(parent, serviceLocator) {\n this.copyContent = '';\n this.isSelect = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.keyPressed, this.keyDownHandler, this);\n this.parent.on(events.click, this.clickHandler, this);\n this.parent.on(events.onEmpty, this.initialEnd, this);\n EventHandler.add(this.parent.element, 'keydown', this.pasteHandler, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.keyPressed, this.keyDownHandler);\n this.parent.off(events.contentReady, this.initialEnd);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.onEmpty, this.initialEnd);\n EventHandler.remove(this.parent.element, 'keydown', this.pasteHandler);\n };\n Clipboard.prototype.clickHandler = function (e) {\n var target = e.target;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n target = parentsUntil(target, 'e-rowcell');\n };\n Clipboard.prototype.pasteHandler = function (e) {\n var _this = this;\n var grid = this.parent;\n var isMacLike = /(Mac)/i.test(navigator.platform);\n var selectedRowCellIndexes = this.parent.getSelectedRowCellIndexes();\n if (e.keyCode === 67 && isMacLike && e.metaKey && !grid.isEdit) {\n this.copy();\n }\n if (selectedRowCellIndexes.length && e.keyCode === 86 && ((!isMacLike && e.ctrlKey) || (isMacLike && e.metaKey)) && !grid.isEdit) {\n var target = closest(document.activeElement, '.' + literals.rowCell);\n if (!this.clipBoardTextArea || !target || !grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow') {\n return;\n }\n this.activeElement = document.activeElement;\n var x_1 = window.scrollX;\n var y_1 = window.scrollY;\n this.clipBoardTextArea.focus();\n setTimeout(function () {\n _this.activeElement.focus();\n window.scrollTo(x_1, y_1);\n _this.paste(_this.clipBoardTextArea.value, selectedRowCellIndexes[0].rowIndex, selectedRowCellIndexes[0].cellIndexes[0]);\n }, isMacLike ? 100 : 10);\n }\n };\n /**\n * Paste data from clipboard to selected cells.\n *\n * @param {boolean} data - Specifies the date for paste.\n * @param {boolean} rowIndex - Specifies the row index.\n * @param {boolean} colIndex - Specifies the column index.\n * @returns {void}\n */\n Clipboard.prototype.paste = function (data, rowIndex, colIndex) {\n var grid = this.parent;\n var cIdx = colIndex;\n var rIdx = rowIndex;\n var col;\n var value;\n var isAvail;\n var rows = data.split('\\n');\n var cols;\n for (var r = 0; r < rows.length; r++) {\n cols = rows[parseInt(r.toString(), 10)].split('\\t');\n cIdx = colIndex;\n if ((r === rows.length - 1 && rows[parseInt(r.toString(), 10)] === '') || isUndefined(grid.getRowByIndex(rIdx))) {\n cIdx++;\n break;\n }\n for (var c = 0; c < cols.length; c++) {\n isAvail = grid.getCellFromIndex(rIdx, cIdx);\n if (!isAvail) {\n cIdx++;\n break;\n }\n col = grid.getColumnByIndex(cIdx);\n value = col.getParser() ? col.getParser()(cols[parseInt(c.toString(), 10)]) : cols[parseInt(c.toString(), 10)];\n if (col.allowEditing && !col.isPrimaryKey && !col.template) {\n var args = {\n column: col,\n data: value,\n rowIndex: rIdx\n };\n this.parent.trigger(events.beforePaste, args);\n rIdx = args.rowIndex;\n if (!args.cancel) {\n if (grid.editModule) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.data));\n }\n else {\n grid.editModule.updateCell(rIdx, col.field, args.data);\n }\n }\n }\n }\n cIdx++;\n }\n rIdx++;\n }\n grid.selectionModule.selectCellsByRange({ rowIndex: rowIndex, cellIndex: colIndex }, { rowIndex: rIdx - 1, cellIndex: cIdx - 1 });\n var cell = this.parent.getCellFromIndex(rIdx - 1, cIdx - 1);\n if (cell) {\n classList(cell, ['e-focus', 'e-focused'], []);\n }\n this.clipBoardTextArea.value = '';\n };\n Clipboard.prototype.initialEnd = function () {\n this.l10n = this.serviceLocator.getService('localization');\n this.parent.off(events.contentReady, this.initialEnd);\n this.clipBoardTextArea = this.parent.createElement('textarea', {\n className: 'e-clipboard',\n styles: 'opacity: 0',\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('ClipBoard') }\n });\n this.parent.element.appendChild(this.clipBoardTextArea);\n };\n Clipboard.prototype.keyDownHandler = function (e) {\n if (e.action === 'ctrlPlusC') {\n this.copy();\n }\n else if (e.action === 'ctrlShiftPlusH') {\n this.copy(true);\n }\n };\n Clipboard.prototype.setCopyData = function (withHeader) {\n if (window.getSelection().toString() === '') {\n this.clipBoardTextArea.value = this.copyContent = '';\n var rows = this.parent.getDataRows();\n if (this.parent.selectionSettings.mode !== 'Cell') {\n var selectedIndexes = this.parent.getSelectedRowIndexes().sort(function (a, b) { return a - b; });\n if (withHeader) {\n var headerTextArray = [];\n for (var i = 0; i < this.parent.getVisibleColumns().length; i++) {\n headerTextArray[parseInt(i.toString(), 10)] = this.parent\n .getVisibleColumns()[parseInt(i.toString(), 10)].headerText;\n }\n this.getCopyData(headerTextArray, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < selectedIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var leftCols = [];\n var idx = selectedIndexes[parseInt(i.toString(), 10)];\n if (!isGroupAdaptive(this.parent) && (this.parent.enableVirtualization ||\n (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) ||\n (this.parent.groupSettings.columns.length && this.parent.groupSettings.enableLazyLoading))) {\n idx = rows.map(function (m) { return m.getAttribute('data-rowindex'); }).indexOf(selectedIndexes[parseInt(i.toString(), 10)].toString());\n }\n leftCols.push.apply(leftCols, [].slice.call(rows[parseInt(idx.toString(), 10)].querySelectorAll('.e-rowcell:not(.e-hide)')));\n this.getCopyData(leftCols, false, '\\t', withHeader);\n }\n }\n else {\n var obj = this.checkBoxSelection();\n if (obj.status) {\n if (withHeader) {\n var headers = [];\n for (var i = 0; i < obj.colIndexes.length; i++) {\n var colHeader = this.parent.getColumnHeaderByIndex(obj.colIndexes[parseInt(i.toString(), 10)]);\n if (!colHeader.classList.contains('e-hide')) {\n headers.push(colHeader);\n }\n }\n this.getCopyData(headers, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < obj.rowIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var cells = [].slice.call(rows[obj.rowIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-cellselectionbackground:not(.e-hide)'));\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n this.getCopyData([].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground')), true, '\\n', withHeader);\n }\n }\n var args = {\n data: this.copyContent,\n cancel: false\n };\n this.parent.trigger(events.beforeCopy, args);\n if (args.cancel) {\n return;\n }\n this.clipBoardTextArea.value = this.copyContent = args.data;\n if (!Browser.userAgent.match(/ipad|ipod|iphone/i)) {\n this.clipBoardTextArea.select();\n }\n else {\n this.clipBoardTextArea.setSelectionRange(0, this.clipBoardTextArea.value.length);\n }\n this.isSelect = true;\n }\n };\n Clipboard.prototype.getCopyData = function (cells, isCell, splitKey, withHeader) {\n var isElement = typeof cells[0] !== 'string';\n for (var j = 0; j < cells.length; j++) {\n if (withHeader && isCell) {\n var colIdx = parseInt(cells[parseInt(j.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n this.copyContent += this.parent.getColumns()[parseInt(colIdx.toString(), 10)].headerText + '\\n';\n }\n if (isElement) {\n if (!cells[parseInt(j.toString(), 10)].classList.contains('e-hide')) {\n this.copyContent += cells[parseInt(j.toString(), 10)].innerText;\n }\n }\n else {\n this.copyContent += cells[parseInt(j.toString(), 10)];\n }\n if (j < cells.length - 1) {\n this.copyContent += splitKey;\n }\n }\n };\n /**\n * Copy selected rows or cells data into clipboard.\n *\n * @returns {void}\n * @param {boolean} withHeader - Specifies whether the column header data need to be copied or not.\n */\n Clipboard.prototype.copy = function (withHeader) {\n if (document.queryCommandSupported('copy') && this.clipBoardTextArea) {\n this.setCopyData(withHeader);\n document.execCommand('copy');\n this.clipBoardTextArea.blur();\n }\n if (this.isSelect) {\n window.getSelection().removeAllRanges();\n this.isSelect = false;\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Clipboard.prototype.getModuleName = function () {\n return 'clipboard';\n };\n /**\n * To destroy the clipboard\n *\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.destroy = function () {\n this.removeEventListener();\n if (this.clipBoardTextArea) {\n remove(this.clipBoardTextArea);\n this.clipBoardTextArea = null;\n }\n };\n Clipboard.prototype.checkBoxSelection = function () {\n var gridObj = this.parent;\n var obj = { status: false };\n if (gridObj.selectionSettings.mode === 'Cell') {\n var rowCellIndxes = gridObj.getSelectedRowCellIndexes();\n var str = void 0;\n var rowIndexes = [];\n var i = void 0;\n for (i = 0; i < rowCellIndxes.length; i++) {\n if (rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.length) {\n rowIndexes.push(rowCellIndxes[parseInt(i.toString(), 10)].rowIndex);\n }\n if (rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.length) {\n if (!str) {\n str = JSON.stringify(rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.sort());\n }\n if (str !== JSON.stringify(rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.sort())) {\n break;\n }\n }\n }\n rowIndexes.sort(function (a, b) { return a - b; });\n if (i === rowCellIndxes.length) {\n obj = { status: true, rowIndexes: rowIndexes, colIndexes: rowCellIndxes[0].cellIndexes };\n }\n }\n return obj;\n };\n return Clipboard;\n}());\nexport { Clipboard };\n","/**\n *\n * `Logger` class\n */\nimport { isNullOrUndefined, L10n, isUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil, DataManager } from '@syncfusion/ej2-data';\nvar BASE_DOC_URL = 'https://ej2.syncfusion.com/documentation/grid';\nvar DOC_URL = 'https://ej2.syncfusion.com/documentation/';\nvar WARNING = '[EJ2Grid.Warning]';\nvar ERROR = '[EJ2Grid.Error]';\nvar INFO = '[EJ2Grid.Info]';\nvar Logger = /** @class */ (function () {\n function Logger(parent) {\n this.parent = parent;\n this.parent.on('initial-end', this.patchadaptor, this);\n }\n Logger.prototype.getModuleName = function () {\n return 'logger';\n };\n Logger.prototype.log = function (types, args) {\n if (!(types instanceof Array)) {\n types = [types];\n }\n var type = types;\n for (var i = 0; i < type.length; i++) {\n var item = detailLists[type[parseInt(i.toString(), 10)]];\n var cOp = item.check(args, this.parent);\n if (cOp.success) {\n // eslint-disable-next-line no-console\n console[item.logType](item.generateMessage(args, this.parent, cOp.options));\n }\n }\n };\n Logger.prototype.patchadaptor = function () {\n var adaptor = this.parent.getDataModule().dataManager.adaptor;\n var original = adaptor.beforeSend;\n if (original) {\n adaptor.beforeSend = function (dm, request, settings) {\n original.call(adaptor, dm, request, settings);\n };\n }\n };\n Logger.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('initial-end', this.patchadaptor);\n };\n return Logger;\n}());\nexport { Logger };\nexport var detailLists = {\n // eslint-disable-next-line camelcase\n module_missing: {\n type: 'module_missing',\n logType: 'warn',\n check: function (args, parent) {\n var injected = parent.getInjectedModules().map(function (m) { return m.prototype.getModuleName(); });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var modules = parent.requiredModules().map(function (m) { return m.member; })\n .filter(function (name) { return injected.indexOf(name) === -1; });\n return { success: modules.filter(function (m) { return m !== 'resize'; }).length > 0, options: modules };\n },\n generateMessage: function (args, parent, modules) {\n modules = modules.filter(function (m) { return m !== 'resize'; })\n .reduce(function (prev, cur) { return prev + (\"* \" + cur + \"\\n\"); }, '');\n return WARNING + ': MODULES MISSING\\n' + 'The following modules are not injected:.\\n' +\n (\"\" + modules) +\n (\"Refer to \" + BASE_DOC_URL + \"/module.html for documentation on importing feature modules.\");\n }\n },\n // eslint-disable-next-line camelcase\n promise_enabled: {\n type: 'promise_enabled',\n logType: 'error',\n check: function () {\n return { success: typeof Promise === 'undefined' };\n },\n generateMessage: function () {\n return ERROR + ': PROMISE UNDEFINED\\n' +\n 'Promise object is not present in the global environment,' +\n 'please use polyfil to support Promise object in your environment.\\n' +\n (\"Refer to \" + DOC_URL + \"/base/browser.html?#required-polyfills for more information.\");\n }\n },\n // eslint-disable-next-line camelcase\n primary_column_missing: {\n type: 'primary_column_missing',\n logType: 'warn',\n check: function (args, parent) {\n return { success: parent.enableColumnVirtualization\n ? parent.getPrimaryKeyFieldNames().length === 0\n : parent.getColumns().filter(function (column) { return column.isPrimaryKey; }).length === 0 };\n },\n generateMessage: function () {\n return WARNING + ': PRIMARY KEY MISSING\\n' + 'Editing is enabled but primary key column is not specified.\\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/api-column.html?#isprimarykey for documentation on providing primary key columns.\");\n }\n },\n // eslint-disable-next-line camelcase\n selection_key_missing: {\n type: 'selection_key_missing',\n logType: 'warn',\n check: function (args, parent) {\n return { success: parent.selectionSettings.persistSelection &&\n parent.getColumns().filter(function (column) { return column.isPrimaryKey; }).length === 0 };\n },\n generateMessage: function () {\n return WARNING + ': PRIMARY KEY MISSING\\n' +\n 'selectionSettings.persistSelection property is enabled. It requires one primary key column to persist selection.\\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/api-column.html?#isprimarykey for documentation on providing primary key columns.\");\n }\n },\n actionfailure: {\n type: 'actionfailure',\n logType: 'error',\n check: function () {\n return { success: true };\n },\n generateMessage: function (args, parent) {\n var message = '';\n var formatError = formatErrorHandler(args, parent);\n var ajaxError = ajaxErrorHandler(args, parent);\n if (ajaxError !== '') {\n message = ajaxError;\n }\n else if (formatError !== '') {\n message = formatError;\n }\n else {\n message = args.error;\n }\n return WARNING + ': ' + message;\n }\n },\n // eslint-disable-next-line camelcase\n locale_missing: {\n type: 'locale_missing',\n logType: 'warn',\n check: function (args, parent) {\n var lObj = DataUtil.getObject(\"locale.\" + parent.locale + \".grid\", L10n);\n return { success: parent.locale !== 'en-US' && isNullOrUndefined(lObj) };\n },\n generateMessage: function (args, parent) {\n return WARNING + ': LOCALE CONFIG MISSING\\n' + (\"Locale configuration for '\" + parent.locale + \"' is not provided.\\n\") +\n (\"Refer to \" + BASE_DOC_URL + \"/globalization-and-localization.html?#localization \\n for documentation on setting locale configuration.\");\n }\n },\n limitation: {\n type: 'limitation',\n logType: 'warn',\n check: function (args, parent) {\n var name = args;\n var opt;\n switch (name) {\n case 'freeze':\n opt = {\n success: parent.allowGrouping || !isUndefined(parent.detailTemplate) || !isUndefined(parent.childGrid)\n || !isUndefined(parent.rowTemplate) || parent.enableVirtualization,\n options: { name: 'freeze' }\n };\n break;\n case 'virtualization':\n opt = {\n success: !isUndefined(parent.detailTemplate) || !isUndefined(parent.childGrid) || parent.frozenRows !== 0\n || parent.frozenColumns !== 0,\n options: { name: 'virtualization' }\n };\n break;\n default:\n opt = { success: false };\n break;\n }\n return opt;\n },\n generateMessage: function (args, parent, options) {\n var name = options.name;\n var opt;\n switch (name) {\n case 'freeze':\n opt = 'Frozen rows and columns do not support the following features:\\n' +\n '* Virtualization\\n' +\n '* Row Template\\n' +\n '* Details Template\\n' +\n '* Hierarchy Grid\\n' +\n '* Grouping';\n break;\n case 'virtualization':\n opt = 'Virtualization does not support the following features.\\n' +\n '* Freeze rows and columns.\\n' +\n '* Details Template.\\n' +\n '* Hierarchy Grid.\\n';\n break;\n default:\n opt = '';\n break;\n }\n return WARNING + (\": \" + name.toUpperCase() + \" LIMITATIONS\\n\") + opt;\n }\n },\n // eslint-disable-next-line camelcase\n check_datasource_columns: {\n type: 'check_datasource_columns',\n logType: 'warn',\n check: function (args, parent) {\n return { success: !(parent.columns.length ||\n (parent.dataSource instanceof DataManager) || parent.dataSource.length) };\n },\n generateMessage: function () {\n return WARNING + ': GRID CONFIG MISSING\\n' + 'dataSource and columns are not provided in the grid. ' +\n 'At least one of either must be provided for grid configuration.\\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/columns.html for documentation on configuring the grid data and columns.\");\n }\n },\n // eslint-disable-next-line camelcase\n virtual_height: {\n type: 'virtual_height',\n logType: 'error',\n check: function (args, parent) {\n return { success: isNullOrUndefined(parent.height) || parent.height === 'auto' };\n },\n generateMessage: function () {\n return ERROR + ': GRID HEIGHT MISSING \\n' + 'height property is required to use virtualization.\\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/virtual.html for documentation on configuring the virtual grid.\");\n }\n },\n // eslint-disable-next-line camelcase\n grid_remote_edit: {\n type: 'grid_remote_edit',\n logType: 'error',\n check: function (args) {\n return { success: Array.isArray(args) || Array.isArray(args.result) };\n },\n generateMessage: function () {\n return ERROR + ': RETRUN VALUE MISSING \\n' +\n 'Remote service returns invalid data. \\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/edit.html for documentation on configuring editing with remote data.\");\n }\n },\n // eslint-disable-next-line camelcase\n grid_sort_comparer: {\n type: 'grid_sort_comparer',\n logType: 'warn',\n check: function (args, parent) {\n return { success: parent.getDataModule().isRemote() };\n },\n generateMessage: function () {\n return WARNING + ': SORT COMPARER NOT WORKING \\n' + 'Sort comparer will not work with remote data.' +\n (\"Refer to \" + BASE_DOC_URL + \"/sorting/#custom-sort-comparer for documentation on using the sort comparer.\");\n }\n },\n // eslint-disable-next-line camelcase\n resize_min_max: {\n type: 'resize_min_max',\n logType: 'info',\n check: function (args) {\n return { success: (args.column.minWidth && args.column.minWidth >= args.width) ||\n (args.column.maxWidth && args.column.maxWidth <= args.width) };\n },\n generateMessage: function () {\n return INFO + ': RESIZING COLUMN REACHED MIN OR MAX \\n' + 'The column resizing width is at its min or max.';\n }\n },\n // eslint-disable-next-line camelcase\n action_disabled_column: {\n type: 'action_disabled_column',\n logType: 'info',\n check: function (args) {\n var success = true;\n var fn;\n switch (args.moduleName) {\n case 'reorder':\n if (isNullOrUndefined(args.destColumn)) {\n fn = \"reordering action is disabled for the \" + args.column.headerText + \" column\";\n }\n else {\n fn = \"reordering action is disabled for the \" + (args.column.allowReordering ?\n args.destColumn.headerText : args.column.headerText) + \" column\";\n }\n break;\n case 'group':\n fn = \"grouping action is disabled for the \" + args.columnName + \" column.\";\n break;\n case 'filter':\n fn = \"filtering action is disabled for the \" + args.columnName + \" column.\";\n break;\n case 'sort':\n fn = \"sorting action is disabled for the \" + args.columnName + \" column.\";\n break;\n }\n return { success: success, options: { fn: fn } };\n },\n generateMessage: function (args, parent, options) {\n return INFO + (\": ACTION DISABLED \\n \" + options.fn);\n }\n },\n // eslint-disable-next-line camelcase\n exporting_begin: {\n type: 'exporting_begin',\n logType: 'info',\n check: function (args) {\n return { success: true, options: { args: args } };\n },\n generateMessage: function (args, parent, options) {\n return INFO + (\": EXPORTNIG INPROGRESS \\n Grid \" + options.args + \"ing is in progress\");\n }\n },\n // eslint-disable-next-line camelcase\n exporting_complete: {\n type: 'exporting_complete',\n logType: 'info',\n check: function (args) {\n return { success: true, options: { args: args } };\n },\n generateMessage: function (args, parent, options) {\n return INFO + (\": EXPORTNIG COMPLETED \\n Grid \" + options.args + \"ing is complete\");\n }\n },\n // eslint-disable-next-line camelcase\n foreign_key_failure: {\n type: 'foreign_key_failure',\n logType: 'error',\n check: function () {\n return { success: true };\n },\n generateMessage: function () {\n return ERROR + ': FOREIGNKEY CONFIG \\n Grid foreign key column needs a valid data source/service.' +\n (\"Refer to \" + BASE_DOC_URL + \"/columns/#foreign-key-column for documentation on configuring foreign key columns.\");\n }\n },\n // eslint-disable-next-line camelcase\n initial_action: {\n type: 'initial_action',\n logType: 'error',\n check: function (args) {\n var success = true;\n var fn;\n switch (args.moduleName) {\n case 'group':\n fn = \"The \" + args.columnName + \" column is not available in the grid's column model.\" +\n 'Please provide a valid field name to group the column';\n break;\n case 'filter':\n fn = \"The \" + args.columnName + \" column is not available in the grid's column model.\" +\n 'Please provide a valid field name to filter the column.';\n break;\n case 'sort':\n fn = \"The \" + args.columnName + \" column is not available in the grid's column model.\" +\n 'Please provide a valid field name to sort the column.';\n break;\n }\n return { success: success, options: { fn: fn } };\n },\n generateMessage: function (args, parent, options) {\n return ERROR + (\": INITIAL ACTION FAILURE \\n \" + options.fn);\n }\n },\n // eslint-disable-next-line camelcase\n frozen_rows_columns: {\n type: 'frozen_rows_columns',\n logType: 'error',\n check: function (args, parent) {\n return { success: parent.getColumns().length <= parent.frozenColumns\n || (parent.currentViewData.length && parent.frozenRows >= parent.currentViewData.length) };\n },\n generateMessage: function (args, parent) {\n return ERROR + (\": OUT OF RANGE ERROR-\\n \" + (parent.getColumns().length <= parent.frozenColumns ? 'FROZEN COLUMNS,' : '')) +\n ((parent.frozenRows >= parent.currentViewData.length ? 'FROZEN ROWS' : '') + \" invalid\");\n }\n },\n // eslint-disable-next-line camelcase\n column_type_missing: {\n type: 'column_type_missing',\n logType: 'error',\n check: function (args) {\n return { success: isNullOrUndefined(args.column.type), options: args.column.headerText };\n },\n generateMessage: function (args, parent, options) {\n return ERROR + (\": COLUMN TYPE MISSING-\\n \" + options + \" column type was invalid or not defined.\") +\n (\"Please go through below help link: \" + DOC_URL + \"/grid/columns/#column-type\");\n }\n },\n // eslint-disable-next-line camelcase\n datasource_syntax_mismatch: {\n type: 'datasource_syntax_mismatch',\n logType: 'warn',\n check: function (args) {\n return { success: args.dataState.dataSource && !(args.dataState.dataSource instanceof DataManager ||\n 'result' in args.dataState.dataSource || args.dataState.dataSource instanceof Array) &&\n !(isNullOrUndefined(args.dataState.dataStateChange)) };\n },\n generateMessage: function () {\n return WARNING + ': DATASOURCE SYNTAX WARNING\\n' +\n 'DataSource should be in the form of {result: Object[], count: number}' +\n 'when dataStateChangeEvent used';\n }\n }\n};\nvar formatErrorHandler = function (args) {\n var error = args.error;\n if (error.indexOf && error.indexOf('Format options') !== 0) {\n return '';\n }\n return 'INVALID FORMAT\\n' +\n 'For more information, refer to the following documentation links:\\n' +\n (\"Number format: \" + DOC_URL + \"/base/intl.html?#supported-format-string.\\n\") +\n (\"Date format: \" + DOC_URL + \"/base/intl.html?#manipulating-datetime.\\n\") +\n (\"Message: \" + error);\n};\nvar ajaxErrorHandler = function (args) {\n var error = DataUtil.getObject('error.error', args);\n if (isNullOrUndefined(error)) {\n return '';\n }\n var jsonResult = '';\n try {\n jsonResult = JSON.parse(error.responseText);\n }\n catch (_a) {\n jsonResult = '';\n }\n return 'XMLHTTPREQUEST FAILED\\n' +\n (\"Url: \" + error.responseURL + \"\\n\") +\n (\"Status: \" + error.status + \" - \" + error.statusText + \"\\n\") +\n (\"\" + (jsonResult !== '' ? 'Message: ' + jsonResult : ''));\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isNullOrUndefined, setValue, getValue, defaultCurrencyCode } from '@syncfusion/ej2-base';\nimport { Component, ChildProperty, Browser, closest, extend } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, append, remove, classList, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { Property, Collection, Complex, Event, NotifyPropertyChanges, L10n } from '@syncfusion/ej2-base';\nimport { EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { createSpinner, hideSpinner, showSpinner, Tooltip } from '@syncfusion/ej2-popups';\nimport { iterateArrayOrObject, prepareColumns, parentsUntil, wrap, templateCompiler, isGroupAdaptive, refreshForeignData, getScrollBarWidth } from './util';\nimport { getRowHeight, setColumnIndex, Global, ispercentageWidth, getNumberFormat, getTransformValues } from './util';\nimport { setRowElements, resetRowIndex, compareChanges, getCellByColAndRowIndex, performComplexDataOperation } from './util';\nimport * as events from '../base/constant';\nimport { Render } from '../renderer/render';\nimport { Column } from '../models/column';\nimport { RenderType } from './enum';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { CellRendererFactory } from '../services/cell-render-factory';\nimport { ServiceLocator } from '../services/service-locator';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RendererFactory } from '../services/renderer-factory';\nimport { ColumnWidthService } from '../services/width-controller';\nimport { AriaService } from '../services/aria-service';\nimport { FocusStrategy } from '../services/focus-strategy';\nimport { PageSettings } from '../models/page-settings';\nimport { ColumnChooserSettings } from '../models/column-chooser-settings';\nimport { Selection } from '../actions/selection';\nimport { Search } from '../actions/search';\nimport { ShowHide } from '../actions/show-hide';\nimport { Scroll } from '../actions/scroll';\nimport { Print } from '../actions/print';\nimport { AggregateRow } from '../models/aggregate';\nimport { Clipboard } from '../actions/clipboard';\nimport { Logger } from '../actions/logger';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\n/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @class */ (function (_super) {\n __extends(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n __decorate([\n Property(false)\n ], SortDescriptor.prototype, \"isFromGroup\", void 0);\n return SortDescriptor;\n}(ChildProperty));\nexport { SortDescriptor };\n/**\n * Configures the sorting behavior of Grid.\n */\nvar SortSettings = /** @class */ (function (_super) {\n __extends(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\nexport { SortSettings };\n/**\n * Represents the predicate for the filter column.\n */\nvar Predicate = /** @class */ (function (_super) {\n __extends(Predicate, _super);\n function Predicate() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Predicate.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"matchCase\", void 0);\n __decorate([\n Property(false)\n ], Predicate.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"predicate\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualFilterValue\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualOperator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ejpredicate\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"uid\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"isForeignKey\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"condition\", void 0);\n return Predicate;\n}(ChildProperty));\nexport { Predicate };\n/**\n * Configures the infinite scroll behavior of Grid.\n */\nvar InfiniteScrollSettings = /** @class */ (function (_super) {\n __extends(InfiniteScrollSettings, _super);\n function InfiniteScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], InfiniteScrollSettings.prototype, \"enableCache\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"maxBlocks\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"initialBlocks\", void 0);\n return InfiniteScrollSettings;\n}(ChildProperty));\nexport { InfiniteScrollSettings };\n/**\n * Configures the filtering behavior of the Grid.\n */\nvar FilterSettings = /** @class */ (function (_super) {\n __extends(FilterSettings, _super);\n function FilterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Predicate)\n ], FilterSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('FilterBar')\n ], FilterSettings.prototype, \"type\", void 0);\n __decorate([\n Property('OnEnter')\n ], FilterSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], FilterSettings.prototype, \"showFilterBarStatus\", void 0);\n __decorate([\n Property(1500)\n ], FilterSettings.prototype, \"immediateModeDelay\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"operators\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Property(50)\n ], FilterSettings.prototype, \"itemsCount\", void 0);\n __decorate([\n Property('Shimmer')\n ], FilterSettings.prototype, \"loadingIndicator\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"enableCaseSensitivity\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"showFilterBarOperator\", void 0);\n return FilterSettings;\n}(ChildProperty));\nexport { FilterSettings };\n/**\n * Configures the selection behavior of the Grid.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Row')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Flow')\n ], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate([\n Property('Single')\n ], SelectionSettings.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"checkboxOnly\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate([\n Property('Default')\n ], SelectionSettings.prototype, \"checkboxMode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enableSimpleMultiRowSelection\", void 0);\n __decorate([\n Property(true)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"allowColumnSelection\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Configures the search behavior of the Grid.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], SearchSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('')\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], SearchSettings.prototype, \"ignoreAccent\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n/**\n * Configures the row drop settings of the Grid.\n */\nvar RowDropSettings = /** @class */ (function (_super) {\n __extends(RowDropSettings, _super);\n function RowDropSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RowDropSettings.prototype, \"targetID\", void 0);\n return RowDropSettings;\n}(ChildProperty));\nexport { RowDropSettings };\n/**\n * Configures the text wrap settings of the Grid.\n */\nvar TextWrapSettings = /** @class */ (function (_super) {\n __extends(TextWrapSettings, _super);\n function TextWrapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Both')\n ], TextWrapSettings.prototype, \"wrapMode\", void 0);\n return TextWrapSettings;\n}(ChildProperty));\nexport { TextWrapSettings };\n/**\n * Configures the resize behavior of the Grid.\n */\nvar ResizeSettings = /** @class */ (function (_super) {\n __extends(ResizeSettings, _super);\n function ResizeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Normal')\n ], ResizeSettings.prototype, \"mode\", void 0);\n return ResizeSettings;\n}(ChildProperty));\nexport { ResizeSettings };\n/**\n * Configures the group behavior of the Grid.\n */\nvar GroupSettings = /** @class */ (function (_super) {\n __extends(GroupSettings, _super);\n function GroupSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showDropArea\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showToggleButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showGroupedColumn\", void 0);\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showUngroupButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"disablePageWiseAggregates\", void 0);\n __decorate([\n Property([])\n ], GroupSettings.prototype, \"columns\", void 0);\n __decorate([\n Property()\n ], GroupSettings.prototype, \"captionTemplate\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"enableLazyLoading\", void 0);\n return GroupSettings;\n}(ChildProperty));\nexport { GroupSettings };\n/**\n * Configures the edit behavior of the Grid.\n */\nvar EditSettings = /** @class */ (function (_super) {\n __extends(EditSettings, _super);\n function EditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property('Normal')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"allowEditOnDblClick\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"showConfirmDialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n __decorate([\n Property()\n ], EditSettings.prototype, \"template\", void 0);\n __decorate([\n Property()\n ], EditSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property()\n ], EditSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", void 0);\n __decorate([\n Property({})\n ], EditSettings.prototype, \"dialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showAddNewRow\", void 0);\n return EditSettings;\n}(ChildProperty));\nexport { EditSettings };\n/**\n * Configures the Loading Indicator of the Grid.\n */\nvar LoadingIndicator = /** @class */ (function (_super) {\n __extends(LoadingIndicator, _super);\n function LoadingIndicator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Spinner')\n ], LoadingIndicator.prototype, \"indicatorType\", void 0);\n return LoadingIndicator;\n}(ChildProperty));\nexport { LoadingIndicator };\n/**\n * Represents the Grid component.\n * ```html\n *
\n * \n * ```\n */\nvar Grid = /** @class */ (function (_super) {\n __extends(Grid, _super);\n /**\n * Constructor for creating the component\n *\n * @param {GridModel} options - specifies the options\n * @param {string | HTMLElement} element - specifies the element\n * @hidden\n */\n function Grid(options, element) {\n var _this_1 = _super.call(this, options, element) || this;\n _this_1.isPreventScrollEvent = false;\n _this_1.inViewIndexes = [];\n _this_1.keyA = false;\n _this_1.frozenRightCount = 0;\n _this_1.freezeColumnRefresh = true;\n _this_1.rightcount = 0;\n _this_1.frozenLeftCount = 0;\n _this_1.leftcount = 0;\n _this_1.tablesCount = 1;\n _this_1.movableCount = 0;\n _this_1.movablecount = 0;\n _this_1.fixedcount = 0;\n _this_1.fixedCount = 0;\n _this_1.visibleFrozenLeft = 0;\n _this_1.visibleFrozenFixed = 0;\n _this_1.isPreparedFrozenColumns = false;\n _this_1.visibleFrozenRight = 0;\n _this_1.visibleMovable = 0;\n _this_1.frozenLeftColumns = [];\n _this_1.frozenRightColumns = [];\n _this_1.movableColumns = [];\n _this_1.fixedColumns = [];\n _this_1.stackedLeft = [];\n _this_1.stackedRight = [];\n _this_1.stackedFixed = [];\n _this_1.stackedMovable = [];\n _this_1.stackedarrayLeft = [];\n _this_1.stackedarrayRight = [];\n _this_1.stackedarrayFixed = [];\n _this_1.stackedarrayMovable = [];\n _this_1.media = {};\n _this_1.autoFitColumnsResize = false;\n /** @hidden */\n _this_1.tableIndex = 0;\n _this_1.componentRefresh = Component.prototype.refresh;\n _this_1.isChangeDataSourceCall = false;\n _this_1.mergedColumns = false;\n /** @hidden */\n _this_1.isVirtualAdaptive = false;\n /** @hidden */\n /**\n * * If `requireTemplateRef` is set to false in the load event, then the template element can't be accessed in grid queryCellInfo, and rowDataBound events.\n * * By default, React's grid queryCellInfo and rowDataBound events allow access to the template element.\n * * Avoid accessing the template elements in the grid queryCellInfo and rowDataBound events to improve rendering performance by setting this value as false.\n *\n * @default true\n */\n _this_1.requireTemplateRef = true;\n /** @hidden */\n _this_1.vRows = [];\n /** @hidden */\n _this_1.vcRows = [];\n /** @hidden */\n _this_1.vGroupOffsets = {};\n /** @hidden */\n _this_1.rowUid = 0;\n /** @hidden */\n _this_1.translateX = 0;\n /** @hidden */\n _this_1.isManualRefresh = false;\n /** @hidden */\n _this_1.isAutoFitColumns = false;\n /** @hidden */\n _this_1.enableDeepCompare = false;\n /** @hidden */\n _this_1.totalDataRecordsCount = 0;\n /** @hidden */\n _this_1.disableSelectedRecords = [];\n /** @hidden */\n _this_1.partialSelectedRecords = [];\n /** @hidden */\n _this_1.isSpan = false;\n /** @hidden */\n _this_1.islazyloadRequest = false;\n /** @hidden */\n _this_1.isAddNewRow = false;\n /** @hidden */\n _this_1.addNewRowFocus = true;\n /** @hidden */\n _this_1.lockcolPositionCount = 0;\n /** @hidden */\n _this_1.prevPageMoving = false;\n /** @hidden */\n _this_1.pageTemplateChange = false;\n /** @hidden */\n _this_1.isAutoGen = false;\n /** @hidden */\n _this_1.isAutoGenerateColumns = false;\n _this_1.mediaBindInstance = {};\n /** @hidden */\n _this_1.commandDelIndex = undefined;\n /** @hidden */\n _this_1.asyncTimeOut = 50;\n /** @hidden */\n _this_1.isExportGrid = false;\n _this_1.enableLogger = false;\n _this_1.needsID = true;\n Grid_1.Inject(Selection);\n setValue('mergePersistData', _this_1.mergePersistGridData, _this_1);\n return _this_1;\n }\n Grid_1 = Grid;\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} returns the persist data\n */\n Grid.prototype.getPersistData = function () {\n var keyEntity = ['pageSettings', 'sortSettings',\n 'filterSettings', 'groupSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'scrollPosition'];\n var ignoreOnPersist = {\n pageSettings: ['template', 'pageSizes', 'enableQueryString', 'totalRecordsCount', 'pageCount'],\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent'],\n groupSettings: ['showDropArea', 'showToggleButton', 'showGroupedColumn', 'showUngroupButton',\n 'disablePageWiseAggregates', 'hideCaptionCount'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: [], scrollPosition: []\n };\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[parseInt(i.toString(), 10)]];\n for (var _i = 0, _a = ignoreOnPersist[keyEntity[parseInt(i.toString(), 10)]]; _i < _a.length; _i++) {\n var val = _a[_i];\n delete currentObject[\"\" + val];\n }\n }\n var temp = this.pageSettings.template;\n var settings = Object.assign({ template: undefined }, this.pageSettings);\n this.setProperties({ pageSettings: settings }, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n delete this.groupSettings['properties']['captionTemplate'];\n }\n this.pageTemplateChange = !isNullOrUndefined(this.pagerTemplate);\n var persistData = this.addOnPersist(keyEntity);\n settings.template = temp;\n this.setProperties({ pageSettings: settings }, true);\n return persistData;\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} Returns the module Declaration\n * @hidden\n */\n Grid.prototype.requiredModules = function () {\n this.setFrozenCount();\n this.enableInfiniteAggrgate();\n var modules = [];\n if (this.isDestroyed) {\n return modules;\n }\n if (this.allowFiltering) {\n modules.push({\n member: 'filter',\n args: [this, this.filterSettings, this.serviceLocator],\n name: 'Filter'\n });\n }\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport',\n args: [this, this.serviceLocator],\n name: 'ExcelExport'\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this],\n name: 'PdfExport'\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this, this.sortSettings, this.sortedColumns, this.serviceLocator],\n name: 'Sort'\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings],\n name: 'Page'\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this, this.selectionSettings, this.serviceLocator],\n name: 'Selection'\n });\n }\n if (this.resizeCheck()) {\n modules.push({\n member: 'resize',\n args: [this],\n name: 'Resize'\n });\n }\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this],\n name: 'Reorder'\n });\n }\n if (this.allowRowDragAndDrop) {\n modules.push({\n member: 'rowDragAndDrop',\n args: [this],\n name: 'RowDD'\n });\n }\n if (this.allowGrouping) {\n modules.push({\n member: 'group',\n args: [this, this.groupSettings, this.sortedColumns, this.serviceLocator],\n name: 'Group'\n });\n }\n if (this.aggregates.length) {\n modules.push({ member: 'aggregate', args: [this, this.serviceLocator], name: 'Aggregate' });\n }\n if (this.isDetail()) {\n modules.push({\n member: 'detailRow',\n args: [this, this.serviceLocator],\n name: 'DetailRow'\n });\n }\n if (this.toolbar || this.toolbarTemplate) {\n modules.push({\n member: 'toolbar',\n args: [this, this.serviceLocator],\n name: 'Toolbar'\n });\n }\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n modules.push({\n member: 'virtualscroll',\n args: [this, this.serviceLocator],\n name: 'VirtualScroll'\n });\n }\n if (this.getFrozenColumns() || this.frozenRows || this.frozenRightCount || this.frozenLeftCount) {\n modules.push({ member: 'freeze', args: [this, this.serviceLocator], name: 'Freeze' });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this, this.serviceLocator],\n name: 'CommandColumn'\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowDeleting || this.editSettings.allowEditing) {\n modules.push({\n member: 'edit',\n args: [this, this.serviceLocator],\n name: 'Edit'\n });\n }\n this.extendRequiredModules(modules);\n return modules;\n };\n Grid.prototype.extendRequiredModules = function (modules) {\n if (this.enableInfiniteScrolling) {\n modules.push({\n member: 'infiniteScroll',\n args: [this, this.serviceLocator],\n name: 'InfiniteScroll'\n });\n }\n if (this.groupSettings.enableLazyLoading) {\n modules.push({\n member: 'lazyLoadGroup',\n args: [this, this.serviceLocator],\n name: 'LazyLoadGroup'\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this, this.serviceLocator],\n name: 'ContextMenu'\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu',\n args: [this, this.serviceLocator],\n name: 'ColumnMenu'\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'columnChooser',\n args: [this, this.serviceLocator],\n name: 'ColumnChooser'\n });\n }\n if (this.isForeignKeyEnabled(this.columns)) {\n modules.push({ member: 'foreignKey', args: [this, this.serviceLocator], name: 'ForeignKey' });\n }\n if (this.enableLogger) {\n modules.push({ member: 'logger', args: [this], name: 'Logger' });\n }\n };\n Grid.prototype.resizeCheck = function () {\n var autoFitColumns = this.getColumns().filter(function (c) { return c.autoFit === true; }).length ? true : false;\n if (!isNullOrUndefined(this.columnModel) && this.columnModel.length && !(this.columnModel[0] instanceof Column)) {\n this.columnModel = [];\n }\n var columnMenu = this.showColumnMenu && (!this.columnMenuItems || this.columnMenuItems\n .filter(function (c) { return c === 'AutoFit' || c === 'AutoFitAll'; }).length) ? true : false;\n var contextMenu = this.contextMenuItems && this.contextMenuItems\n .filter(function (c) { return c === 'AutoFit' || c === 'AutoFitAll'; }).length ? true : false;\n return this.allowResizing || this.autoFitColumnsResize || autoFitColumns || columnMenu || contextMenu;\n };\n /**\n * For internal use only - Initialize the event handler;\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.preRender = function () {\n this.serviceLocator = new ServiceLocator;\n this.initProperties();\n this.initializeServices();\n };\n Grid.prototype.initProperties = function () {\n this.isInitial = true;\n this.sortedColumns = [];\n this.inViewIndexes = [];\n this.mediaCol = [];\n this.isInitialLoad = false;\n this.allowServerDataBinding = false;\n this.ignoreCollectionWatch = true;\n this.mergeCells = {};\n this.isEdit = false;\n this.checkAllRows = 'None';\n this.isCheckBoxSelection = false;\n this.isPersistSelection = false;\n this.componentRefresh = Component.prototype.refresh;\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith', wildCard: 'wildcard',\n isNull: 'isnull', notNull: 'notnull', like: 'like'\n };\n this.defaultLocale = {\n EmptyRecord: 'No records to display',\n True: 'true',\n False: 'false',\n InvalidFilterMessage: 'Invalid Filter Data',\n GroupDropArea: 'Drag a column header here to group its column',\n UnGroup: 'Click here to ungroup',\n UnGroupButton: 'Click here to ungroup',\n GroupDisable: 'Grouping is disabled for this column',\n FilterbarTitle: '\\'s filter bar cell',\n EmptyDataSourceError: 'DataSource must not be empty at initial load since columns are generated from dataSource in AutoGenerate Column Grid',\n // Toolbar Items\n Add: 'Add',\n Edit: 'Edit',\n Cancel: 'Cancel',\n Update: 'Update',\n Delete: 'Delete',\n Print: 'Print',\n Pdfexport: 'PDF Export',\n Excelexport: 'Excel Export',\n Wordexport: 'Word Export',\n Csvexport: 'CSV Export',\n Search: 'Search',\n Columnchooser: 'Columns',\n Save: 'Save',\n Item: 'item',\n Items: 'items',\n EditOperationAlert: 'No records selected for edit operation',\n DeleteOperationAlert: 'No records selected for delete operation',\n SaveButton: 'Save',\n OKButton: 'OK',\n CancelButton: 'Cancel',\n EditFormTitle: 'Details of ',\n AddFormTitle: 'Add New Record',\n BatchSaveConfirm: 'Are you sure you want to save changes?',\n BatchSaveLostChanges: 'Unsaved changes will be lost. Are you sure you want to continue?',\n ConfirmDelete: 'Are you sure you want to Delete Record?',\n CancelEdit: 'Are you sure you want to Cancel the changes?',\n ChooseColumns: 'Choose Column',\n ColumnMenu: 'Column Menu',\n SearchColumns: 'search columns',\n Matchs: 'No matches found',\n FilterButton: 'Filter',\n ClearButton: 'Clear',\n StartsWith: 'Starts With',\n NotStartsWith: 'Does Not Start With',\n Like: 'Like',\n EndsWith: 'Ends With',\n NotEndsWith: 'Does Not End With',\n Contains: 'Contains',\n NotContains: 'Does Not Contain',\n IsNull: 'Null',\n NotNull: 'Not Null',\n IsEmpty: 'Empty',\n IsNotEmpty: 'Not Empty',\n Equal: 'Equal',\n NotEqual: 'Not Equal',\n LessThan: 'Less Than',\n LessThanOrEqual: 'Less Than Or Equal',\n GreaterThan: 'Greater Than',\n GreaterThanOrEqual: 'Greater Than Or Equal',\n ChooseDate: 'Choose a Date',\n EnterValue: 'Enter the value',\n Copy: 'Copy',\n Group: 'Group by this column',\n Ungroup: 'Ungroup by this column',\n GroupButton: 'Group button',\n UnGroupAria: 'ungroup button',\n GroupSeperator: 'Separator for the grouped columns',\n UnGroupIcon: 'ungroup the grouped column ',\n GroupedSortIcon: 'sort the grouped column ',\n GroupedDrag: 'Drag the grouped column',\n GroupCaption: ' is groupcaption cell',\n CheckBoxLabel: 'checkbox',\n SelectAllCheckbox: 'Select all checkbox',\n SelectRow: 'Select row',\n autoFitAll: 'Autofit all columns',\n autoFit: 'Autofit this column',\n AutoFitAll: 'Autofit all columns',\n AutoFit: 'Autofit this column',\n Export: 'Export',\n FirstPage: 'First Page',\n LastPage: 'Last Page',\n PreviousPage: 'Previous Page',\n NextPage: 'Next Page',\n SortAscending: 'Sort Ascending',\n SortDescending: 'Sort Descending',\n EditRecord: 'Edit Record',\n DeleteRecord: 'Delete Record',\n FilterMenu: 'Filter',\n SelectAll: 'Select All',\n AddCurrentSelection: 'Add current selection to filter',\n Blanks: 'Blanks',\n FilterTrue: 'True',\n FilterFalse: 'False',\n NoResult: 'No matches found',\n ClearFilter: 'Clear Filter',\n Clear: 'Clear',\n NumberFilter: 'Number Filters',\n TextFilter: 'Text Filters',\n DateFilter: 'Date Filters',\n DateTimeFilter: 'DateTime Filters',\n MatchCase: 'Match Case',\n Between: 'Between',\n CustomFilter: 'Custom Filter',\n CustomFilterPlaceHolder: 'Enter the value',\n CustomFilterDatePlaceHolder: 'Choose a date',\n AND: 'AND',\n OR: 'OR',\n ShowRowsWhere: 'Show rows where:',\n ToolbarMenuDialogARIA: 'Toolbar menu dialog',\n FilterMenuDialogARIA: 'Filter menu',\n ExcelFilterDialogARIA: 'Excel filter',\n CheckBoxFilterDialogARIA: 'Checkbox filter',\n DialogEditARIA: 'Edit dialog',\n ColumnMenuDialogARIA: 'Column menu dialog',\n CustomFilterDialogARIA: 'Customer filter dialog',\n SortAtoZ: 'Sort A to Z',\n SortZtoA: 'Sort Z to A',\n SortByOldest: 'Sort by Oldest',\n SortByNewest: 'Sort by Newest',\n SortSmallestToLargest: 'Sort Smallest to Largest',\n SortLargestToSmallest: 'Sort Largest to Smallest',\n Sort: 'Sort',\n FilterDescription: 'Press Alt Down to open filter Menu',\n SortDescription: 'Press Enter to sort',\n ColumnMenuDescription: 'Press Alt Down to open Column Menu',\n GroupDescription: 'Press Ctrl space to group',\n ColumnHeader: ' column header ',\n TemplateCell: ' is template cell',\n CommandColumnAria: 'is Command column column header ',\n DialogEdit: 'Dialog edit',\n ClipBoard: 'clipboard',\n AscendingText: 'Ascending',\n DescendingText: 'Descending',\n NoneText: 'None',\n Expanded: 'Expanded',\n Collapsed: 'Collapsed'\n };\n this.keyConfigs = {\n downArrow: 'downarrow',\n upArrow: 'uparrow',\n rightArrow: 'rightarrow',\n leftArrow: 'leftarrow',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftRight: 'shift+rightarrow',\n shiftLeft: 'shift+leftarrow',\n home: 'home',\n end: 'end',\n escape: 'escape',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n ctrlAltPageUp: 'ctrl+alt+pageup',\n ctrlAltPageDown: 'ctrl+alt+pagedown',\n altPageUp: 'alt+pageup',\n altPageDown: 'alt+pagedown',\n altDownArrow: 'alt+downarrow',\n altUpArrow: 'alt+uparrow',\n ctrlDownArrow: 'ctrl+downarrow',\n ctrlUpArrow: 'ctrl+uparrow',\n ctrlPlusA: 'ctrl+A',\n ctrlPlusP: 'ctrl+P',\n insert: 'insert',\n delete: 'delete',\n f2: 'f2',\n enter: 'enter',\n ctrlEnter: 'ctrl+enter',\n shiftEnter: 'shift+enter',\n tab: 'tab',\n shiftTab: 'shift+tab',\n space: 'space',\n ctrlPlusC: 'ctrl+C',\n ctrlShiftPlusH: 'ctrl+shift+H',\n ctrlSpace: 'ctrl+space',\n ctrlLeftArrow: 'ctrl+leftarrow',\n ctrlRightArrow: 'ctrl+rightarrow'\n };\n };\n /**\n * For internal use only - To Initialize the component rendering.\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.render = function () {\n this.log(['module_missing', 'promise_enabled', 'locale_missing', 'check_datasource_columns']);\n this.ariaService.setOptions(this.element, { role: 'grid' });\n createSpinner({ target: this.element, cssClass: this.cssClass ? this.cssClass : null }, this.createElement);\n this.renderModule = new Render(this, this.serviceLocator);\n this.searchModule = new Search(this);\n this.scrollModule = new Scroll(this);\n this.notify(events.initialLoad, {});\n if ((this.getDataModule().dataManager.dataSource.offline === true || this.getDataModule().dataManager.dataSource.url === undefined) &&\n !(!isNullOrUndefined(this.dataSource) && this.dataSource.result)) {\n this.isVirtualAdaptive = true;\n }\n if (this.isReact) {\n var args = { requireTemplateRef: this.requireTemplateRef };\n this.trigger(events.load, args);\n if (!args.requireTemplateRef) {\n this.requireTemplateRef = args.requireTemplateRef;\n }\n }\n else {\n this.trigger(events.load);\n }\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n if (this.enableColumnVirtualization && this.isChangeDataSourceCall && this.columnModel) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.isPreparedFrozenColumns = true;\n if (this.enablePersistence) {\n this.notify(events.columnsPrepared, {});\n }\n this.getMediaColumns();\n setColumnIndex(this.columns);\n if (this.isFrozenGrid() && !this.mergedColumns) {\n this.setInitialFrozenColumnIndex(this.columns);\n }\n this.checkLockColumns(this.columns);\n this.getColumns();\n this.processModel();\n this.gridRender();\n this.wireEvents();\n this.addListener();\n this.updateDefaultCursor();\n this.updateStackedFilter();\n if (this.loadingIndicator.indicatorType === 'Spinner') {\n this.showSpinner();\n }\n this.notify(events.initialEnd, {});\n if (this.loadingIndicator.indicatorType === 'Shimmer') {\n this.refreshMaskRow();\n }\n if (this.refreshing) {\n this.trigger('created');\n }\n };\n Grid.prototype.setInitialFrozenColumnIndex = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n var column = columns[parseInt(i.toString(), 10)];\n column[\"\" + literals.initialFrozenColumnIndex] = column.index;\n if (column.columns) {\n this.setInitialFrozenColumnIndex(column.columns);\n }\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.showSpinner = function () {\n if (!this.isExportGrid) {\n showSpinner(this.element);\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.hideSpinner = function () {\n if (!this.isExportGrid) {\n hideSpinner(this.element);\n }\n };\n Grid.prototype.showMaskRow = function (axisDirection, dialogElement) {\n if (isNullOrUndefined(this.headerModule) || isNullOrUndefined(this.contentModule)) {\n return;\n }\n var gridHeader = this.getHeaderContent().firstChild;\n var gridContent = this.getContent().firstChild;\n var gridFooter = this.getFooterContent();\n if (dialogElement) {\n var dialogHolder = dialogElement.querySelector('.e-checkboxlist');\n var maskRowCount = Math.floor(dialogHolder.getBoundingClientRect().height / this.getRowHeight());\n var maskTemplate = '
'\n + '
'\n + this.getShimmerTemplate() + this.getShimmerTemplate() + '
';\n dialogHolder.innerHTML = '';\n for (var i = 0; i < maskRowCount; i++) {\n dialogHolder.innerHTML += maskTemplate;\n var maskSpan = [].slice.call(dialogHolder\n .querySelectorAll('.e-mask:not(.e-mask-checkbox-filter-intent):not(.e-mask-checkbox-filter-span-intent)'));\n maskSpan[0].classList.add('e-mask-checkbox-filter-intent');\n maskSpan[1].classList.add('e-mask-checkbox-filter-span-intent');\n }\n return;\n }\n if ((!this.enableRtl && !this.getHeaderContent().style.paddingRight)\n || (this.enableRtl && !this.getHeaderContent().style.paddingLeft)) {\n gridContent.style.overflowY = 'hidden';\n }\n if (!this.isInitialLoad && !this.getColumns().length) {\n var contentHeight = gridContent.getBoundingClientRect().height;\n var maskTableHeight = contentHeight === 0 ? this.allowPaging ? this.pageSettings.pageSize * this.getRowHeight()\n : window.innerHeight : contentHeight;\n var contentRowCount = Math.ceil(maskTableHeight / this.getRowHeight());\n if (this.rowRenderingMode !== 'Vertical') {\n this.headerMaskTable = this.createEmptyMaskTable(gridHeader, 1);\n }\n this.contentMaskTable = this.createEmptyMaskTable(gridContent, contentRowCount);\n return;\n }\n this.maskRowContentScroll = (this.enableVirtualization || this.enableColumnVirtualization) && axisDirection ? true : false;\n if (!this.contentMaskTable) {\n var content = gridContent;\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n if (!isNullOrUndefined(content.querySelector('tbody'))) {\n this.contentMaskTable = this.createMaskTable(content, this.getContentMaskColumns(), axisDirection);\n }\n }\n if (!this.headerMaskTable && (this.isFrozenGrid() || (this.enableColumnVirtualization && axisDirection === 'X'))) {\n var content = gridHeader;\n if (this.enableColumnVirtualization && axisDirection === 'X') {\n content = content.querySelector('.e-virtualtable');\n }\n this.headerMaskTable = this.createMaskTable(content, this.getContentMaskColumns(), axisDirection);\n }\n if (gridFooter && gridFooter.querySelector('.e-summaryrow')) {\n var gridFooterContent = gridFooter.firstChild;\n if (!this.footerContentMaskTable) {\n var footerContent = gridFooterContent;\n this.footerContentMaskTable = this.createMaskTable(footerContent);\n }\n }\n if (!(this.enableVirtualization && axisDirection)) {\n EventHandler.add(gridContent, 'scroll', this.translateMaskRow, this);\n }\n };\n Grid.prototype.getContentMaskColumns = function () {\n return this.getColumns();\n };\n Grid.prototype.createEmptyMaskTable = function (maskElement, rowCount) {\n var table = this.createElement('table', { className: 'e-table e-masked-table' });\n var tbody = this.createElement('tbody', { className: 'e-masked-tbody' });\n var row = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {\n style: 'height: ' + this.getRowHeight() + 'px;'\n } });\n var cell = this.createElement('td', { className: 'e-masked-cell e-rowcell' });\n cell.innerHTML = this.getShimmerTemplate();\n row.appendChild(cell);\n for (var i = 0; i < rowCount; i++) {\n tbody.appendChild(row.cloneNode(true));\n }\n table.appendChild(tbody);\n maskElement.appendChild(table);\n return table;\n };\n Grid.prototype.createMaskTable = function (element, columns, axisDirection) {\n var parentElement = element;\n var header = closest(parentElement, '.e-gridheader') ? true : false;\n var content = closest(parentElement, '.e-gridcontent') ? true : false;\n var footer = closest(parentElement, '.e-gridfooter') ? true : false;\n var gridContent = this.getContent().firstChild;\n var gridContentScrollHeight = gridContent.scrollHeight;\n var table = parentElement.querySelector('table');\n var maskTable = table.cloneNode();\n maskTable.removeAttribute('role');\n maskTable.removeAttribute('id');\n maskTable.style.position = 'absolute';\n maskTable.style.zIndex = '5';\n maskTable.style.width = table.getBoundingClientRect().width + 'px';\n if (header && !(this.enableColumnVirtualization && axisDirection === 'X')) {\n maskTable.style.transform = 'translate(0px,'\n + table.querySelector('thead').getBoundingClientRect().height + 'px)';\n }\n maskTable.setAttribute('class', 'e-table e-masked-table');\n var maskColgroup = table.querySelector('colgroup').cloneNode(true);\n maskColgroup.removeAttribute('id');\n maskColgroup.setAttribute('class', 'e-masked-colgroup');\n maskTable.appendChild(maskColgroup);\n if (header && this.enableColumnVirtualization && axisDirection === 'X') {\n var row = this.createMaskRow(maskColgroup, columns);\n if (this.isFrozenGrid()) {\n var frzTd = [].slice.call(row.querySelectorAll('.e-rowcell'));\n for (var i = 0; i < frzTd.length; i++) {\n if (i < this.frozenLeftCount) {\n if (this.frozenLeftCount - 1 === i) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-freezeleftborder');\n }\n frzTd[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.left = (columns[parseInt(i.toString(), 10)].valueX -\n this.translateX) + 'px';\n }\n else if ((frzTd.length - this.frozenRightCount) <= i && columns[parseInt(i.toString(), 10)]) {\n if ((frzTd.length - this.frozenRightCount) === i) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-freezerightborder');\n }\n frzTd[parseInt(i.toString(), 10)].classList.add('e-rightfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.right = (this.translateX +\n columns[parseInt(i.toString(), 10)].valueX) + 'px';\n }\n }\n }\n var thead = table.querySelector('thead');\n var rows = [].slice.call(thead.querySelectorAll('tr'));\n var maskTHead = thead.cloneNode();\n maskTHead.removeAttribute('role');\n maskTHead.setAttribute('class', 'e-masked-thead');\n var rowCount = rows.length;\n for (var i = 0; i < rowCount; i++) {\n maskTHead.appendChild(row.cloneNode(true));\n maskTHead.childNodes[parseInt(i.toString(), 10)].style\n .height = rows[parseInt(i.toString(), 10)].getBoundingClientRect().height + 'px';\n }\n maskTable.appendChild(maskTHead);\n }\n var maskTBody = table.querySelector('tbody').cloneNode();\n maskTBody.removeAttribute('role');\n maskTBody.setAttribute('class', 'e-masked-tbody');\n var tbody = table.querySelector('tbody');\n if (content || header) {\n var rowCountElement = gridContent;\n var rowCount = Math.ceil(rowCountElement.getBoundingClientRect().height / this.getRowHeight());\n if (tbody.querySelector('.e-emptyrow') || !tbody.childNodes.length || (content && this.childGrid)) {\n var row = this.createMaskRow(maskColgroup, columns);\n var altRow = row.cloneNode(true);\n altRow.classList.add('e-altrow');\n for (var i = 0; i < rowCount; i++) {\n var altNumber = 1;\n maskTBody.appendChild((i + altNumber) % 2 === 0 ? altRow.cloneNode(true) : row.cloneNode(true));\n }\n }\n else {\n var rowsQuery = 'tr:not([style*=\"display:none\"]):not([style*=\"display: none\"])';\n var rows = [].slice.call(tbody.querySelectorAll(rowsQuery));\n var addEditRow = tbody.querySelector('.e-addedrow, .e-editedrow');\n var addEditRowIndex = void 0;\n if (addEditRow) {\n addEditRowIndex = rows.indexOf(addEditRow);\n if (this.isFrozenGrid() && this.enableColumnVirtualization) {\n var frzTd = [].slice.call(rows[addEditRowIndex + 1].querySelectorAll('.e-rowcell'));\n for (var i = 0; i < frzTd.length; i++) {\n if (i < this.frozenLeftCount) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.left = (columns[parseInt(i.toString(), 10)].valueX - this.translateX) + 'px';\n }\n else if ((frzTd.length - this.frozenRightCount) <= i && columns[parseInt(i.toString(), 10)]) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-rightfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.right = (this.translateX +\n columns[parseInt(i.toString(), 10)].valueX) + 'px';\n }\n }\n }\n if (addEditRow.classList.contains('e-addedrow')) {\n rows.splice(addEditRowIndex, 2);\n }\n else {\n rows.splice(addEditRowIndex, 1);\n }\n }\n rowCount = (this.enableVirtualization || this.enableColumnVirtualization) && axisDirection ? rows.length\n : rowCount <= rows.length ? rowCount : rows.length;\n for (var i = 0; i < rowCount; i++) {\n maskTBody.appendChild(this.applyMaskRow(rows[parseInt(i.toString(), 10)].cloneNode(true), rows[parseInt(i.toString(), 10)].getBoundingClientRect().height));\n }\n if (addEditRow && addEditRow.classList.contains('e-editedrow') && addEditRowIndex < rowCount) {\n var addEditMaskRow = maskTBody.childNodes[parseInt(addEditRowIndex.toString(), 10)];\n addEditMaskRow.style.height = this.getRowHeight() + 'px';\n addEditMaskRow.classList.add('e-row');\n if (addEditRow.classList.contains('e-altrow')) {\n addEditMaskRow.classList.add('e-altrow');\n }\n }\n }\n }\n maskTable.appendChild(maskTBody);\n if (footer) {\n var tfoot = table.querySelector('tfoot');\n var maskTFoot = tfoot.cloneNode();\n maskTFoot.setAttribute('class', 'e-masked-tfoot');\n var rows = [].slice.call(tfoot.querySelectorAll('tr'));\n for (var i = 0; i < rows.length; i++) {\n maskTFoot.appendChild(this.applyMaskRow(rows[parseInt(i.toString(), 10)].cloneNode(true), rows[parseInt(i.toString(), 10)].getBoundingClientRect().height));\n }\n maskTable.appendChild(maskTFoot);\n }\n if (header && this.isFrozenGrid() && !this.enableColumnVirtualization) {\n this.getHeaderContent().querySelector('.' + literals.headerContent).style.position = 'relative';\n }\n parentElement.insertBefore(maskTable, parentElement.firstChild);\n if (content && !(this.enableVirtualization && axisDirection)) {\n var minScrollTop = gridContentScrollHeight - maskTable.getBoundingClientRect().height;\n minScrollTop = minScrollTop < 0 ? 0 : minScrollTop;\n var scrollTop = gridContent.scrollTop <= minScrollTop ? gridContent.scrollTop : minScrollTop;\n if (this.enableVirtualization) {\n scrollTop -= getTransformValues(closest(parentElement, '.e-virtualtable')).height;\n }\n maskTable.style.transform = 'translate(0px,' + scrollTop + 'px)';\n }\n return maskTable;\n };\n Grid.prototype.applyMaskRow = function (row, rowHeight) {\n var maskRow = row;\n maskRow.removeAttribute('role');\n maskRow.removeAttribute('aria-rowindex');\n maskRow.removeAttribute('data-rowindex');\n maskRow.removeAttribute('data-uid');\n maskRow.classList.add('e-masked-row');\n maskRow.style.height = rowHeight + 'px';\n var maskCells = [].slice.call(maskRow.childNodes);\n for (var i = 0; i < maskCells.length; i++) {\n var maskCell = maskCells[parseInt(i.toString(), 10)];\n var displayAsCheckBoxCell = maskCell.firstChild && maskCell.firstChild.classList\n && maskCell.firstChild.classList.contains('e-checkbox-wrapper');\n maskCell.removeAttribute('role');\n maskCell.removeAttribute('tabindex');\n maskCell.removeAttribute('aria-label');\n if (this.enableColumnVirtualization && maskCell.classList.contains('e-fixedfreeze')) {\n removeClass([maskCell], ['e-fixedfreeze', 'e-freezeleftborder', 'e-freezerightborder']);\n addClass([maskCell], ['e-unfreeze']);\n }\n if (!(this.enableColumnVirtualization && (maskCell.classList.contains('e-leftfreeze') ||\n maskCell.classList.contains('e-rightfreeze')))) {\n maskCell.removeAttribute('data-colindex');\n }\n maskCell.removeAttribute('aria-colindex');\n maskCell.removeAttribute('index');\n maskCell.removeAttribute('ej-mappingname');\n maskCell.removeAttribute('ej-mappingvalue');\n maskCell.removeAttribute('e-mappinguid');\n maskCell.removeAttribute('aria-expanded');\n maskCell.classList.add('e-masked-cell');\n maskCell.innerHTML = this.getShimmerTemplate();\n if (maskCell.classList.contains('e-recordplusexpand') || maskCell.classList.contains('e-recordpluscollapse')) {\n maskCell.firstChild.classList.add('e-mask-group-intent');\n }\n else if (maskCell.classList.contains('e-gridchkbox') || displayAsCheckBoxCell) {\n maskCell.firstChild.classList.add('e-mask-checkbox-intent');\n }\n else if (maskCell.classList.contains('e-rowdragdrop')) {\n maskCell.firstChild.classList.add('e-mask-drag-intent');\n }\n else if (maskCell.classList.contains('e-indentcell')) {\n maskCell.innerHTML = '';\n }\n }\n return maskRow;\n };\n Grid.prototype.createMaskRow = function (refColgroup, refColumns) {\n var colgroup = refColgroup;\n var columns = refColumns;\n var row = this.createElement('tr', { className: 'e-masked-row e-row' });\n if (this.rowRenderingMode !== 'Vertical') {\n row.style.height = this.getRowHeight() + 'px';\n }\n var td = this.createElement('td', { className: 'e-masked-cell e-rowcell' });\n for (var i = 0, colIndex = 0; i < colgroup.childNodes.length; i++) {\n var col = colgroup.childNodes[parseInt(i.toString(), 10)];\n var localTD = td.cloneNode();\n localTD.innerHTML = this.getShimmerTemplate();\n if (!(col.classList.contains('e-group-intent') || col.classList.contains('e-detail-intent')\n || col.classList.contains('e-drag-intent'))) {\n if (this.rowRenderingMode === 'Vertical' && columns[parseInt(colIndex.toString(), 10)]) {\n localTD.setAttribute('data-cell', columns[parseInt(colIndex.toString(), 10)].headerText ?\n columns[parseInt(colIndex.toString(), 10)].headerText : columns[parseInt(colIndex.toString(), 10)].field);\n }\n if (col.style.display === 'none') {\n localTD.classList.add('e-hide');\n }\n else {\n localTD.style.textAlign = columns[parseInt(colIndex.toString(), 10)]\n && columns[parseInt(colIndex.toString(), 10)].textAlign ?\n columns[parseInt(colIndex.toString(), 10)].textAlign.toLowerCase()\n : this.enableRtl ? 'right' : 'left';\n if (columns[parseInt(colIndex.toString(), 10)] && (columns[parseInt(colIndex.toString(), 10)].type === 'checkbox'\n || columns[parseInt(colIndex.toString(), 10)].displayAsCheckBox)) {\n localTD.firstChild.classList.add('e-mask-checkbox-intent');\n }\n }\n colIndex++;\n }\n else {\n if (col.classList.contains('e-group-intent')) {\n localTD.firstChild.classList.add('e-mask-group-intent');\n }\n else if (col.classList.contains('e-detail-intent')) {\n localTD.firstChild.classList.add('e-mask-detail-intent');\n }\n else if (col.classList.contains('e-drag-intent')) {\n localTD.firstChild.classList.add('e-mask-drag-intent');\n }\n }\n row.appendChild(localTD);\n }\n return row;\n };\n Grid.prototype.getShimmerTemplate = function () {\n if (this.maskRowContentScroll) {\n return '';\n }\n return '';\n };\n Grid.prototype.addShimmerEffect = function () {\n this.maskRowContentScroll = false;\n var maskSpan = [].slice.call(this.element.querySelectorAll('.e-mask:not(.e-shimmer-wave)'));\n for (var i = 0; i < maskSpan.length; i++) {\n if (maskSpan[parseInt(i.toString(), 10)]) {\n maskSpan[parseInt(i.toString(), 10)].classList.add('e-shimmer-wave');\n }\n }\n };\n Grid.prototype.translateMaskRow = function (e) {\n var target = e.target;\n var maskTables = target.querySelectorAll('.e-masked-table');\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n var minScrollTop = target.scrollHeight - maskTable.getBoundingClientRect().height;\n minScrollTop = minScrollTop < 0 ? 0 : minScrollTop;\n var scrollTop = target.scrollTop <= minScrollTop ? target.scrollTop : minScrollTop;\n if (this.enableVirtualization) {\n scrollTop -= getTransformValues(closest(maskTable, '.e-virtualtable')).height;\n }\n maskTable.style.transform = 'translate(0px,' + scrollTop + 'px)';\n }\n }\n };\n Grid.prototype.removeMaskRow = function () {\n if (!isNullOrUndefined(this.contentModule)) {\n var gridContent = this.getContent().firstChild;\n EventHandler.remove(gridContent, 'scroll', this.translateMaskRow);\n }\n if (this.headerMaskTable && this.isFrozenGrid() && !this.enableColumnVirtualization) {\n this.getHeaderContent().querySelector('.' + literals.headerContent).style.position = '';\n }\n var maskTables = [this.headerMaskTable,\n this.contentMaskTable, this.footerContentMaskTable];\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n remove(maskTable);\n }\n }\n this.headerMaskTable = null;\n this.contentMaskTable = null;\n this.footerContentMaskTable = null;\n };\n Grid.prototype.refreshMaskRow = function () {\n var gridContent = this.getContent().firstChild;\n if (!this.isInitialLoad && !this.getColumns().length) {\n return;\n }\n if (this.contentMaskTable && gridContent.querySelector('.e-masked-table')) {\n var content = gridContent;\n if (this.enableVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content);\n }\n };\n Grid.prototype.refreshMaskRowColgroupWidth = function (content) {\n var table = content.querySelector('table:not(.e-masked-table)');\n var colgroup = table.querySelector(literals.colGroup).cloneNode(true);\n var maskTable = content.querySelector('.e-masked-table');\n colgroup.removeAttribute('id');\n colgroup.setAttribute('class', 'e-masked-colgroup');\n for (var i = 0; i < colgroup.childNodes.length; i++) {\n colgroup.childNodes[parseInt(i.toString(), 10)].removeAttribute('class');\n }\n remove(maskTable.querySelector('.e-masked-colgroup'));\n maskTable.insertBefore(colgroup, maskTable.firstChild);\n maskTable.style.width = table.getBoundingClientRect().width + 'px';\n };\n Grid.prototype.updateStackedFilter = function () {\n if (this.allowFiltering && this.filterSettings.type === 'FilterBar' &&\n this.getHeaderContent().getElementsByClassName('e-stackedheadercell').length) {\n this.getHeaderContent().classList.add('e-stackedfilter');\n }\n else {\n this.getHeaderContent().classList.remove('e-stackedfilter');\n }\n };\n Grid.prototype.getMediaColumns = function () {\n if (!this.enableColumnVirtualization) {\n var gcol = this.getColumns();\n this.getShowHideService = this.serviceLocator.getService('showHideService');\n if (!isNullOrUndefined(gcol)) {\n for (var index = 0; index < gcol.length; index++) {\n if (!isNullOrUndefined(gcol[parseInt(index.toString(), 10)].hideAtMedia)\n && (isNullOrUndefined(gcol[parseInt(index.toString(), 10)].visible)\n || gcol[parseInt(index.toString(), 10)].visible)) {\n this.pushMediaColumn(gcol[parseInt(index.toString(), 10)], index);\n }\n }\n }\n }\n this.updateFrozenColumnsWidth();\n };\n Grid.prototype.pushMediaColumn = function (col, index) {\n this.mediaCol.push(col);\n this.media[col.uid] = window.matchMedia(col.hideAtMedia);\n this.mediaQueryUpdate(index, this.media[col.uid]);\n this.mediaBindInstance[parseInt(index.toString(), 10)] = this.mediaQueryUpdate.bind(this, index);\n this.media[col.uid].addListener(this.mediaBindInstance[parseInt(index.toString(), 10)]);\n };\n /**\n * @param {Column} col - specifies the column\n * @returns {void}\n * @hidden\n */\n Grid.prototype.updateMediaColumns = function (col) {\n if (!this.enableColumnVirtualization) {\n var index = this.getColumnIndexByUid(col.uid);\n for (var i = 0; i < this.mediaCol.length; i++) {\n if (col.uid === this.mediaCol[parseInt(i.toString(), 10)].uid) {\n this.mediaCol.splice(i, 1);\n return;\n }\n }\n this.pushMediaColumn(col, index);\n }\n };\n /**\n * @param {number} columnIndex - specifies the column index\n * @param {MediaQueryList} e - specifies the MediaQueryList\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mediaQueryUpdate = function (columnIndex, e) {\n var col = this.getColumns()[parseInt(columnIndex.toString(), 10)];\n if (this.mediaCol.some(function (mediaColumn) { return mediaColumn.uid === col.uid; })) {\n col.visible = e.matches;\n if (this.isInitialLoad) {\n this.invokedFromMedia = true;\n if (col.visible) {\n this.showHider.show(col.headerText, 'headerText');\n }\n else {\n this.showHider.hide(col.headerText, 'headerText');\n }\n }\n }\n };\n Grid.prototype.refreshMediaCol = function () {\n this.isInitialLoad = true;\n var footerContent = this.element.querySelector('.' + literals.gridFooter);\n if (this.aggregates.length && this.element.scrollHeight > parseInt(this.height.toString(), 10) && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n var checkboxColumn = this.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length === 0 || checkboxColumn.length && this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n this.isCheckBoxSelection = false;\n }\n if (this.rowRenderingMode === 'Vertical') {\n if (this.enableHover) {\n this.setProperties({ enableAdaptiveUI: true, enableHover: false }, true);\n removeClass([this.element], 'e-gridhover');\n }\n }\n if (this.enableAdaptiveUI && this.scrollModule) {\n this.scrollModule.refresh();\n }\n if (this.isFrozenGrid() && this.isAutoGenerateColumns) {\n this.widthService.setWidthToColumns();\n this.isAutoGenerateColumns = false;\n }\n };\n Grid.prototype.removeMediaListener = function () {\n for (var i = 0; i < this.mediaCol.length; i++) {\n this.media[this.mediaCol[parseInt(i.toString(), 10)].uid]\n .removeListener(this.mediaBindInstance[this.mediaCol[parseInt(i.toString(), 10)].index]);\n }\n };\n /**\n * For internal use only - Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.eventInitializer = function () {\n //eventInitializer\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n *\n * @function destroy\n * @returns {void}\n */\n Grid.prototype.destroy = function () {\n var gridElement = this.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.' + literals.gridHeader) &&\n gridElement.querySelector('.' + literals.gridContent) ? true : false;\n if (hasGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n this.removeMediaListener();\n this.notify(events.destroy, {});\n this.destroyDependentModules();\n if (this.isReact) {\n this.destroyTemplate(['template']);\n }\n if (this.isVue) {\n this.destroyTemplate();\n }\n if (hasGridChild) {\n _super.prototype.destroy.call(this);\n }\n this.toolTipObj.destroy();\n if (this.isReact && !Browser.isIE) {\n this.element.innerHTML = '';\n }\n var modules = ['renderModule', 'headerModule', 'contentModule', 'valueFormatterService',\n 'serviceLocator', 'ariaService', 'keyboardModule', 'widthService', 'searchModule', 'showHider',\n 'scrollModule', 'printModule', 'clipboardModule', 'focusModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[parseInt(i.toString(), 10)]]) {\n this[modules[parseInt(i.toString(), 10)]] = null;\n }\n }\n this.element.innerHTML = '';\n classList(this.element, [], ['e-rtl', 'e-gridhover', 'e-responsive', 'e-default', 'e-device', 'e-grid-min-height']);\n };\n Grid.prototype.destroyDependentModules = function () {\n var gridElement = this.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.scrollModule.destroy();\n this.keyboardModule.destroy();\n this.focusModule.destroy();\n this.clipboardModule.destroy();\n this.printModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Grid.prototype.getModuleName = function () {\n return 'grid';\n };\n Grid.prototype.enableBoxSelection = function () {\n if (this.enableAutoFill) {\n this.selectionSettings.cellSelectionMode = 'BoxWithBorder';\n this.element.classList.add('e-afenabled');\n }\n else {\n this.element.classList.remove('e-afenabled');\n this.notify(events.destroyAutoFillElements, {});\n }\n };\n Grid.prototype.setCSSClass = function (oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {GridModel} newProp - Defines new properties\n * @param {GridModel} oldProp - Defines old properties\n * @returns {void}\n * @hidden\n */\n Grid.prototype.onPropertyChanged = function (newProp, oldProp) {\n var requireRefresh = false;\n var requireGridRefresh = false;\n var freezeRefresh = false;\n var checkCursor;\n var args = { requestType: 'refresh' };\n var childGridParent = null;\n var parentInstance = null;\n if (this.isDestroyed) {\n return;\n }\n this.log('module_missing');\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n var properties = Object.keys(newProp);\n if (properties.indexOf('columns') > -1) {\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n }\n this.updateColumnObject();\n requireGridRefresh = true;\n }\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'allowPaging':\n this.notify(events.uiUpdate, { module: 'pager', enable: this.allowPaging });\n requireRefresh = true;\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'pageSettings':\n if (this.pageTemplateChange) {\n this.pageTemplateChange = false;\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n break;\n }\n if (this.pagerModule && this.pagerModule.isCancel) {\n this.pagerModule.isCancel = false;\n return;\n }\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n if (isNullOrUndefined(newProp.pageSettings.currentPage) && isNullOrUndefined(newProp.pageSettings.pageSize)\n && isNullOrUndefined(newProp.pageSettings.totalRecordsCount)\n || !isNullOrUndefined(oldProp.pageSettings) &&\n ((newProp.pageSettings.currentPage !== oldProp.pageSettings.currentPage)\n && !this.enableColumnVirtualization && !this.enableVirtualization\n && this.pageSettings.totalRecordsCount <= this.pageSettings.pageSize)) {\n requireRefresh = true;\n }\n if (this.pagerModule && this.pagerModule.isCancel) {\n this.pagerModule.isCancel = false;\n }\n break;\n case 'allowSorting':\n this.notify(events.uiUpdate, { module: 'sort', enable: this.allowSorting });\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'allowFiltering':\n this.updateStackedFilter();\n this.notify(events.uiUpdate, { module: 'filter', enable: this.allowFiltering });\n requireRefresh = true;\n if (this.filterSettings.type !== 'FilterBar' || (this.editSettings.showAddNewRow && this.filterSettings.type === 'FilterBar')) {\n this.refreshHeader();\n }\n else {\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n }\n break;\n case 'height':\n case 'width':\n this.notify(events.uiUpdate, { module: 'scroll', properties: { width: newProp.width, height: newProp.height } });\n if (this.allowPaging) {\n this.pagerModule.refresh();\n }\n break;\n case 'allowReordering':\n this.headerModule.refreshUI();\n checkCursor = true;\n break;\n case 'allowRowDragAndDrop':\n this.notify(events.uiUpdate, { module: 'rowDragAndDrop', enable: this.allowRowDragAndDrop });\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'allowSelection':\n this.notify(events.uiUpdate, { module: 'selection', enable: this.allowSelection });\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'enableAutoFill':\n if (this.selectionModule) {\n this.enableBoxSelection();\n this.selectionModule.updateAutoFillPosition();\n }\n break;\n case 'rowTemplate':\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n requireRefresh = true;\n break;\n case 'emptyRecordTemplate':\n this.emptyRecordTemplateFn = templateCompiler(this.emptyRecordTemplate);\n requireRefresh = true;\n break;\n case 'detailTemplate':\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n requireRefresh = true;\n break;\n case 'allowGrouping':\n this.notify(events.uiUpdate, { module: 'group', enable: this.allowGrouping });\n this.headerModule.refreshUI();\n requireRefresh = true;\n checkCursor = true;\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'enableInfiniteScrolling':\n case 'childGrid':\n requireRefresh = true;\n childGridParent = this.parentDetails ? document.querySelector(\"#\" + this.parentDetails.parentID) : null;\n parentInstance = childGridParent ? childGridParent.ej2_instances[0] : null;\n if (this.childGrid && parentInstance && isNullOrUndefined(parentInstance.childGrid.childGrid)) {\n var childGridObject = Object.assign({}, parentInstance.childGrid, { childGrid: newProp.childGrid });\n parentInstance.setProperties({ childGrid: childGridObject }, true);\n while (!isNullOrUndefined(parentInstance.parentDetails)) {\n var currentParent = document.querySelector(\"#\" + parentInstance.parentDetails.parentID);\n var currentParentInstance = currentParent ? currentParent.ej2_instances[0] : null;\n if (currentParentInstance) {\n var currentChildObject = Object.assign({}, currentParentInstance.childGrid);\n currentChildObject.childGrid = parentInstance.childGrid;\n currentParentInstance.setProperties({ childGrid: currentChildObject }, true);\n }\n parentInstance = currentParentInstance;\n }\n }\n this.headerModule.refreshUI();\n break;\n case 'toolbar':\n this.notify(events.uiUpdate, { module: 'toolbar' });\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'groupSettings':\n this.notify(events.inBoundModelChanged, {\n module: 'group', properties: newProp.groupSettings,\n oldProperties: oldProp.groupSettings\n });\n break;\n case 'aggregates':\n if (!this.aggregates.length && this.allowGrouping && this.groupSettings.columns.length) {\n requireRefresh = true;\n }\n this.notify(events.uiUpdate, { module: 'aggregate', properties: newProp });\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'frozenColumns':\n case 'frozenRows':\n case 'enableVirtualization':\n case 'enableColumnVirtualization':\n case 'currencyCode':\n case 'locale':\n if (this.isFrozenGrid()) {\n this.log('frozen_rows_columns');\n }\n freezeRefresh = true;\n requireGridRefresh = true;\n this.addNewRowFocus = true;\n break;\n case 'query':\n if (!this.getDataModule().isQueryInvokedFromData) {\n requireRefresh = true;\n }\n this.getDataModule().isQueryInvokedFromData = false;\n break;\n case 'autoFit':\n if (this.autoFit) {\n this.preventAdjustColumns();\n }\n else {\n this.restoreAdjustColumns();\n }\n break;\n default:\n this.extendedPropertyChange(prop, newProp, requireGridRefresh);\n }\n }\n if (checkCursor) {\n this.updateDefaultCursor();\n }\n if (requireGridRefresh) {\n if (freezeRefresh || this.getFrozenColumns() || this.frozenRows) {\n this.freezeRefresh();\n }\n else {\n this.refresh();\n }\n }\n else if (requireRefresh) {\n this.notify(events.modelChanged, args);\n requireRefresh = false;\n this.maintainSelection(newProp.selectedRowIndex);\n }\n };\n Grid.prototype.extendedPropertyChange = function (prop, newProp, requireGridRefresh) {\n switch (prop) {\n case 'enableRtl':\n this.updateRTL();\n if (this.allowPaging) {\n this.element.querySelector('.e-gridpager').ej2_instances[0].enableRtl = newProp.enableRtl;\n this.element.querySelector('.e-gridpager').ej2_instances[0].dataBind();\n }\n if (this.height !== 'auto') {\n this.scrollModule.removePadding(!newProp.enableRtl);\n this.scrollModule.setPadding();\n }\n if (this.toolbar && this.toolbarModule) {\n this.toolbarModule.getToolbar().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.toolbarModule.getToolbar().ej2_instances[0].dataBind();\n }\n if (this.contextMenuItems && this.contextMenuModule) {\n this.contextMenuModule.getContextMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.contextMenuModule.getContextMenu().ej2_instances[0].dataBind();\n }\n if (this.showColumnMenu && this.columnMenuModule && !this.enableAdaptiveUI) {\n this.columnMenuModule.getColumnMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.columnMenuModule.getColumnMenu().ej2_instances[0].dataBind();\n }\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n this.refreshHeader();\n }\n this.notify(events.rtlUpdated, {});\n break;\n case 'enableAltRow':\n this.renderModule.refresh();\n break;\n case 'allowResizing':\n this.headerModule.refreshUI();\n this.updateResizeLines();\n break;\n case 'rowHeight':\n if (this.rowHeight) {\n addClass([this.element], 'e-grid-min-height');\n }\n else {\n removeClass([this.element], 'e-grid-min-height');\n }\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'gridLines':\n this.updateGridLines();\n break;\n case 'showColumnMenu':\n this.headerModule.refreshUI();\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: true });\n break;\n case 'columnMenuItems':\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: this.columnMenuItems });\n break;\n case 'contextMenuItems':\n this.notify(events.uiUpdate, { module: 'contextMenu', enable: this.contextMenuItems });\n break;\n case 'showColumnChooser':\n this.notify(events.uiUpdate, { module: 'columnChooser', enable: this.showColumnChooser });\n break;\n case 'filterSettings':\n this.updateStackedFilter();\n this.notify(events.inBoundModelChanged, { module: 'filter', properties: newProp.filterSettings });\n break;\n case 'searchSettings':\n this.notify(events.inBoundModelChanged, { module: 'search', properties: newProp.searchSettings });\n break;\n case 'sortSettings':\n this.notify(events.inBoundModelChanged, { module: 'sort' });\n break;\n case 'selectionSettings':\n this.notify(events.inBoundModelChanged, { module: 'selection', properties: newProp.selectionSettings });\n break;\n case 'editSettings':\n this.notify(events.inBoundModelChanged, { module: 'edit', properties: newProp.editSettings });\n break;\n case 'allowTextWrap':\n case 'textWrapSettings':\n if (this.allowTextWrap) {\n this.applyTextWrap();\n }\n else {\n this.removeTextWrap();\n }\n this.notify(events.freezeRender, { case: 'textwrap', isModeChg: (prop === 'textWrapSettings') });\n break;\n case 'dataSource':\n // eslint-disable-next-line no-case-declarations\n var pending_1 = this.getDataModule().getState();\n if (this.allowSelection && this.isPersistSelection && !(pending_1 && pending_1.isPending)) {\n this.clearSelection();\n }\n if (!isNullOrUndefined(this.dataSource) && this.dataSource.result) {\n this.isVirtualAdaptive = false;\n }\n if (Object.getPrototypeOf(newProp).deepWatch) {\n var pKeyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0, props = Object.keys(newProp.dataSource); i < props.length; i++) {\n this.setRowData(getValue(pKeyField, this.dataSource[props[parseInt(i.toString(), 10)]]), this.dataSource[props[parseInt(i.toString(), 10)]]);\n }\n }\n else if (pending_1.isPending) {\n var gResult = !isNullOrUndefined(this.dataSource) ? this.dataSource.result : [];\n var names = (pending_1.group || []);\n if (names.length && !this.groupSettings.enableLazyLoading && !(gResult.length && gResult[0].field)) {\n for (var i = 0; i < names.length; i++) {\n gResult = DataUtil.group(gResult, names[parseInt(i.toString(), 10)], pending_1.aggregates || []);\n }\n }\n this.dataSource = {\n result: gResult, count: this.dataSource.count,\n aggregates: this.dataSource.aggregates\n };\n this.getDataModule().setState({});\n pending_1.resolver(this.dataSource);\n }\n else {\n if ((!isNullOrUndefined(this.dataSource) && this.dataSource.result\n && this.dataSource.count && this.groupSettings.columns.length)) {\n var gResult = this.dataSource.result;\n var names = this.groupSettings.columns;\n if (names.length && !(gResult.length && gResult[0].field)) {\n for (var i = 0; i < names.length; i++) {\n gResult = DataUtil.group(gResult, names[parseInt(i.toString(), 10)]);\n }\n }\n this.dataSource = {\n result: gResult, count: this.dataSource.count\n };\n }\n this.getDataModule().setState({ isDataChanged: false });\n this.notify(events.dataSourceModified, {});\n if (!requireGridRefresh) {\n this.renderModule.refresh();\n if (this.isCheckBoxSelection) {\n this.notify(events.beforeRefreshOnDataChange, {});\n }\n }\n }\n this.scrollRefresh();\n break;\n case 'enableHover':\n // eslint-disable-next-line no-case-declarations\n var action = newProp.enableHover ? addClass : removeClass;\n action([this.element], 'e-gridhover');\n break;\n case 'selectedRowIndex':\n if (!this.isSelectedRowIndexUpdating) {\n this.selectRow(newProp.selectedRowIndex);\n }\n this.isSelectedRowIndexUpdating = false;\n break;\n case 'resizeSettings':\n this.widthService.setWidthToTable();\n break;\n case 'enableAdaptiveUI':\n this.notify(events.setFullScreenDialog, {});\n break;\n case 'rowRenderingMode':\n this.enableVerticalRendering();\n this.notify(events.rowModeChange, {});\n this.refresh();\n break;\n case 'enableStickyHeader':\n this.scrollModule.addStickyListener(newProp.enableStickyHeader);\n break;\n }\n };\n Grid.prototype.maintainSelection = function (index) {\n var _this_1 = this;\n if (index !== -1) {\n var fn_1 = function () {\n _this_1.selectRow(index);\n _this_1.off(events.contentReady, fn_1);\n };\n this.on(events.contentReady, fn_1, this);\n }\n };\n /**\n * @param {Object} prop - Defines the property\n * @param {boolean} muteOnChange - Defines the mute on change\n * @returns {void}\n * @private\n */\n Grid.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n var filterSettings = 'filterSettings';\n if (prop[\"\" + filterSettings] && this.filterModule && muteOnChange) {\n this.filterModule.refreshFilter();\n }\n };\n /**\n * @hidden\n * @returns {number} - Returns the tables count\n */\n Grid.prototype.getTablesCount = function () {\n return this.tablesCount;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateDefaultCursor = function () {\n var headerCells = [].slice.call(this.getHeaderContent().querySelectorAll('.e-headercell:not(.e-stackedheadercell)'));\n var stdHdrCell = [].slice.call(this.getHeaderContent().getElementsByClassName('e-stackedheadercell'));\n var cols = this.getColumns();\n for (var i = 0; i < headerCells.length; i++) {\n var cell = headerCells[parseInt(i.toString(), 10)];\n if (this.allowGrouping || this.allowReordering || this.allowSorting) {\n if (!cols[parseInt(i.toString(), 10)].allowReordering || !cols[parseInt(i.toString(), 10)].allowSorting\n || !cols[parseInt(i.toString(), 10)].allowGrouping) {\n cell.classList.add('e-defaultcursor');\n }\n else {\n cell.classList.add('e-mousepointer');\n }\n }\n }\n for (var count = 0; count < stdHdrCell.length; count++) {\n if (this.allowReordering) {\n stdHdrCell[parseInt(count.toString(), 10)].classList.add('e-mousepointer');\n }\n }\n };\n Grid.prototype.updateColumnModel = function (columns, isRecursion) {\n for (var i = 0, len = columns.length; i < len; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.updateColumnModel(columns[parseInt(i.toString(), 10)].columns, true);\n }\n else {\n this.columnModel.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n if (isNullOrUndefined(isRecursion) || !isRecursion) {\n this.updateLockableColumns();\n }\n };\n Grid.prototype.getFrozenLeftCount = function () {\n return this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n };\n Grid.prototype.isFrozenGrid = function () {\n return this.getFrozenColumns() !== 0 || this.frozenLeftColumns.length !== 0 || this.frozenRightColumns.length !== 0 ||\n this.fixedColumns.length !== 0;\n };\n Grid.prototype.getFrozenMode = function () {\n return this.frozenName;\n };\n Grid.prototype.updateLockableColumns = function () {\n var cols = this.columnModel;\n var frozenCount = 0;\n var movableCount = 0;\n var frozenColumns = this.getFrozenColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].lockColumn) {\n if (i < frozenColumns) {\n cols.splice(frozenCount, 0, cols.splice(i, 1)[0]);\n frozenCount++;\n }\n else {\n cols.splice(frozenColumns + movableCount, 0, cols.splice(i, 1)[0]);\n movableCount++;\n }\n }\n }\n };\n Grid.prototype.checkLockColumns = function (cols) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n this.checkLockColumns(cols[parseInt(i.toString(), 10)].columns);\n }\n else if (cols[parseInt(i.toString(), 10)].lockColumn) {\n this.lockcolPositionCount++;\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.leftrightColumnWidth = function (position) {\n var cols = position === 'left' ? this.getFrozenLeftColumns() : position === 'right' ? this.getFrozenRightColumns() : [];\n var width = 0;\n cols.filter(function (col) {\n if (col.visible) {\n width += parseInt(col.width.toString(), 10);\n }\n });\n return width;\n };\n /**\n * Gets the columns from the Grid.\n *\n * @param {boolean} isRefresh - Defines the boolean whether to refresh\n * @returns {Column[]} - returns the column\n */\n Grid.prototype.getColumns = function (isRefresh) {\n var _this_1 = this;\n var inview = this.inViewIndexes.map(function (v) { return v - _this_1.groupSettings.columns.length; }).filter(function (v) { return v > -1; });\n var vLen = inview.length;\n if (!this.enableColumnVirtualization || isNullOrUndefined(this.columnModel) || this.columnModel.length === 0 || isRefresh) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n var columns = vLen === 0 ? this.columnModel :\n this.columnModel.slice(inview[0], inview[vLen - 1] + 1);\n var left = [];\n var right = [];\n var movable = [];\n var isLeftRightFrozen = this.enableColumnVirtualization && this.isPreparedFrozenColumns && vLen === 0;\n if (isLeftRightFrozen) {\n this.frozenRightColumns = [];\n this.frozenLeftColumns = [];\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n left.push(columns[parseInt(i.toString(), 10)]);\n if (isLeftRightFrozen) {\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n right.push(columns[parseInt(i.toString(), 10)]);\n if (isLeftRightFrozen) {\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n else {\n movable.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n if (this.enableColumnVirtualization && this.isFrozenGrid()) {\n if (this.frozenLeftColumns.length) {\n left = this.frozenLeftColumns;\n }\n if (this.frozenRightColumns.length) {\n right = this.frozenRightColumns;\n }\n }\n return left.concat(movable).concat(right);\n };\n /**\n * @private\n * @param {string} stackedHeader - Defines the stacked header\n * @param {Column[]} col - Defines the column\n * @returns {Column} Returns the Column\n */\n Grid.prototype.getStackedHeaderColumnByHeaderText = function (stackedHeader, col) {\n for (var i = 0; i < col.length; i++) {\n var individualColumn = col[parseInt(i.toString(), 10)];\n if (individualColumn.field === stackedHeader || individualColumn.headerText === stackedHeader) {\n this.stackedColumn = individualColumn;\n break;\n }\n else if (individualColumn.columns) {\n this.getStackedHeaderColumnByHeaderText(stackedHeader, individualColumn.columns);\n }\n }\n return this.stackedColumn;\n };\n /**\n * @private\n * @returns {number[]} Returns the column indexes\n */\n Grid.prototype.getColumnIndexesInView = function () {\n return this.inViewIndexes;\n };\n /**\n * @private\n * @returns {Query} - returns the query\n */\n Grid.prototype.getQuery = function () {\n return this.query;\n };\n /**\n * @private\n * @returns {object} - returns the locale constants\n */\n Grid.prototype.getLocaleConstants = function () {\n return this.defaultLocale;\n };\n /**\n * @param {number[]} indexes - specifies the indexes\n * @returns {void}\n * @private\n */\n Grid.prototype.setColumnIndexesInView = function (indexes) {\n this.inViewIndexes = indexes;\n };\n /**\n * Gets the visible columns from the Grid.\n *\n * @returns {Column[]} returns the column\n */\n Grid.prototype.getVisibleColumns = function () {\n return this.getCurrentVisibleColumns();\n };\n /**\n * Gets the header div of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getHeaderContent = function () {\n return this.headerModule.getPanel();\n };\n /**\n * Sets the header div of the Grid to replace the old header.\n *\n * @param {Element} element - Specifies the Grid header.\n *\n * @returns {void}\n */\n Grid.prototype.setGridHeaderContent = function (element) {\n this.headerModule.setPanel(element);\n };\n /**\n * Gets the content table of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getContentTable = function () {\n return this.contentModule.getTable();\n };\n /**\n * Sets the content table of the Grid to replace the old content table.\n *\n * @param {Element} element - Specifies the Grid content table.\n *\n * @returns {void}\n */\n Grid.prototype.setGridContentTable = function (element) {\n this.contentModule.setTable(element);\n };\n /**\n * Gets the content div of the Grid.\n *\n * @returns {Element} Returns the element\n */\n Grid.prototype.getContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * Sets the content div of the Grid to replace the old Grid content.\n *\n * @param {Element} element - Specifies the Grid content.\n *\n * @returns {void}\n */\n Grid.prototype.setGridContent = function (element) {\n this.contentModule.setPanel(element);\n };\n /**\n * Gets the header table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getHeaderTable = function () {\n return this.headerModule.getTable();\n };\n /**\n * Sets the header table of the Grid to replace the old one.\n *\n * @param {Element} element - Specifies the Grid header table.\n *\n * @returns {void}\n */\n Grid.prototype.setGridHeaderTable = function (element) {\n this.headerModule.setTable(element);\n };\n /**\n * Gets the footer div of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContent = function () {\n this.footerElement = this.element.getElementsByClassName(literals.gridFooter)[0];\n return this.footerElement;\n };\n /**\n * Gets the footer table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContentTable = function () {\n this.footerElement = this.element.getElementsByClassName(literals.gridFooter)[0];\n return this.footerElement.firstChild.firstChild;\n };\n /**\n * Gets the pager of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getPager = function () {\n return this.gridPager; //get element from pager\n };\n /**\n * Sets the pager of the Grid to replace the old pager.\n *\n * @param {Element} element - Specifies the Grid pager.\n *\n * @returns {void}\n */\n Grid.prototype.setGridPager = function (element) {\n this.gridPager = element;\n };\n /**\n * Gets a row by index.\n *\n * @param {number} index - Specifies the row index.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getRowByIndex = function (index) {\n if (this.enableVirtualization && this.groupSettings.enableLazyLoading) {\n return this.lazyLoadRender.getRowByIndex(index);\n }\n else {\n return this.contentModule.getRowByIndex(index);\n }\n };\n /**\n * Gets a movable tables row by index.\n *\n * @param {number} index - Specifies the row index.\n *\n * @returns {Element} returns the element\n\n */\n Grid.prototype.getMovableRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(index);\n };\n /**\n * Gets a frozen tables row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n\n */\n Grid.prototype.getFrozenRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(index);\n };\n /**\n * Gets all the data rows of the Grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets a frozen right tables row element by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n\n */\n Grid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n *\n * @param {Element | EventTarget} target - specifies the element\n *\n * @returns {RowInfo} returns the row info\n */\n Grid.prototype.getRowInfo = function (target) {\n var ele = target;\n var args = { target: target };\n if (!isNullOrUndefined(target) && isNullOrUndefined(parentsUntil(ele, 'e-detailrowcollapse')\n && isNullOrUndefined(parentsUntil(ele, 'e-recordplusexpand')))) {\n var cell = closest(ele, '.' + literals.rowCell);\n if (!cell) {\n var row_1 = closest(ele, '.' + literals.row);\n if (!isNullOrUndefined(row_1) && !row_1.classList.contains('e-addedrow')) {\n var rowObj = this.getRowObjectFromUID(row_1.getAttribute('data-uid'));\n var rowIndex = parseInt(row_1.getAttribute(literals.dataRowIndex), 10);\n args = { row: row_1, rowData: rowObj.data, rowIndex: rowIndex };\n }\n return args;\n }\n var cellIndex = parseInt(cell.getAttribute(literals.dataColIndex), 10);\n var row_2 = closest(cell, '.' + literals.row);\n if (!isNullOrUndefined(cell) && !isNaN(cellIndex) && !isNullOrUndefined(row_2)) {\n var rowIndex = parseInt(row_2.getAttribute(literals.dataRowIndex), 10);\n var rows = this.contentModule.getRows();\n var index = cellIndex + this.getIndentCount();\n var rowsObject = rows.filter(function (r) { return r.uid === row_2.getAttribute('data-uid'); });\n var rowData = {};\n var column = void 0;\n if (Object.keys(rowsObject).length) {\n rowData = rowsObject[0].data;\n column = rowsObject[0].cells[parseInt(index.toString(), 10)].column;\n }\n args = { cell: cell, cellIndex: cellIndex, row: row_2, rowIndex: rowIndex, rowData: rowData, column: column, target: target };\n }\n }\n return args;\n };\n /**\n * Gets the Grid's movable content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n\n */\n Grid.prototype.getMovableRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets the Grid's frozen right content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n\n */\n Grid.prototype.getFrozenRightRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets all the Grid's data rows.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getDataRows = function () {\n return this.getAllDataRows();\n };\n /**\n * @param {boolean} includeAdd - specifies includeAdd\n * @returns {Element[]} returns the element\n * @hidden\n */\n Grid.prototype.getAllDataRows = function (includeAdd) {\n if (isNullOrUndefined(this.getContentTable().querySelector(literals.tbody))) {\n return [];\n }\n var tbody = this.getContentTable().querySelector(literals.tbody);\n var rows = [].slice.call(tbody.children);\n if (this.editSettings.showAddNewRow) {\n if (rows[0].classList.contains('e-addedrow')) {\n rows.shift();\n }\n else if (rows[rows.length - 1].classList.contains('e-addedrow')) {\n rows.pop();\n }\n }\n if (this.frozenRows) {\n var hdrTbody = this.getHeaderTable().querySelector(literals.tbody);\n var freezeRows = [].slice.call(hdrTbody.children);\n rows = this.addMovableRows(freezeRows, rows);\n if (this.editSettings.showAddNewRow && freezeRows[0].classList.contains('e-addedrow')) {\n freezeRows.shift();\n }\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * @param {HTMLElement[]} fRows - Defines the frozen Rows\n * @param {HTMLElement[]} mrows - Defines the movable Rows\n * @returns {HTMLElement[]} Returns the element\n * @hidden\n */\n Grid.prototype.addMovableRows = function (fRows, mrows) {\n for (var i = 0, len = mrows.length; i < len; i++) {\n fRows.push(mrows[parseInt(i.toString(), 10)]);\n }\n return fRows;\n };\n Grid.prototype.generateDataRows = function (rows, includAdd) {\n var dRows = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n if (rows[parseInt(i.toString(), 10)].classList.contains(literals.row)\n && (!rows[parseInt(i.toString(), 10)].classList.contains('e-hiddenrow') || includAdd)) {\n if (this.isCollapseStateEnabled()) {\n dRows[parseInt(rows[parseInt(i.toString(), 10)].getAttribute('data-rowindex'), 10)] = rows[parseInt(i.toString(), 10)];\n }\n else {\n dRows.push(rows[parseInt(i.toString(), 10)]);\n }\n }\n }\n return dRows;\n };\n /**\n * Gets all the Grid's movable table data rows.\n *\n * @returns {Element[]} Returns the element\n\n */\n Grid.prototype.getMovableDataRows = function () {\n return this.getAllMovableDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n\n * @hidden\n */\n Grid.prototype.getAllMovableDataRows = function (includeAdd) {\n return this.getAllDataRows(includeAdd);\n };\n /**\n * Gets all the Grid's frozen table data rows.\n *\n * @returns {Element[]} returns the element\n\n */\n Grid.prototype.getFrozenDataRows = function () {\n return this.getAllFrozenDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n\n * @hidden\n */\n Grid.prototype.getAllFrozenDataRows = function (includeAdd) {\n return this.getAllDataRows(includeAdd);\n };\n /**\n * Gets all the Grid's frozen right table data rows.\n *\n * @returns {Element[]} Returns the Element\n\n */\n Grid.prototype.getFrozenRightDataRows = function () {\n return this.getAllFrozenRightDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n\n * @hidden\n */\n Grid.prototype.getAllFrozenRightDataRows = function (includeAdd) {\n return this.getAllDataRows(includeAdd);\n };\n /**\n * Updates particular cell value based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {string } field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n *\n * @returns {void}\n */\n Grid.prototype.setCellValue = function (key, field, value) {\n var cells = 'cells';\n var rowData = 'data';\n var rowIdx = 'index';\n var rowuID = 'uid';\n var pkName = this.getPrimaryKeyFieldNames()[0];\n var cell = new CellRenderer(this, this.serviceLocator);\n var fieldIdx = this.getColumnIndexByField(field);\n var col = this.getColumnByField(field);\n var rowObjects = this.contentModule.getRows();\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var tr = selectedRow ? this.element.querySelector('[data-uid=' + selectedRow[\"\" + rowuID] + ']') : null;\n if (!isNullOrUndefined(tr)) {\n if (typeof value === 'string') {\n value = this.sanitize(value);\n }\n setValue(field, value, selectedRow[\"\" + rowData]);\n var left = 0;\n if (this.isRowDragable()) {\n left++;\n }\n var td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n if (!isNullOrUndefined(td)) {\n var Idx = 0;\n if (this.groupSettings.columns.length) {\n fieldIdx = fieldIdx + this.groupSettings.columns.length;\n }\n if (this.childGrid || this.detailTemplate) {\n fieldIdx++;\n }\n if (this.isRowDragable()) {\n fieldIdx++;\n }\n var sRow = selectedRow[\"\" + cells][fieldIdx - Idx];\n cell.refreshTD(td, sRow, selectedRow[\"\" + rowData], { index: selectedRow[\"\" + rowIdx] });\n if (this.isReact) {\n td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n }\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n /* tslint:disable:no-string-literal */\n if (!isNullOrUndefined(selectedRow) && !isNullOrUndefined(selectedRow['changes'])) {\n selectedRow['changes'][\"\" + field] = value;\n }\n /* tslint:disable:no-string-literal */\n this.trigger(events.queryCellInfo, {\n cell: td, column: col, data: selectedRow[\"\" + rowData]\n });\n if (this.isReact && td.getAttribute('tabindex') === '0' && td.classList.contains('e-focused')) {\n td.focus();\n }\n }\n }\n else {\n return;\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @param {boolean} renderTemplates - Defines renderTemplates need to invoke\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactColumnTemplateByUid = function (columnUid, renderTemplates) {\n var _this_1 = this;\n if (this.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.clearTemplate(['columnTemplate'], undefined, function () {\n var isChildGrid = _this_1.childGrid && _this_1.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = isChildGrid ? _this_1.getContentTable().querySelectorAll('.e-row') :\n _this_1.getDataRows();\n _this_1.refreshReactTemplateTD(rows, isChildGrid);\n if (renderTemplates) {\n _this_1.renderTemplates();\n }\n });\n }\n };\n /**\n * @param {Element[] | NodeListOf} rows - Defines the rows\n * @param {boolean} isChildGrid - Defines whether it is a Hierarchy Grid.\n * @param {boolean} isFrozen - Defines whether it is a Frozen Grid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactTemplateTD = function (rows, isChildGrid, isFrozen) {\n var cells = 'cells';\n var rowIdx = 'index';\n var indent = this.getIndentCount();\n var childIndent = 0;\n var isChildRow = false;\n for (var j = 0; j < rows.length; j++) {\n var rowsObj = this.getRowObjectFromUID(rows[parseInt(j.toString(), 10)].getAttribute('data-uid'));\n if (isChildGrid && !rowsObj && parentsUntil(rows[parseInt(j.toString(), 10)], 'e-childgrid')) {\n var gridObj = parentsUntil(rows[parseInt(j.toString(), 10)], 'e-childgrid').ej2_instances[0];\n rowsObj = gridObj.getRowObjectFromUID(rows[parseInt(j.toString(), 10)].getAttribute('data-uid'));\n childIndent = gridObj.getIndentCount();\n isChildRow = true;\n }\n if (rowsObj && rowsObj.isDataRow && !isNullOrUndefined(rowsObj.index) &&\n !rows[parseInt(j.toString(), 10)].classList.contains('e-editedrow')) {\n for (var i = 0; i < rowsObj[\"\" + cells].length; i++) {\n var cell = rowsObj[\"\" + cells][parseInt(i.toString(), 10)];\n if (cell.isTemplate) {\n var cellRenderer = new CellRenderer(this, this.serviceLocator);\n var td = isChildGrid ? rows[parseInt(j.toString(), 10)]\n .children[cell.index + (isChildRow ? childIndent : indent)] : this.getCellFromIndex(j, isFrozen ? cell.index : i - indent);\n cellRenderer.refreshTD(td, cell, rowsObj.data, { index: rowsObj[\"\" + rowIdx] });\n }\n }\n }\n isChildRow = false;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshGroupCaptionFooterTemplate = function () {\n var isChildGrid = this.childGrid && this.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = this.getContentTable().querySelectorAll('.e-groupcaptionrow, .e-groupfooterrow');\n for (var i = 0; i < rows.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var gridObj = this;\n var rowsObj = this.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n if (isChildGrid && !rowsObj && parentsUntil(rows[parseInt(i.toString(), 10)], 'e-childgrid')) {\n gridObj = parentsUntil(rows[parseInt(i.toString(), 10)], 'e-childgrid').ej2_instances[0];\n rowsObj = gridObj.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n }\n if (rowsObj) {\n var cells = rowsObj.cells.filter(function (cell) { return cell.isDataCell; });\n var args = { cells: cells, data: rowsObj.data, dataUid: rowsObj.uid };\n gridObj.notify(events.refreshAggregateCell, args);\n }\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactHeaderTemplateByUid = function (columnUid) {\n if (this.isReact) {\n var cells = 'cells';\n var rowsObj = this.headerModule.rows;\n var cellIndex = this.getNormalizedColumnIndex(columnUid);\n var _loop_1 = function (j) {\n var cell = rowsObj[parseInt(j.toString(), 10)][\"\" + cells][parseInt(cellIndex.toString(), 10)];\n if (cell && cell.column.uid === columnUid) {\n var headerCellRenderer = new HeaderCellRenderer(this_1, this_1.serviceLocator);\n var td = parentsUntil(this_1.element.querySelectorAll('[e-mappinguid=' + columnUid + ']')[0], 'e-templatecell');\n headerCellRenderer.refresh(cell, td);\n var cols = this_1.sortSettings.columns;\n var columnIndex = cols.findIndex(function (col) { return col.field === cell.column.field; });\n if (columnIndex !== -1) {\n var header = this_1.getColumnHeaderByField(cell.column.field);\n this_1.ariaService.setSort(header, (cols[parseInt(columnIndex.toString(), 10)].direction).toLowerCase());\n if (cols.length > 1) {\n header.querySelector('.e-headercelldiv').insertBefore(this_1.createElement('span', { className: 'e-sortnumber', innerHTML: (columnIndex + 1).toString() }), header.querySelector('.e-headertext'));\n }\n var filterElement = header.querySelector('.e-sortfilterdiv');\n if (cols[parseInt(columnIndex.toString(), 10)].direction === 'Ascending') {\n classList(filterElement, ['e-ascending', 'e-icon-ascending'], []);\n }\n else {\n classList(filterElement, ['e-descending', 'e-icon-descending'], []);\n }\n }\n }\n };\n var this_1 = this;\n for (var j = 0; j < rowsObj.length; j++) {\n _loop_1(j);\n }\n }\n };\n /**\n * Updates and refresh the particular row values based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n *\n * @returns {void}\n */\n Grid.prototype.setRowData = function (key, rowData) {\n var rowuID = 'uid';\n var rowObjects = this.contentModule.getRows();\n var pkName = this.getPrimaryKeyFieldNames()[0];\n if (this.groupSettings.columns.length > 0 && this.aggregates.length > 0) {\n rowObjects = rowObjects.filter(function (row) { return row.isDataRow; });\n }\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var selectRowEle = selectedRow ? [].slice.call(this.element.querySelectorAll('[data-uid=' + selectedRow[\"\" + rowuID] + ']')) : undefined;\n if (!isNullOrUndefined(selectedRow) && selectRowEle.length) {\n selectedRow.changes = rowData;\n if (this.frozenRows) {\n var fRowTr = this.getRowsObject()[selectedRow.index];\n this.setFrozenRowData(fRowTr, rowData);\n }\n else {\n this.setFrozenRowData(selectedRow, rowData);\n }\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n }\n else {\n return;\n }\n };\n Grid.prototype.setFrozenRowData = function (fTr, rowData) {\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this);\n fTr.changes = rowData;\n refreshForeignData(fTr, this.getForeignKeyColumns(), fTr.changes);\n rowRenderer.refresh(fTr, this.getColumns(), true);\n };\n /**\n * Gets a cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n var col = this.getColumnByIndex(columnIndex);\n return getCellByColAndRowIndex(this, col, rowIndex, columnIndex);\n };\n /**\n * Gets a movable table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n return this.getCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a frozen right table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n return this.getCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a column header by column index.\n *\n * @param {number} index - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getColumnHeaderByIndex = function (index) {\n return this.getHeaderTable().getElementsByClassName('e-headercell')[parseInt(index.toString(), 10)];\n };\n /**\n * Gets a movable column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getMovableColumnHeaderByIndex = function (index) {\n return this.getColumnHeaderByIndex(index);\n };\n /**\n * Gets a frozen right column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n return this.getColumnHeaderByIndex(index);\n };\n /**\n * Gets a frozen left column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.getColumnHeaderByIndex(index);\n };\n /**\n * @param {string} uid - Defines the uid\n * @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) {\n var rows = this.contentModule.getRows();\n var row = this.rowObject(rows, uid);\n if (isNullOrUndefined(row) && this.enableVirtualization && this.groupSettings.columns.length > 0) {\n row = this.rowObject(this.vRows, uid);\n return row;\n }\n return row;\n };\n Grid.prototype.rowObject = function (rows, uid) {\n if (rows) {\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.uid === uid) {\n return row;\n }\n }\n }\n return null;\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n\n */\n Grid.prototype.getMovableRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n\n */\n Grid.prototype.getFrozenRightRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * Gets a column header by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByField = function (field) {\n var column = this.getColumnByField(field);\n return column ? this.getColumnHeaderByUid(column.uid) : undefined;\n };\n /**\n * Gets a column header by UID.\n *\n * @param {string} uid - Specifies the column uid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByUid = function (uid) {\n var element = this.getHeaderContent().querySelector('[e-mappinguid=' + uid + ']');\n return element ? element.parentElement : undefined;\n };\n /**\n * @hidden\n * @param {number} index - Defines the index\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByIndex = function (index) {\n var column;\n this.getColumns().some(function (col, i) {\n column = col;\n return i === index;\n });\n return column;\n };\n /**\n * Gets a Column by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets a column index by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {number} Returns the index by field\n */\n Grid.prototype.getColumnIndexByField = function (field) {\n var cols = this.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * Gets a column by UID.\n *\n * @param {string} uid - Specifies the column UID.\n *\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByUid = function (uid) {\n return iterateArrayOrObject(this.getColumns().concat(this.getStackedColumns(this.columns)), function (item) {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * @param {Column[]} columns - Defines the columns\n * @param {Column[]} stackedColumn - Defines the stacked columns\n * @returns {Column[]} Returns the columns\n * @hidden\n */\n Grid.prototype.getStackedColumns = function (columns, stackedColumn) {\n if (stackedColumn === void 0) { stackedColumn = []; }\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (column.columns) {\n stackedColumn.push(column);\n this.getStackedColumns(column.columns, stackedColumn);\n }\n }\n return stackedColumn;\n };\n /**\n * Gets a column index by UID.\n *\n * @param {string} uid - Specifies the column UID.\n *\n * @returns {number} Returns the column by index\n */\n Grid.prototype.getColumnIndexByUid = function (uid) {\n var index = iterateArrayOrObject(this.getColumns(), function (item, index) {\n if (item.uid === uid) {\n return index;\n }\n return undefined;\n })[0];\n return !isNullOrUndefined(index) ? index : -1;\n };\n /**\n * Gets UID by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {string} Returns the column by field\n */\n Grid.prototype.getUidByColumnField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item.uid;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets column index by column uid value.\n *\n * @private\n * @param {string} uid - Specifies the column uid.\n * @returns {number} Returns the column by field\n */\n Grid.prototype.getNormalizedColumnIndex = function (uid) {\n var index = this.getColumnIndexByUid(uid);\n return index + this.getIndentCount();\n };\n /**\n * Gets indent cell count.\n *\n * @private\n * @returns {number} Returns the indent count\n */\n Grid.prototype.getIndentCount = function () {\n var index = 0;\n if (this.allowGrouping) {\n index += this.groupSettings.columns.length;\n }\n if (this.isDetail()) {\n index++;\n }\n if (this.isRowDragable() && isNullOrUndefined(this.rowDropSettings.targetID)) {\n index++;\n }\n /**\n * TODO: index normalization based on the stacked header, grouping and detailTemplate\n * and frozen should be handled here\n */\n return index;\n };\n /**\n * Gets the collection of column fields.\n *\n * @returns {string[]} Returns the Field names\n */\n Grid.prototype.getColumnFieldNames = function () {\n var columnNames = [];\n var column;\n for (var i = 0, len = this.getColumns().length; i < len; i++) {\n column = this.getColumns()[parseInt(i.toString(), 10)];\n if (column.visible) {\n columnNames.push(column.field);\n }\n }\n return columnNames;\n };\n /**\n * Gets a compiled row template.\n *\n * @returns {Function} Returns the row TEmplate\n * @private\n */\n Grid.prototype.getRowTemplate = function () {\n return this.rowTemplateFn;\n };\n /**\n * Gets a compiled empty Record template.\n *\n * @returns {Function} Returns the empty Record template\n * @private\n */\n Grid.prototype.getEmptyRecordTemplate = function () {\n return this.emptyRecordTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function} Returns the Detail template\n */\n Grid.prototype.getDetailTemplate = function () {\n return this.detailTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function}Returns the Edit template\n */\n Grid.prototype.getEditTemplate = function () {\n return this.editTemplateFn;\n };\n /**\n * Gets a compiled dialog edit header template.\n *\n * @private\n * @returns {Function} returns template function\n */\n Grid.prototype.getEditHeaderTemplate = function () {\n return this.editHeaderTemplateFn;\n };\n /**\n * Gets a compiled dialog edit footer template.\n *\n * @private\n * @returns {Function} Returns the Footer template\n */\n Grid.prototype.getEditFooterTemplate = function () {\n return this.editFooterTemplateFn;\n };\n /**\n * Get the names of the primary key columns of the Grid.\n *\n * @returns {string[]} Returns the field names\n */\n Grid.prototype.getPrimaryKeyFieldNames = function () {\n var keys = [];\n for (var k = 0; k < this.columnModel.length; k++) {\n if (this.columnModel[parseInt(k.toString(), 10)].isPrimaryKey) {\n keys.push(this.columnModel[parseInt(k.toString(), 10)].field);\n }\n }\n return keys;\n };\n /**\n * Refreshes the Grid header and content.\n *\n * @returns {void}\n */\n Grid.prototype.refresh = function () {\n if (!this.isDestroyed) {\n this.isManualRefresh = true;\n this.headerModule.refreshUI();\n this.updateStackedFilter();\n this.renderModule.refresh();\n }\n };\n /**\n * Refreshes the Grid header.\n *\n * @returns {void}\n */\n Grid.prototype.refreshHeader = function () {\n this.headerModule.refreshUI();\n };\n /**\n * Gets the collection of selected rows.\n *\n * @returns {Element[]} Returns the element\n */\n Grid.prototype.getSelectedRows = function () {\n return this.selectionModule ? this.selectionModule.selectedRecords : [];\n };\n /**\n * Gets the collection of selected row indexes.\n *\n * @returns {number[]} Returns the Selected row indexes\n */\n Grid.prototype.getSelectedRowIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowIndexes : [];\n };\n /**\n * Gets the collection of selected row and cell indexes.\n *\n * @returns {number[]} Returns the Selected row cell indexes\n */\n Grid.prototype.getSelectedRowCellIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowCellIndexes : [];\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} Returns the selected records\n * @isGenericType true\n */\n Grid.prototype.getSelectedRecords = function () {\n return this.selectionModule ? this.selectionModule.getSelectedRecords() : [];\n };\n /**\n * Gets the collection of selected columns uid.\n *\n * @returns {string[]} Returns the selected column uid\n * @isGenericType true\n */\n Grid.prototype.getSelectedColumnsUid = function () {\n var _this_1 = this;\n var uid = [];\n if (this.selectionModule) {\n this.selectionModule.selectedColumnsIndexes.filter(function (i) { return uid.push(_this_1.getColumns()[parseInt(i.toString(), 10)].uid); });\n }\n return uid;\n };\n /**\n * Gets the data module.\n *\n * @returns {Data} Returns the data\n */\n Grid.prototype.getDataModule = function () {\n return this.renderModule.data;\n };\n /**\n * Shows a column by its column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n *\n * @returns {void}\n */\n Grid.prototype.showColumns = function (keys, showBy) {\n showBy = showBy ? showBy : 'headerText';\n this.showHider.show(keys, showBy);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n *\n * @returns {void}\n */\n Grid.prototype.hideColumns = function (keys, hideBy) {\n hideBy = hideBy ? hideBy : 'headerText';\n this.showHider.hide(keys, hideBy);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen column\n */\n Grid.prototype.getFrozenColumns = function () {\n return this.frozenColumns + this.getFrozenCount(this.columns, 0, 0);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Right column count\n */\n Grid.prototype.getFrozenRightColumnsCount = function () {\n return this.frozenRightCount || this.rightcount;\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Left column\n */\n Grid.prototype.getFrozenLeftColumnsCount = function () {\n return this.frozenLeftCount || this.leftcount;\n };\n /**\n * @hidden\n * @returns {number} Returns the movable column count\n */\n Grid.prototype.getMovableColumnsCount = function () {\n return this.movableCount || this.movablecount;\n };\n Grid.prototype.updateFrozenColumnsWidth = function () {\n if (this.isFrozenGrid() && !this.enableColumnVirtualization) {\n var gcol = this.getColumns();\n var isAutoWidth = true;\n var autoCol_1 = 0;\n var difference_1 = 0;\n var autoWidth_1 = 0;\n var _loop_2 = function (i) {\n var col = gcol[parseInt(i.toString(), 10)];\n if (isNullOrUndefined(col.width) && (col.freeze === 'Left' || col.freeze === 'Right' || col.freeze === 'Fixed' || col.isFrozen)) {\n col.width = Math.max(200, col.minWidth ? parseFloat(col.minWidth.toString()) : 0);\n }\n if (col.width === 'auto') {\n var tWidth_1 = 0;\n if (isAutoWidth) {\n gcol.filter(function (cols) {\n if (cols.visible) {\n if (cols.width === 'auto') {\n autoCol_1++;\n }\n if (cols.width !== 'auto') {\n var width = !isNullOrUndefined(cols.width) ? parseFloat(cols.width.toString()) :\n Math.max(200, cols.minWidth ? parseFloat(cols.minWidth.toString()) : 0);\n tWidth_1 += width;\n }\n }\n });\n var gWidth = this_2.isPercentageWidthGrid() || this_2.width === 'auto' ? this_2.element.getBoundingClientRect().width :\n parseFloat(this_2.width.toString());\n difference_1 = this_2.height === 'auto' ? gWidth - tWidth_1 : ((gWidth - tWidth_1) - getScrollBarWidth());\n if (difference_1 < 0) {\n difference_1 = 0;\n }\n autoWidth_1 = parseFloat((difference_1 / autoCol_1).toString());\n gcol.filter(function (col) {\n if (col.visible) {\n if (col.minWidth && parseFloat(col.minWidth.toString()) > autoWidth_1) {\n difference_1 = difference_1 - parseFloat(col.minWidth.toString());\n autoCol_1--;\n }\n }\n });\n isAutoWidth = false;\n }\n if (col.minWidth && parseFloat(col.minWidth.toString()) > autoWidth_1) {\n col.width = parseFloat(col.minWidth.toString());\n }\n else {\n col.width = difference_1 / autoCol_1;\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < gcol.length; i++) {\n _loop_2(i);\n }\n }\n };\n Grid.prototype.refreshSplitFrozenColumn = function () {\n this.splitFrozenCount(this.columns);\n this.updateFrozenColumnsWidth();\n this.isAutoGenerateColumns = true;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setFrozenCount = function () {\n this.frozenLeftCount = this.frozenRightCount = this.movableCount = 0;\n this.visibleFrozenLeft = this.visibleFrozenRight = this.visibleMovable = 0;\n this.frozenLeftColumns = [];\n this.frozenRightColumns = [];\n this.movableColumns = [];\n this.fixedColumns = [];\n this.splitFrozenCount(this.columns);\n this.leftcount = this.frozenLeftCount;\n this.rightcount = this.frozenRightCount;\n this.movablecount = this.movableCount;\n // if (this.frozenColumns && (this.frozenLeftCount || this.frozenRightCount)) {\n // this.setProperties({ frozenColumns: 0 }, true);\n // }\n if (this.frozenLeftCount && !this.frozenRightCount) {\n this.frozenName = 'Left';\n }\n else if (this.frozenRightCount && !this.frozenLeftCount) {\n this.frozenName = 'Right';\n }\n else if (this.frozenLeftCount && this.frozenRightCount) {\n this.frozenName = 'Left-Right';\n }\n else if (this.frozenColumns || this.frozenRows) {\n this.frozenName = 'Left';\n }\n else {\n this.frozenName = undefined;\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen left count\n */\n Grid.prototype.getVisibleFrozenLeftCount = function () {\n return this.visibleFrozenLeft;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen Right count\n */\n Grid.prototype.getVisibleFrozenRightCount = function () {\n return this.visibleFrozenRight;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible movable count\n */\n Grid.prototype.getVisibleMovableCount = function () {\n return this.visibleMovable;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenRightColumns = function () {\n return this.frozenRightColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenLeftColumns = function () {\n return this.frozenLeftColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getMovableColumns = function () {\n return this.movableColumns;\n };\n Grid.prototype.splitStackedColumns = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.splitStackedColumns(columns[parseInt(i.toString(), 10)].columns);\n }\n else {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenLeft++;\n }\n this.leftcount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenRight++;\n }\n this.rightcount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenFixed++;\n }\n this.fixedcount++;\n }\n else {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleMovable++;\n }\n this.movablecount++;\n }\n }\n }\n };\n Grid.prototype.pushStackedColumns = function (columns, index, arr, col, stackedcol) {\n arr[parseInt(index.toString(), 10)] = col.headerText;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n index = index + 1;\n this.pushStackedColumns(columns[parseInt(i.toString(), 10)].columns, index, arr, columns[parseInt(i.toString(), 10)], stackedcol);\n index = index - 1;\n }\n else {\n var stockCol = [];\n stockCol = arr.slice().slice(0, index + 1);\n if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n this.stackedLeft.push(stockCol);\n this.stackedarrayLeft.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n this.stackedRight.push(stockCol);\n this.stackedarrayRight.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n this.stackedFixed.push(stockCol);\n this.stackedarrayFixed.push(columns[parseInt(i.toString(), 10)]);\n }\n else {\n this.stackedMovable.push(stockCol);\n this.stackedarrayMovable.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n Grid.prototype.pushallcol = function (text, text1, col, columns, isTrue) {\n if (col.headerText === text1) {\n if (isTrue) {\n col.columns.push(columns);\n }\n else {\n col.columns.push({ headerText: text, columns: [] });\n }\n }\n else {\n if (col.columns && col.columns.length) {\n for (var i = 0; i < col.columns.length; i++) {\n this.pushallcol(text, text1, col.columns[parseInt(i.toString(), 10)], columns, isTrue);\n }\n }\n }\n };\n Grid.prototype.resetStackedColumns = function (headercol, gridcolumns, freeze) {\n var col = {};\n var tempHead = [];\n for (var i = 1; i <= headercol.length; i++) {\n var firstcol = headercol[i - 1];\n for (var j = 0; j < firstcol.length; j++) {\n if (!col.columns && i === 1) {\n col = { headerText: firstcol[parseInt(j.toString(), 10)], columns: [] };\n tempHead.push(firstcol[parseInt(j.toString(), 10)]);\n }\n else {\n if (tempHead.indexOf(firstcol[parseInt(j.toString(), 10)]) === -1) {\n this.pushallcol(firstcol[parseInt(j.toString(), 10)], firstcol[j - 1], col);\n tempHead.push(firstcol[parseInt(j.toString(), 10)]);\n }\n }\n if (j === firstcol.length - 1) {\n this.pushallcol(null, firstcol[parseInt(j.toString(), 10)], col, gridcolumns[i - 1], true);\n var count = 0;\n while (count !== headercol.length - 1 && i !== headercol.length) {\n if (firstcol.toString() === headercol[parseInt(i.toString(), 10)].toString()) {\n i++;\n this.pushallcol(null, firstcol[parseInt(j.toString(), 10)], col, gridcolumns[i - 1], true);\n }\n count++;\n }\n }\n }\n }\n if (freeze === 'Left') {\n this.frozenLeftColumns.push(col);\n }\n else if (freeze === 'Right') {\n this.frozenRightColumns.push(col);\n }\n else {\n this.movableColumns.push(col);\n }\n };\n Grid.prototype.splitFrozenCount = function (columns) {\n if (this.frozenColumns || (this.changedProperties && this.changedProperties.frozenColumns === 0)) {\n var cols = !this.enableColumnVirtualization || (this.enableColumnVirtualization && this.isPreparedFrozenColumns) ?\n this.enableColumnVirtualization && this.columnModel && this.columnModel.length ? this.columnModel :\n this.getColumns() : this.columns;\n if (!this.changedProperties || (this.changedProperties && !this.changedProperties.frozenColumns)) {\n for (var i = 0; i < cols.length; i++) {\n if (this.frozenColumns > i) {\n cols[parseInt(i.toString(), 10)].freeze = 'Left';\n }\n else if (cols[parseInt(i.toString(), 10)].freeze === 'Right' || cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n cols[parseInt(i.toString(), 10)].freeze = cols[parseInt(i.toString(), 10)].freeze;\n }\n else {\n cols[parseInt(i.toString(), 10)].freeze = undefined;\n }\n }\n }\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.leftcount = 0;\n this.rightcount = 0;\n this.movablecount = 0;\n this.fixedcount = 0;\n var arr = [];\n this.splitStackedColumns(columns[parseInt(i.toString(), 10)].columns);\n if (this.leftcount && !this.rightcount && !this.movablecount && !this.fixedcount) {\n this.frozenLeftCount += this.leftcount;\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (this.rightcount && !this.leftcount && !this.movablecount && !this.fixedcount) {\n this.frozenRightCount += this.rightcount;\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (this.movablecount && !this.leftcount && !this.rightcount && !this.fixedcount) {\n this.movableCount += this.movablecount;\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (this.fixedcount && !this.leftcount && !this.rightcount && !this.movablecount) {\n this.fixedCount += this.fixedcount;\n this.fixedColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount += this.movablecount;\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else {\n this.frozenLeftCount += this.leftcount;\n this.frozenRightCount += this.rightcount;\n this.movableCount += this.movablecount;\n this.fixedCount += this.fixedcount;\n this.leftcount = 0;\n this.rightcount = 0;\n this.movablecount = 0;\n this.fixedcount = 0;\n this.stackedLeft = [];\n this.stackedRight = [];\n this.stackedFixed = [];\n this.stackedMovable = [];\n this.stackedarrayLeft = [];\n this.stackedarrayRight = [];\n this.stackedarrayFixed = [];\n this.stackedarrayMovable = [];\n this.pushStackedColumns(columns[parseInt(i.toString(), 10)].columns, 0, arr, columns[parseInt(i.toString(), 10)], { headerText: columns[parseInt(i.toString(), 10)].headerText, columns: [] });\n if (this.stackedarrayLeft.length) {\n this.resetStackedColumns(this.stackedLeft, this.stackedarrayLeft, 'Left');\n }\n if (this.stackedarrayRight.length) {\n this.resetStackedColumns(this.stackedRight, this.stackedarrayRight, 'Right');\n }\n if (this.stackedarrayFixed.length) {\n this.resetStackedColumns(this.stackedFixed, this.stackedarrayFixed, 'Fixed');\n }\n if (this.stackedarrayMovable.length) {\n this.resetStackedColumns(this.stackedMovable, this.stackedarrayMovable, 'Movable');\n }\n this.stackedLeft = [];\n this.stackedRight = [];\n this.stackedMovable = [];\n this.stackedFixed = [];\n this.stackedarrayLeft = [];\n this.stackedarrayRight = [];\n this.stackedarrayMovable = [];\n this.stackedarrayFixed = [];\n }\n }\n else {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenRight++;\n }\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n this.frozenRightCount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenLeft++;\n }\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n this.frozenLeftCount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n this.fixedColumns.push(columns[parseInt(i.toString(), 10)]);\n this.fixedCount++;\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount++;\n }\n else {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleMovable++;\n }\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount++;\n }\n }\n }\n if (this.frozenLeftColumns.length) {\n var cols = this.frozenLeftColumns[this.frozenLeftColumns.length - 1];\n this.removeBorder(this.frozenLeftColumns);\n this.frozenLeftBorderColumns(cols instanceof Column ? this.lastVisibleLeftCol(this.frozenLeftColumns) : cols);\n }\n if (this.frozenRightColumns.length) {\n var cols = this.frozenRightColumns[0];\n this.removeBorder(this.frozenRightColumns);\n this.frozenRightBorderColumns(cols instanceof Column ? this.firstVisibleRightCol(this.frozenRightColumns) : cols);\n }\n if ((this.frozenLeftColumns.length || this.frozenRightColumns.length) && this.freezeColumnRefresh) {\n var cols = (this.frozenLeftColumns.concat(this.movableColumns)).concat(this.frozenRightColumns);\n this.setProperties({ columns: cols }, true);\n this.freezeColumnRefresh = false;\n }\n };\n Grid.prototype.removeBorder = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns && columns[parseInt(i.toString(), 10)].columns.length) {\n if (columns[parseInt(i.toString(), 10)].border === 'Right' ||\n columns[parseInt(i.toString(), 10)].border === 'Left') {\n columns[parseInt(i.toString(), 10)].border = undefined;\n }\n this.removeBorder(columns[parseInt(i.toString(), 10)].columns);\n }\n else {\n if (columns[parseInt(i.toString(), 10)].border === 'Right' ||\n columns[parseInt(i.toString(), 10)].border === 'Left') {\n columns[parseInt(i.toString(), 10)].border = undefined;\n }\n }\n }\n };\n Grid.prototype.isVisibleColumns = function (column, arr) {\n if (column.columns && column.columns.length) {\n for (var i = 0; i < column.columns.length; i++) {\n this.isVisibleColumns(column.columns[parseInt(i.toString(), 10)], arr);\n if (column.columns[parseInt(i.toString(), 10)].visible &&\n isNullOrUndefined(column.columns[parseInt(i.toString(), 10)].columns) &&\n (!isNullOrUndefined(column.columns[parseInt(i.toString(), 10)].freeze) ||\n column.columns[parseInt(i.toString(), 10)].isFrozen)) {\n arr.push('true');\n }\n }\n }\n else {\n if (column.visible && (!isNullOrUndefined(column.freeze) || column.isFrozen)) {\n arr.push('true');\n }\n }\n };\n Grid.prototype.lastVisibleLeftCol = function (columns) {\n var column;\n for (var i = columns.length - 1; i >= 0; i--) {\n var arr = [];\n this.isVisibleColumns(columns[parseInt(i.toString(), 10)], arr);\n if (columns[parseInt(i.toString(), 10)].visible && arr.indexOf('true') !== -1) {\n column = columns[parseInt(i.toString(), 10)];\n break;\n }\n }\n return column;\n };\n Grid.prototype.firstVisibleRightCol = function (columns) {\n var column;\n for (var i = 0; i < columns.length; i++) {\n var arr = [];\n this.isVisibleColumns(columns[parseInt(i.toString(), 10)], arr);\n if (columns[parseInt(i.toString(), 10)].visible && arr.indexOf('true') !== -1) {\n column = columns[parseInt(i.toString(), 10)];\n break;\n }\n }\n return column;\n };\n Grid.prototype.frozenLeftBorderColumns = function (columns) {\n if (isNullOrUndefined(columns)) {\n return;\n }\n if (columns.columns && columns.columns.length) {\n columns.border = 'Left';\n var cols = columns.columns[columns.columns.length - 1];\n this.frozenLeftBorderColumns(cols instanceof Column && cols.columns ? this.lastVisibleLeftCol(columns.columns) : cols);\n }\n else {\n columns.border = 'Left';\n }\n };\n Grid.prototype.frozenRightBorderColumns = function (columns) {\n if (isNullOrUndefined(columns)) {\n return;\n }\n if (columns.columns && columns.columns.length) {\n columns.border = 'Right';\n var cols = columns.columns[0];\n this.frozenRightBorderColumns(cols instanceof Column && cols.columns ? this.firstVisibleRightCol(columns.columns) : cols);\n }\n else {\n columns.border = 'Right';\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible frozen columns count\n */\n Grid.prototype.getVisibleFrozenColumns = function () {\n return this.getVisibleFrozenColumnsCount() + this.getVisibleFrozenCount(this.columns, 0);\n };\n /**\n * Get the current Filter operator and field.\n *\n * @returns {FilterUI} Returns the filter UI\n */\n Grid.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n Grid.prototype.getVisibleFrozenColumnsCount = function () {\n var visibleFrozenColumns = 0;\n var columns = this.columnModel;\n for (var i = 0; i < this.frozenColumns; i++) {\n if (columns[parseInt(i.toString(), 10)].visible) {\n visibleFrozenColumns++;\n }\n }\n if ((this.frozenLeftCount || this.leftcount) || (this.frozenRightCount || this.rightcount)) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].visible && (columns[parseInt(i.toString(), 10)].freeze === 'Left'\n || columns[parseInt(i.toString(), 10)].freeze === 'Right')) {\n visibleFrozenColumns++;\n }\n }\n }\n return visibleFrozenColumns;\n };\n Grid.prototype.getVisibleFrozenCount = function (cols, cnt) {\n if ((!this.frozenLeftCount && !this.leftcount) && (!this.frozenRightCount || !this.rightcount)) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n cnt = this.getVisibleFrozenCount(cols[parseInt(i.toString(), 10)].columns, cnt);\n }\n else {\n if (cols[parseInt(i.toString(), 10)].isFrozen && cols[parseInt(i.toString(), 10)].visible) {\n cnt++;\n }\n }\n }\n }\n return cnt;\n };\n Grid.prototype.getFrozenCount = function (cols, cnt, index) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n cnt = this.getFrozenCount(cols[parseInt(i.toString(), 10)].columns, cnt, index);\n }\n else {\n if (cols[parseInt(i.toString(), 10)].isFrozen && index > this.frozenColumns - 1) {\n cnt++;\n }\n index++;\n }\n }\n return cnt;\n };\n /**\n * Navigates to the specified target page.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n *\n * @returns {void}\n */\n Grid.prototype.goToPage = function (pageNo) {\n if (this.pagerModule) {\n this.pagerModule.goToPage(pageNo);\n }\n };\n /**\n * Defines the text of external message.\n *\n * @param {string} message - Defines the message to update.\n *\n * @returns {void}\n */\n Grid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule && !this.pagerTemplate) {\n this.pagerModule.updateExternalMessage(message);\n }\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n *\n * @returns {void}\n */\n Grid.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n if (this.sortModule) {\n this.sortModule.sortColumn(columnName, direction, isMultiSort);\n }\n };\n /**\n * Remove the existing columns along with the grid actions like sorting, filtering, searching, grouping, aggregate, etc., and grid will refresh with new columns based on the updated new data source.\n * > * If no columns are specified while changing the data source, then the columns are auto generated in the Grid based on the list of columns in the updated data source.\n *\n * @param {Object | DataManager | DataResult} dataSource - Assign the new datasource.\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines columns.\n * @returns {void}\n *\n *\n * ```typescript\n * \n *
\n * \n * ```\n *\n */\n Grid.prototype.changeDataSource = function (dataSource, columns) {\n this.isChangeDataSourceCall = true;\n this.setProperties({ sortSettings: { columns: [] } }, true);\n this.setProperties({ filterSettings: { columns: [] } }, true);\n this.setProperties({ searchSettings: { key: '' } }, true);\n if (this.allowGrouping) {\n this.setProperties({ groupSettings: { columns: [] } }, true);\n }\n if (columns && columns.length) {\n this.setProperties({ columns: columns }, true);\n }\n if (dataSource) {\n if (isNullOrUndefined(columns)) {\n this.setProperties({ columns: [] }, true);\n }\n this.setProperties({ dataSource: dataSource }, true);\n }\n this.freezeRefresh();\n this.isChangeDataSourceCall = false;\n };\n /**\n * Clears all the sorted columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearSorting = function () {\n if (this.sortModule) {\n this.sortModule.clearSorting();\n }\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeSortColumn = function (field) {\n if (this.sortModule) {\n this.sortModule.removeSortColumn(field);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.clearGridActions = function () {\n this.setProperties({ sortSettings: { columns: [] } }, true);\n this.setProperties({ filterSettings: { columns: [] } }, true);\n this.setProperties({ searchSettings: { key: '' } }, true);\n if (this.allowGrouping) {\n this.setProperties({ groupSettings: { columns: [] } }, false);\n }\n else {\n this.freezeRefresh();\n }\n };\n /**\n * Filters grid row by column name with the given options.\n *\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, the grid filters the records with exact match. if false, it filters case\n * insensitive records (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true,\n * then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n *\n * @returns {void}\n */\n Grid.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n if (this.filterModule) {\n this.filterModule.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n }\n };\n /**\n * Clears all the filtered rows of the Grid.\n *\n * @param {string[]} fields - Defines the Fields\n * @returns {void}\n */\n Grid.prototype.clearFiltering = function (fields) {\n if (this.filterModule) {\n this.filterModule.clearFiltering(fields);\n }\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n if (this.filterModule) {\n this.filterModule.removeFilteredColsByField(field, isClearFilterBar);\n }\n };\n /**\n * Selects a row by given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n *\n * @returns {void}\n */\n Grid.prototype.selectRow = function (index, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectRow(index, isToggle);\n }\n };\n /**\n * Selects a collection of rows by indexes.\n *\n * @param {number[]} rowIndexes - Specifies the row indexes.\n *\n * @returns {void}\n */\n Grid.prototype.selectRows = function (rowIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectRows(rowIndexes);\n }\n };\n /**\n * Deselects the current selected rows and cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearSelection();\n }\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n *\n * @returns {void}\n */\n Grid.prototype.selectCell = function (cellIndex, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectCell(cellIndex, isToggle);\n }\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n *\n * @returns {void}\n */\n Grid.prototype.selectCellsByRange = function (startIndex, endIndex) {\n this.selectionModule.selectCellsByRange(startIndex, endIndex);\n };\n /**\n * Searches Grid records using the given key.\n * You can customize the default search option by using the\n * [`searchSettings`](./#searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n *\n * @returns {void}\n */\n Grid.prototype.search = function (searchString) {\n if (this.searchModule) {\n this.searchModule.search(searchString);\n }\n };\n /**\n * By default, prints all the pages of the Grid and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./#printmode).\n *\n * @returns {void}\n */\n Grid.prototype.print = function () {\n if (this.printModule) {\n this.printModule.print();\n }\n };\n /**\n * Delete a record with Given options. If fieldname and data is not given then grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldname - Defines the primary key field, 'Name of the column'.\n * @param {Object} data - Defines the JSON data of the record to be deleted.\n * @returns {void}\n */\n Grid.prototype.deleteRecord = function (fieldname, data) {\n if (this.editModule) {\n this.editModule.deleteRecord(fieldname, data);\n }\n };\n /**\n * Starts edit the selected row. At least one row must be selected before invoking this method.\n * `editSettings.allowEditing` should be true.\n * {% codeBlock src='grid/startEdit/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n Grid.prototype.startEdit = function () {\n if (this.editModule) {\n this.editModule.startEdit();\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n Grid.prototype.endEdit = function () {\n if (this.editModule) {\n this.editModule.endEdit();\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n Grid.prototype.closeEdit = function () {\n if (this.editModule) {\n this.editModule.closeEdit();\n }\n };\n /**\n * Adds a new record to the Grid. Without passing parameters, it adds empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n * @returns {void}\n */\n Grid.prototype.addRecord = function (data, index) {\n if (this.editModule) {\n this.editModule.addRecord(data, index);\n }\n };\n /**\n * Delete any visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n Grid.prototype.deleteRow = function (tr) {\n if (this.editModule) {\n this.editModule.deleteRow(tr);\n }\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n *\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n *\n * @returns {void}\n */\n Grid.prototype.editCell = function (index, field) {\n if (this.editModule) {\n this.editModule.editCell(index, field);\n }\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n * {% codeBlock src='grid/saveCell/index.md' %}{% endcodeBlock %}\n */\n Grid.prototype.saveCell = function () {\n if (this.editModule) {\n this.editModule.saveCell();\n }\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n *\n * @returns {void}\n */\n Grid.prototype.updateCell = function (rowIndex, field, value) {\n if (this.editModule) {\n this.editModule.updateCell(rowIndex, field, value);\n }\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * {% codeBlock src='grid/updateRow/index.md' %}{% endcodeBlock %}\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n *\n * @returns {void}\n */\n Grid.prototype.updateRow = function (index, data) {\n if (this.editModule) {\n this.editModule.updateRow(index, data);\n }\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} Returns the batch changes\n */\n Grid.prototype.getBatchChanges = function () {\n if (this.editModule) {\n return this.editModule.getBatchChanges();\n }\n return {};\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n *\n * @returns {void}\n */\n Grid.prototype.enableToolbarItems = function (items, isEnable) {\n if (this.toolbarModule) {\n this.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * Copy the selected rows or cells data into clipboard.\n *\n * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n * @returns {void}\n */\n Grid.prototype.copy = function (withHeader) {\n if (this.clipboardModule) {\n this.clipboardModule.copy(withHeader);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.recalcIndentWidth = function () {\n var _this_1 = this;\n if (!this.getHeaderTable().querySelector('.e-emptycell')) {\n return;\n }\n if ((!this.groupSettings.columns.length && !this.isDetail() && !this.isRowDragable()) ||\n this.getHeaderTable().querySelector('.e-emptycell').getAttribute('indentRefreshed') ||\n !this.getContentTable()) {\n return;\n }\n var indentWidth = this.getHeaderTable().querySelector('.e-emptycell').parentElement.offsetWidth;\n var headerCol = [].slice.call(this.getHeaderTable().querySelector(literals.colGroup).childNodes);\n var contentCol = [].slice.call(this.getContentTable().querySelector(literals.colGroup).childNodes);\n var perPixel = indentWidth / 30;\n var i = this.getFrozenMode() === 'Right' ? this.groupSettings.columns.length + this.getColumns().length : 0;\n var parentOffset = this.element.offsetWidth;\n var applyWidth = function (index, width) {\n if (ispercentageWidth(_this_1)) {\n var newWidth = (width / parentOffset * 100).toFixed(1) + '%';\n headerCol[parseInt(index.toString(), 10)].style.width = newWidth;\n contentCol[parseInt(index.toString(), 10)].style.width = newWidth;\n }\n else {\n headerCol[parseInt(index.toString(), 10)].style.width = width + 'px';\n contentCol[parseInt(index.toString(), 10)].style.width = width + 'px';\n }\n _this_1.notify(events.columnWidthChanged, { index: index, width: width });\n };\n if (perPixel >= 1) {\n indentWidth = (30 / perPixel);\n }\n if (indentWidth < 1) {\n indentWidth = 1;\n }\n if (this.enableColumnVirtualization || this.isAutoGen || (this.columns.length === this.groupSettings.columns.length)) {\n indentWidth = 30;\n }\n while (i < this.groupSettings.columns.length) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isDetail()) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isRowDragable()) {\n applyWidth(i, indentWidth);\n }\n this.isAutoGen = false;\n this.getHeaderTable().querySelector('.e-emptycell').setAttribute('indentRefreshed', 'true');\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.resetIndentWidth = function () {\n if (this.isDestroyed) {\n return;\n }\n if (ispercentageWidth(this)) {\n this.getHeaderTable().querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.widthService.setWidthToColumns();\n this.recalcIndentWidth();\n if (this.autoFit) {\n this.preventAdjustColumns();\n }\n }\n if ((this.width === 'auto' || typeof (this.width) === 'string' && this.width.indexOf('%') !== -1)\n && this.getColumns().filter(function (col) { return (!col.width || col.width === 'auto') && col.minWidth; }).length > 0) {\n var tgridWidth = this.widthService.getTableWidth(this.getColumns());\n this.widthService.setMinwidthBycalculation(tgridWidth);\n }\n if (this.isFrozenGrid() && this.enableColumnVirtualization && this.widthService) {\n this.widthService.refreshFrozenScrollbar();\n }\n if (this.allowTextWrap && this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n if (this.frozenRows && this.scrollModule) {\n this.scrollModule.resizeFrozenRowBorder();\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns isRowDragable\n */\n Grid.prototype.isRowDragable = function () {\n return this.allowRowDragAndDrop && !this.rowDropSettings.targetID;\n };\n /**\n * Changes the Grid column positions by field names.\n *\n * @param {string} fromFName - Defines the origin field name.\n * @param {string} toFName - Defines the destination field name.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumns = function (fromFName, toFName) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumns(fromFName, toFName);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByIndex multiple times,\n * then you won't get the same results every time.\n *\n * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByIndex(fromIndex, toIndex);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByTargetIndex multiple times,\n * then you will get the same results every time.\n *\n * @param {string} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByTargetIndex(fieldName, toIndex);\n }\n };\n /**\n * Changes the Grid Row position with given indexes.\n *\n * @param {number} fromIndexes - Defines the origin Indexes.\n * @param {number} toIndex - Defines the destination Index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderRows = function (fromIndexes, toIndex) {\n if (this.rowDragAndDropModule) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex);\n }\n };\n /**\n * @param {ReturnType} e - Defines the Return type\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshDataSource = function (e) {\n this.notify('refreshdataSource', e);\n };\n /**\n * @param {boolean} enable -Defines the enable\n * @returns {void}\n * @hidden\n */\n Grid.prototype.disableRowDD = function (enable) {\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n var headerRows = headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell');\n var rows = this.getRows();\n var disValue = enable ? 'none' : '';\n setStyleAttribute(headerTable.querySelector(literals.colGroup).childNodes[0], { 'display': disValue });\n setStyleAttribute(contentTable.querySelector(literals.colGroup).childNodes[0], { 'display': disValue });\n for (var i = 0; i < this.getRows().length; i++) {\n var ele = rows[parseInt(i.toString(), 10)].firstElementChild;\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n for (var j = 0; j < headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell').length; j++) {\n var ele = headerRows[parseInt(j.toString(), 10)];\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n };\n /**\n * Changes the column width to automatically fit its content to ensure that the width shows the content without wrapping/hiding.\n * > * This method ignores the hidden columns.\n * > * Uses the `autoFitColumns` method in the `dataBound` event to resize at initial rendering.\n * > * By specifying the start row index and end row index, providing the range within which the maximum width for that column should be considered when applying `autoFitColumns`.\n * > * The width of header rows is always calculated. If the width of a header row exceeds the specified range, its width will be allocated to the specific content rows.\n *\n * @param {string |string[]} fieldNames - Defines the column names.\n * @param {number} startRowIndex - Specifies the start index of the content row.\n * @param {number} endRowIndex - Specifies the end index of content row.\n * @returns {void}\n *\n *\n * ```typescript\n *
\n * \n * ```\n *\n */\n Grid.prototype.autoFitColumns = function (fieldNames, startRowIndex, endRowIndex) {\n var injectedModules = this.getInjectedModules();\n var resize = injectedModules.find(function (item) {\n if (typeof item === 'function' && !isNullOrUndefined(item.prototype)) {\n return item.prototype.getModuleName() === 'resize';\n }\n else {\n return item.name === 'Resize';\n }\n });\n if (!this.resizeModule && resize) {\n this.autoFitColumnsResize = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.injectModules();\n }\n if (this.resizeModule) {\n this.resizeModule.autoFitColumns(fieldNames, startRowIndex, endRowIndex);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.preventAdjustColumns = function () {\n if ((this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical')\n || (this.allowResizing && this.resizeSettings.mode === 'Auto')) {\n return;\n }\n var columns = this.getColumns();\n var headerTable = this.getHeaderTable();\n var tableWidth = 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].visible) {\n if (this.groupSettings.columns.length\n && this.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) > -1) {\n var headerCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll(':not(.e-group-intent):not(.e-detail-intent):not(.e-drag-intent)'));\n if (headerCol[parseInt(i.toString(), 10)].style.display === 'none') {\n continue;\n }\n }\n if (columns[parseInt(i.toString(), 10)].width) {\n tableWidth += parseFloat(columns[parseInt(i.toString(), 10)].width.toString());\n }\n else {\n tableWidth = 0;\n break;\n }\n }\n }\n if (tableWidth) {\n var percentageWidth = this.isPercentageWidthGrid();\n var unit = this.widthUnit(percentageWidth);\n var contentTable = this.getContentTable();\n if (this.groupSettings.columns.length || this.isDetail() || this.isRowDragable()) {\n var indentWidth = this.defaultIndentWidth(percentageWidth);\n var indentWidthUnitFormat = indentWidth.toString() + unit;\n var headerIndentCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n var contentIndentCol = [].slice.call(contentTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n for (var i = 0; i < headerIndentCol.length; i++) {\n headerIndentCol[parseInt(i.toString(), 10)].style.setProperty('width', indentWidthUnitFormat);\n contentIndentCol[parseInt(i.toString(), 10)].style.setProperty('width', indentWidthUnitFormat);\n tableWidth += indentWidth;\n }\n }\n if ((percentageWidth && tableWidth < 100)\n || (!percentageWidth && tableWidth < contentTable.parentElement.clientWidth)) {\n if (!isNullOrUndefined(contentTable.querySelector('.e-emptyrow'))) {\n addClass([headerTable], ['e-tableborder']);\n removeClass([contentTable], ['e-tableborder']);\n }\n else {\n addClass([headerTable, contentTable], ['e-tableborder']);\n }\n }\n var tableWidthUnitFormat = tableWidth.toString() + unit;\n headerTable.style.setProperty('width', tableWidthUnitFormat);\n contentTable.style.setProperty('width', tableWidthUnitFormat);\n }\n else {\n this.restoreAdjustColumns();\n }\n };\n Grid.prototype.restoreAdjustColumns = function () {\n if ((this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical')\n || (this.allowResizing && this.resizeSettings.mode === 'Auto')) {\n return;\n }\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n removeClass([headerTable, contentTable], ['e-tableborder']);\n headerTable.style.removeProperty('width');\n contentTable.style.removeProperty('width');\n if (this.groupSettings.columns.length || this.isDetail() || this.isRowDragable()) {\n var percentageWidth = this.isPercentageWidthGrid();\n var indentWidthUnitFormat_1 = this.defaultIndentWidth(percentageWidth).toString() + this.widthUnit(percentageWidth);\n var headerIndentCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n headerIndentCol.forEach(function (element) {\n element.style.setProperty('width', indentWidthUnitFormat_1);\n });\n headerTable.querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.recalcIndentWidth();\n }\n };\n Grid.prototype.widthUnit = function (percentageWidth) {\n return percentageWidth ? '%' : 'px';\n };\n Grid.prototype.defaultIndentWidth = function (percentageWidth) {\n return percentageWidth ? parseFloat((30 / this.element.offsetWidth * 100).toFixed(1)) : 30;\n };\n Grid.prototype.isPercentageWidthGrid = function () {\n return this.getColumns()[0].width.toString().indexOf('%') > -1;\n };\n /**\n * @param {number} x - Defines the number\n * @param {number} y - Defines the number\n * @param {Element} target - Defines the Element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createColumnchooser = function (x, y, target) {\n if (this.columnChooserModule) {\n this.columnChooserModule.renderColumnChooser(x, y, target);\n }\n };\n Grid.prototype.initializeServices = function () {\n this.serviceLocator.register('widthService', this.widthService = new ColumnWidthService(this));\n this.serviceLocator.register('cellRendererFactory', new CellRendererFactory);\n this.serviceLocator.register('rendererFactory', new RendererFactory);\n this.serviceLocator.register('localization', this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale));\n this.serviceLocator.register('valueFormatter', this.valueFormatterService = new ValueFormatter(this.locale));\n this.serviceLocator.register('showHideService', this.showHider = new ShowHide(this));\n this.serviceLocator.register('ariaService', this.ariaService = new AriaService());\n this.serviceLocator.register('focus', this.focusModule = new FocusStrategy(this));\n };\n Grid.prototype.processModel = function () {\n var gCols = this.groupSettings.columns;\n var sCols = this.sortSettings.columns;\n var flag;\n var j;\n if (this.allowGrouping) {\n var _loop_3 = function (i, len) {\n j = 0;\n for (var sLen = sCols.length; j < sLen; j++) {\n if (sCols[parseInt(j.toString(), 10)].field === gCols[parseInt(i.toString(), 10)]) {\n flag = true;\n break;\n }\n }\n if (!flag) {\n sCols.push({ field: gCols[parseInt(i.toString(), 10)], direction: 'Ascending', isFromGroup: true });\n }\n else {\n if (this_3.allowSorting) {\n this_3.sortedColumns.push(sCols[parseInt(j.toString(), 10)].field);\n }\n else {\n sCols[parseInt(j.toString(), 10)].direction = 'Ascending';\n }\n }\n if (!this_3.groupSettings.showGroupedColumn) {\n var column = this_3.enableColumnVirtualization ?\n this_3.columns.filter(function (c) { return c.field === gCols[parseInt(i.toString(), 10)]; })[0]\n : this_3.getColumnByField(gCols[parseInt(i.toString(), 10)]);\n if (column) {\n column.visible = false;\n }\n else {\n this_3.log('initial_action', { moduleName: 'group', columnName: gCols[parseInt(i.toString(), 10)] });\n }\n }\n };\n var this_3 = this;\n for (var i = 0, len = gCols.length; i < len; i++) {\n _loop_3(i, len);\n }\n }\n if (!gCols.length) {\n for (var i = 0; i < sCols.length; i++) {\n this.sortedColumns.push(sCols[parseInt(i.toString(), 10)].field);\n }\n }\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n this.emptyRecordTemplateFn = templateCompiler(this.emptyRecordTemplate);\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n this.editTemplateFn = templateCompiler(this.editSettings.template);\n this.editHeaderTemplateFn = templateCompiler(this.editSettings.headerTemplate);\n this.editFooterTemplateFn = templateCompiler(this.editSettings.footerTemplate);\n if (!isNullOrUndefined(this.parentDetails)) {\n var value = isNullOrUndefined(this.parentDetails.parentKeyFieldValue) ? 'undefined' :\n this.parentDetails.parentKeyFieldValue;\n this.query.where(this.queryString, 'equal', value, true);\n }\n this.initForeignColumn();\n };\n Grid.prototype.initForeignColumn = function () {\n if (this.isForeignKeyEnabled(this.getColumns())) {\n this.notify(events.initForeignKeyColumn, this.getForeignKeyColumns());\n }\n };\n Grid.prototype.enableVerticalRendering = function () {\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n else {\n this.element.classList.remove('e-row-responsive');\n }\n };\n Grid.prototype.gridRender = function () {\n var _a;\n this.updateRTL();\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n if (this.enableHover) {\n this.element.classList.add('e-gridhover');\n }\n if (Browser.isDevice) {\n this.element.classList.add('e-device');\n }\n if (this.rowHeight) {\n this.element.classList.add('e-grid-min-height');\n }\n if (this.cssClass) {\n if (this.cssClass.indexOf(' ') !== -1) {\n (_a = this.element.classList).add.apply(_a, this.cssClass.split(' '));\n }\n else {\n this.element.classList.add(this.cssClass);\n }\n }\n // If the below if statement is removed, then drag and drop between grids will not work in firefox browser.\n if (this.allowRowDragAndDrop && this.rowDropSettings.targetID && Browser.info.name === 'mozilla') {\n this.element.classList.add('e-disableuserselect');\n }\n if (this.editSettings.showAddNewRow && (this.enableVirtualization || this.enableInfiniteScrolling)) {\n this.editSettings.newRowPosition = 'Top';\n }\n classList(this.element, ['e-responsive', 'e-default'], []);\n var rendererFactory = this.serviceLocator.getService('rendererFactory');\n this.headerModule = rendererFactory.getRenderer(RenderType.Header);\n this.contentModule = rendererFactory.getRenderer(RenderType.Content);\n this.printModule = new Print(this, this.scrollModule);\n this.clipboardModule = new Clipboard(this, this.serviceLocator);\n this.renderModule.render();\n this.eventInitializer();\n this.createGridPopUpElement();\n this.widthService.setWidthToColumns();\n this.updateGridLines();\n this.applyTextWrap();\n this.createTooltip(); //for clip mode ellipsis\n this.enableBoxSelection();\n };\n Grid.prototype.dataReady = function () {\n this.scrollModule.setWidth();\n this.scrollModule.setHeight();\n if (this.height !== 'auto') {\n this.scrollModule.setPadding();\n }\n };\n Grid.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Grid.prototype.createGridPopUpElement = function () {\n var popup = this.createElement('div', { className: 'e-gridpopup', styles: 'display:none;' });\n var content = this.createElement('div', { className: literals.content, attrs: { tabIndex: '-1' } });\n append([content, this.createElement('div', { className: 'e-uptail e-tail' })], popup);\n content.appendChild(this.createElement('span'));\n append([content, this.createElement('div', { className: 'e-downtail e-tail' })], popup);\n this.element.appendChild(popup);\n };\n Grid.prototype.updateGridLines = function () {\n classList(this.element, [], ['e-verticallines', 'e-horizontallines', 'e-hidelines', 'e-bothlines']);\n switch (this.gridLines) {\n case 'Horizontal':\n this.element.classList.add('e-horizontallines');\n break;\n case 'Vertical':\n this.element.classList.add('e-verticallines');\n break;\n case 'None':\n this.element.classList.add('e-hidelines');\n break;\n case 'Both':\n this.element.classList.add('e-bothlines');\n break;\n }\n this.updateResizeLines();\n };\n Grid.prototype.updateResizeLines = function () {\n if (this.allowResizing &&\n !(this.gridLines === 'Vertical' || this.gridLines === 'Both')) {\n this.element.classList.add('e-resize-lines');\n }\n else {\n this.element.classList.remove('e-resize-lines');\n }\n };\n /**\n * The function is used to apply text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyTextWrap = function () {\n if (this.allowTextWrap) {\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n switch (this.textWrapSettings.wrapMode) {\n case 'Header':\n wrap(this.element, false);\n wrap(this.getContent(), false);\n wrap(headerRows, true);\n break;\n case 'Content':\n wrap(this.getContent(), true);\n wrap(this.element, false);\n wrap(headerRows, false);\n break;\n default:\n wrap(this.element, true);\n wrap(this.getContent(), false);\n wrap(headerRows, false);\n }\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n }\n };\n /**\n * The function is used to remove text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeTextWrap = function () {\n wrap(this.element, false);\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n wrap(headerRows, false);\n wrap(this.getContent(), false);\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n };\n /**\n * The function is used to add Tooltip to the grid cell that has ellipsiswithtooltip clip mode.\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createTooltip = function () {\n this.toolTipObj = new Tooltip({\n opensOn: 'custom',\n content: '',\n cssClass: this.cssClass ? this.cssClass : null\n }, this.element);\n };\n /** @hidden\n * @returns {void}\n */\n Grid.prototype.freezeRefresh = function () {\n if (this.enableVirtualization || this.enableInfiniteScrolling) {\n this.pageSettings.currentPage = 1;\n }\n this.componentRefresh();\n };\n Grid.prototype.getTooltipStatus = function (element) {\n var headerTable = this.getHeaderTable();\n var headerDivTag = this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical' ? 'e-gridcontent' : 'e-gridheader';\n var htable = this.createTable(headerTable, headerDivTag, 'header');\n var ctable = this.createTable(headerTable, headerDivTag, 'content');\n var table = element.classList.contains('e-headercell') ? htable : ctable;\n var ele = element.classList.contains('e-headercell') ? 'th' : 'tr';\n table.querySelector(ele).className = element.className;\n table.querySelector(ele).innerHTML = element.innerHTML;\n var width = table.querySelector(ele).getBoundingClientRect().width;\n document.body.removeChild(htable);\n document.body.removeChild(ctable);\n if ((width > element.getBoundingClientRect().width && !element.classList.contains('e-editedbatchcell')) ||\n (this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical' &&\n width > (element.getBoundingClientRect().width * 0.55) - (this.height !== 'auto' ? 16 : 0))) {\n // 0.55 - defines the width of adaptive content cell, 16 - defines the scrollbar width\n return true;\n }\n return false;\n };\n Grid.prototype.mouseMoveHandler = function (e) {\n if (this.isEllipsisTooltip()) {\n var element = parentsUntil(e.target, 'e-ellipsistooltip');\n if (this.prevElement !== element || e.type === 'mouseout') {\n this.toolTipObj.close();\n }\n var tagName = e.target.tagName;\n var elemNames = ['A', 'BUTTON', 'INPUT'];\n if (element && e.type !== 'mouseout' && !(Browser.isDevice && elemNames.indexOf(tagName) !== -1)) {\n if (this.getTooltipStatus(element)) {\n var col = this.getColumns()[parseInt(element.getAttribute(literals.dataColIndex), 10)];\n var domSetter = col.disableHtmlEncode ? 'innerText' : 'innerHTML';\n var contentDiv = this.createElement('div');\n if (element.getElementsByClassName('e-headertext').length) {\n var innerElement = element.getElementsByClassName('e-headertext')[0];\n contentDiv[\"\" + domSetter] = this.sanitize(innerElement.innerText);\n this.toolTipObj.content = contentDiv;\n }\n else {\n contentDiv[\"\" + domSetter] = this.sanitize(element.innerText);\n this.toolTipObj.content = contentDiv;\n }\n this.prevElement = element;\n if (this.enableHtmlSanitizer) {\n this.toolTipObj.enableHtmlSanitizer = true;\n }\n if (col.disableHtmlEncode) {\n this.toolTipObj.enableHtmlParse = false;\n }\n this.toolTipObj['open'](element);\n }\n }\n }\n };\n Grid.prototype.isEllipsisTooltip = function () {\n var cols = this.getColumns();\n if (this.clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n }\n return false;\n };\n Grid.prototype.scrollHandler = function () {\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n };\n /**\n * To create table for ellipsiswithtooltip\n *\n * @param {Element} table - Defines the table\n * @param {string} tag - Defines the tag\n * @param {string} type - Defines the type\n * @returns {HTMLDivElement} Returns the HTML div ELement\n * @hidden\n */\n Grid.prototype.createTable = function (table, tag, type) {\n var myTableDiv = this.createElement('div');\n myTableDiv.className = this.element.className;\n myTableDiv.style.cssText = 'display: inline-block;visibility:hidden;position:absolute';\n var mySubDiv = this.createElement('div');\n mySubDiv.className = tag;\n var myTable = this.createElement('table');\n myTable.className = table.className;\n myTable.style.cssText = 'table-layout: auto;width: auto';\n var ele = (type === 'header') ? 'th' : 'td';\n var myTr = this.createElement('tr', { attrs: { role: 'row' } });\n var mytd = this.createElement(ele);\n myTr.appendChild(mytd);\n myTable.appendChild(myTr);\n mySubDiv.appendChild(myTable);\n myTableDiv.appendChild(mySubDiv);\n document.body.appendChild(myTableDiv);\n return myTableDiv;\n };\n Grid.prototype.onKeyPressed = function (e) {\n if (e.action === 'tab' || e.action === 'shiftTab') {\n this.toolTipObj.close();\n }\n };\n /**\n * Binding events to the element while component creation.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'touchend', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'dblclick', this.dblClickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyPressHandler, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'resize', this.resetIndentWidth, this);\n if (this.allowKeyboard) {\n this.element.tabIndex = this.element.tabIndex === -1 ? 0 : this.element.tabIndex;\n }\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.getContent().firstElementChild, 'scroll', this.scrollHandler, this);\n EventHandler.add(this.element, 'mouseover', this.mouseMoveHandler, this);\n EventHandler.add(this.element, 'mouseout', this.mouseMoveHandler, this);\n EventHandler.add(this.getContent(), 'touchstart', this.tapEvent, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.mouseClickHandler);\n EventHandler.remove(this.element, 'touchend', this.mouseClickHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'dblclick', this.dblClickHandler);\n EventHandler.remove(this.getContent().firstElementChild, 'scroll', this.scrollHandler);\n EventHandler.remove(this.element, 'mouseover', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'mouseout', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'keydown', this.keyPressHandler);\n EventHandler.remove(this.getContent(), 'touchstart', this.tapEvent);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'resize', this.resetIndentWidth);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.addListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.on(events.dataReady, this.dataReady, this);\n this.on(events.contentReady, this.recalcIndentWidth, this);\n this.on(events.headerRefreshed, this.recalcIndentWidth, this);\n this.on(events.refreshFrozenPosition, this.refreshFrozenPosition, this);\n this.on(events.refreshSplitFrozenColumn, this.refreshSplitFrozenColumn, this);\n this.dataBoundFunction = this.refreshMediaCol.bind(this);\n this.addEventListener(events.dataBound, this.dataBoundFunction);\n this.on(events.keyPressed, this.onKeyPressed, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.dataReady, this.dataReady);\n this.off(events.contentReady, this.recalcIndentWidth);\n this.off(events.headerRefreshed, this.recalcIndentWidth);\n this.on(events.refreshFrozenPosition, this.refreshFrozenPosition, this);\n this.on(events.refreshSplitFrozenColumn, this.refreshSplitFrozenColumn, this);\n this.removeEventListener(events.dataBound, this.dataBoundFunction);\n this.off(events.keyPressed, this.onKeyPressed);\n };\n /**\n * Get current visible data of grid.\n *\n * @returns {Object[]} Returns the current view records\n *\n * @isGenericType true\n */\n Grid.prototype.getCurrentViewRecords = function () {\n if (isGroupAdaptive(this)) {\n return isNullOrUndefined(this.currentViewData.records) ?\n this.currentViewData : this.currentViewData.records;\n }\n if (this.groupSettings.enableLazyLoading) {\n return this.currentViewData;\n }\n return (this.allowGrouping && this.groupSettings.columns.length && this.currentViewData.length\n && this.currentViewData.records) ? this.currentViewData.records\n : this.currentViewData;\n };\n Grid.prototype.mouseClickHandler = function (e) {\n if (this.isChildGrid(e) || (parentsUntil(e.target, 'e-gridpopup') && e.touches) ||\n this.element.getElementsByClassName('e-cloneproperties').length || this.checkEdit(e)) {\n return;\n }\n if (((!this.allowRowDragAndDrop && (parentsUntil(e.target, literals.gridContent) ||\n e.target.tagName === 'TD')) || (!(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 !this.editSettings.showAddNewRow);\n return !parentsUntil(e.target, 'e-unboundcelldiv') && (isEdit || (parentsUntil(e.target, literals.rowCell) &&\n parentsUntil(e.target, literals.rowCell).classList.contains('e-editedbatchcell')));\n };\n Grid.prototype.dblClickHandler = function (e) {\n var grid = parentsUntil(e.target, 'e-grid');\n if (isNullOrUndefined(grid) || grid.id !== this.element.id || closest(e.target, '.e-unboundcelldiv')) {\n return;\n }\n var dataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n dataRow = rowObj ? rowObj.isDataRow : false;\n }\n var args = this.getRowInfo(e.target);\n args.target = e.target;\n if (dataRow) {\n this.trigger(events.recordDoubleClick, args);\n }\n this.notify(events.dblclick, e);\n };\n Grid.prototype.focusOutHandler = function (e) {\n if (this.isChildGrid(e)) {\n return;\n }\n if (!parentsUntil(e.target, 'e-grid')) {\n this.element.querySelector('.e-gridpopup').style.display = 'None';\n }\n var filterClear = this.element.querySelector('.e-cancel:not(.e-hide)');\n if (filterClear && !filterClear.parentElement.classList.contains('e-tbar-btn')) {\n filterClear.classList.add('e-hide');\n }\n var relatedTarget = e.relatedTarget;\n var ariaOwns = relatedTarget ? relatedTarget.getAttribute('aria-owns') : null;\n if ((!relatedTarget || (!parentsUntil(relatedTarget, 'e-grid') &&\n (!isNullOrUndefined(ariaOwns) &&\n (ariaOwns)) !== e.target.getAttribute('aria-owns')))\n && !this.keyPress && this.isEdit && !Browser.isDevice) {\n if (this.editSettings.mode === 'Batch' && !(((parentsUntil(relatedTarget, 'e-ddl') || parentsUntil(relatedTarget, 'e-ddt')) &&\n (parentsUntil(relatedTarget, 'e-multi-select-list-wrapper') || parentsUntil(relatedTarget, 'e-input-filter'))) &&\n parentsUntil(relatedTarget, 'e-input-group')) && (parentsUntil(relatedTarget, 'e-uploader') || !(relatedTarget &&\n isNullOrUndefined(parentsUntil(relatedTarget, 'e-input-group'))))) {\n this.editModule.saveCell();\n this.notify(events.editNextValCell, {});\n }\n if (this.editSettings.mode === 'Normal') {\n this.editModule.editFormValidate();\n }\n }\n if (this.editSettings.showAddNewRow) {\n this.editModule.isShowAddedRowValidate = false;\n }\n this.keyPress = false;\n };\n Grid.prototype.isChildGrid = function (e) {\n var gridElement = parentsUntil(e.target, 'e-grid');\n if ((gridElement && gridElement.id !== this.element.id) || (parentsUntil(e.target, 'e-unboundcelldiv') &&\n isNullOrUndefined(gridElement))) {\n return true;\n }\n return false;\n };\n /**\n * @param {Object} persistedData - Defines the persisted data\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mergePersistGridData = function (persistedData) {\n var data = this.getLocalData();\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n if (this.enableVirtualization && dataObj.pageSettings) {\n dataObj.pageSettings.currentPage = 1;\n }\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof this[\"\" + key] === 'object') && !isNullOrUndefined(this[\"\" + key])) {\n if (Array.isArray(this[\"\" + key]) && key === 'columns') {\n this.setFrozenCount();\n setColumnIndex(this[\"\" + key]);\n this.mergeColumns(dataObj[\"\" + key], this[\"\" + key]);\n this.mergedColumns = true;\n this[\"\" + key] = dataObj[\"\" + key];\n }\n else {\n extend(this[\"\" + key], dataObj[\"\" + key]);\n }\n }\n else {\n this[\"\" + key] = dataObj[\"\" + key];\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n Grid.prototype.mergeColumns = function (storedColumn, columns) {\n var storedColumns = storedColumn;\n var isFrozenGrid = this.isFrozenGrid();\n var _loop_4 = function (i) {\n var localCol = columns.filter(function (tCol) { return isFrozenGrid ?\n tCol.index === storedColumns[parseInt(i.toString(), 10)][\"\" + literals.initialFrozenColumnIndex] :\n tCol.index === storedColumns[parseInt(i.toString(), 10)].index; })[0];\n if (!isNullOrUndefined(localCol)) {\n if (isFrozenGrid) {\n localCol = extend({}, localCol, {}, true);\n localCol.freeze = storedColumns[parseInt(i.toString(), 10)].freeze;\n }\n if (localCol.columns && localCol.columns.length) {\n this_4.mergeColumns(storedColumns[parseInt(i.toString(), 10)].columns, localCol.columns);\n storedColumns[parseInt(i.toString(), 10)] = extend(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n else {\n storedColumns[parseInt(i.toString(), 10)] = extend(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n }\n };\n var this_4 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_4(i);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns the isDetail\n */\n Grid.prototype.isDetail = function () {\n return !isNullOrUndefined(this.detailTemplate) || !isNullOrUndefined(this.childGrid);\n };\n Grid.prototype.isCommandColumn = function (columns) {\n var _this_1 = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this_1.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n Grid.prototype.isForeignKeyEnabled = function (columns) {\n var _this_1 = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this_1.isForeignKeyEnabled(col.columns);\n }\n return !!(col.dataSource && col.foreignKeyValue);\n });\n };\n Grid.prototype.keyPressHandler = function (e) {\n var presskey = extend(e, { cancel: false });\n this.trigger('keyPressed', presskey);\n if (presskey.cancel === true) {\n e.stopImmediatePropagation();\n }\n };\n Grid.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) { //alt j\n if (this.keyA) { //alt A J\n this.notify(events.groupCollapse, { target: e.target, collapse: false });\n this.keyA = false;\n }\n else {\n if (this.focusModule && this.focusModule.currentInfo && this.focusModule.currentInfo.element) {\n removeClass([this.focusModule.currentInfo.element, this.focusModule.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.focusModule.currentInfo.element.tabIndex = -1;\n }\n if (!this.element.classList.contains('e-childgrid')) {\n this.element.focus();\n }\n }\n }\n if (e.keyCode === 87) { //alt w\n var focusModule = this.focusModule;\n if (focusModule) {\n if (!this.currentViewData.length) {\n return;\n }\n focusModule.focusContent();\n focusModule.addOutline();\n }\n }\n if (e.keyCode === 65) { //alt A\n this.keyA = true;\n }\n if (e.keyCode === 72 && this.keyA) { //alt A H\n this.notify(events.groupCollapse, { target: e.target, collapse: true });\n this.keyA = false;\n }\n }\n if (e.keyCode === 13) {\n this.notify(events.enterKeyHandler, e);\n }\n };\n Grid.prototype.keyActionHandler = function (e) {\n if (this.isChildGrid(e) ||\n ((this.isEdit && (!this.editSettings.showAddNewRow || (this.editSettings.showAddNewRow &&\n this.element.querySelector(literals.editedRow)))) && e.action !== 'escape' && e.action !== 'enter'\n && e.action !== 'shiftEnter' && e.action !== 'tab' && e.action !== 'shiftTab')) {\n return;\n }\n else {\n this.keyPress = true;\n }\n if (this.allowKeyboard) {\n if (e.action === 'ctrlPlusP') {\n e.preventDefault();\n this.print();\n }\n this.notify(events.keyPressed, e);\n }\n };\n /**\n * @param {Function[]} modules - Defines the modules\n * @returns {void}\n * @hidden\n */\n Grid.prototype.setInjectedModules = function (modules) {\n this.injectedModules = modules;\n };\n Grid.prototype.updateColumnObject = function () {\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n setColumnIndex(this.columns);\n this.initForeignColumn();\n this.notify(events.autoCol, {});\n };\n Grid.prototype.refreshFrozenPosition = function (obj) {\n if (obj && obj.isModeChg) {\n this.refreshColumns();\n this.notify(events.refreshResizePosition, {});\n }\n else {\n this.refreshColumns();\n }\n };\n /**\n * Gets the foreign columns from Grid.\n *\n * @returns {Column[]} Returns Foreign key column\n */\n Grid.prototype.getForeignKeyColumns = function () {\n return this.getColumns().filter(function (col) {\n return col.isForeignColumn();\n });\n };\n /**\n * @hidden\n * @returns {number} Returns row height\n */\n Grid.prototype.getRowHeight = function () {\n return this.rowHeight ? this.rowHeight : getRowHeight(this.element);\n };\n /**\n * Refreshes the Grid column changes.\n *\n * @returns {void}\n */\n Grid.prototype.refreshColumns = function () {\n this.freezeColumnRefresh = true;\n this.setFrozenCount();\n this.updateFrozenColumnsWidth();\n if (this.isFrozenGrid()) {\n this.isPreventScrollEvent = true;\n }\n this.updateColumnObject();\n this.checkLockColumns(this.getColumns());\n this.refresh();\n if (this.isFrozenGrid() && this.enableColumnVirtualization) {\n var left = this.getContent().querySelector('.e-movablescrollbar').scrollLeft;\n this.getHeaderContent().querySelector('.' + literals.headerContent).scrollLeft = left;\n this.getContent().querySelector('.' + literals.content).scrollLeft = left;\n }\n };\n /**\n * Export Grid data to Excel file(.xlsx).\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns the excelexport\n */\n Grid.prototype.excelExport = function (excelExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n workbook, isBlob) {\n if (this.exportGrids && this.exportGrids.length) {\n var gridIds = this.exportGrids.slice();\n return this.exportMultipleExcelGrids(gridIds, excelExportProperties, isMultipleExport, workbook, isBlob);\n }\n else {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n }\n };\n /**\n * Export Grid data to CSV file.\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns csv export\n */\n Grid.prototype.csvExport = function (excelExportProperties, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isMultipleExport, workbook, isBlob) {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, true, isBlob) : null;\n };\n /**\n * Export Grid data to PDF document.\n *\n * @param {pdfExportProperties} pdfExportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Define to enable multiple export.\n * @param {pdfDoc} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n *\n * @returns {Promise} Returns pdfexport\n */\n Grid.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n if (this.exportGrids && this.exportGrids.length) {\n var gridIds = this.exportGrids.slice();\n return this.exportMultiplePdfGrids(gridIds, pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n }\n else {\n return this.pdfExportModule ? this.pdfExportModule.Map(this, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) : null;\n }\n };\n Grid.prototype.exportMultiplePdfGrids = function (gridIds, pdfExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n pdfDoc, isBlob) {\n var _this = this;\n if (gridIds.length !== 0) {\n var currentGridId = gridIds.shift();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentGridInstance = document.getElementById(currentGridId).ej2_instances[0];\n var exportPromise = currentGridInstance.pdfExportModule ?\n currentGridInstance.pdfExportModule.Map(currentGridInstance, pdfExportProperties, isMultipleExport, pdfDoc, isBlob)\n : Promise.resolve();\n return exportPromise.then(function (exportedGridResults) {\n isMultipleExport = gridIds.length === 1 ? false : true;\n return _this.exportMultiplePdfGrids(gridIds, pdfExportProperties, isMultipleExport, exportedGridResults, isBlob);\n });\n }\n return null;\n };\n Grid.prototype.exportMultipleExcelGrids = function (gridIds, excelExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n workbook, isBlob) {\n var _this = this;\n if (gridIds.length !== 0) {\n var currentGridId = gridIds.shift();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentGridInstance = document.getElementById(currentGridId).ej2_instances[0];\n var exportPromise = currentGridInstance.excelExportModule ?\n currentGridInstance.excelExportModule.Map(currentGridInstance, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n return exportPromise.then(function (exportedGridResults) {\n isMultipleExport = gridIds.length === 1 ? false : true;\n return _this.exportMultipleExcelGrids(gridIds, excelExportProperties, isMultipleExport, exportedGridResults, isBlob);\n });\n }\n return null;\n };\n /**\n * Groups a column by column name.\n *\n * @param {string} columnName - Defines the column name to group.\n *\n * @returns {void}\n */\n Grid.prototype.groupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.groupColumn(columnName);\n }\n };\n /**\n * Expands all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupExpandAll = function () {\n if (this.groupModule) {\n this.groupModule.expandAll();\n }\n };\n /**\n * Collapses all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupCollapseAll = function () {\n if (this.groupModule) {\n this.groupModule.collapseAll();\n }\n };\n /**\n * Expands or collapses grouped rows by target element.\n *\n * @param {Element} target - Defines the target element of the grouped row.\n * @returns {void}\n */\n // public expandCollapseRows(target: Element): void {\n // if (this.groupModule) {\n // this.groupModule.expandCollapseRows(target);\n // }\n // }\n /**\n * Clears all the grouped columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearGrouping = function () {\n if (this.groupModule) {\n this.groupModule.clearGrouping();\n }\n };\n /**\n * Ungroups a column by column name.\n *\n * {% codeBlock src='grid/ungroupColumn/index.md' %}{% endcodeBlock %}\n *\n * @param {string} columnName - Defines the column name to ungroup.\n *\n * @returns {void}\n */\n Grid.prototype.ungroupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.ungroupColumn(columnName);\n }\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} x - Defines the X axis.\n * @param {number} y - Defines the Y axis.\n *\n * @returns {void}\n */\n Grid.prototype.openColumnChooser = function (x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\n }\n };\n Grid.prototype.scrollRefresh = function () {\n var _this_1 = this;\n var refresh = function () {\n _this_1.scrollModule.refresh();\n _this_1.off(events.contentReady, refresh);\n };\n this.on(events.contentReady, refresh, this);\n };\n /**\n * Collapses a detail row with the given target.\n *\n * @param {Element} target - Defines the expanded element to collapse.\n * @returns {void}\n */\n // public detailCollapse(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.collapse(target);\n // }\n // }\n /**\n * Collapses all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailCollapseAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.collapseAll();\n }\n };\n /**\n * Expands a detail row with the given target.\n *\n * @param {Element} target - Defines the collapsed element to expand.\n * @returns {void}\n */\n // public detailExpand(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.expand(target);\n // }\n // }\n /**\n * Expands all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailExpandAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.expandAll();\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearCellSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearCellSelection();\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Grid.prototype.clearRowSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearRowSelection();\n }\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n *\n * @returns {void}\n */\n Grid.prototype.selectCells = function (rowCellIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectCells(rowCellIndexes);\n }\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n *\n * @returns {void}\n */\n Grid.prototype.selectRowsByRange = function (startIndex, endIndex) {\n if (this.selectionModule) {\n this.selectionModule.selectRowsByRange(startIndex, endIndex);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns whether context menu is open or not\n */\n Grid.prototype.isContextMenuOpen = function () {\n return this.contextMenuModule && this.contextMenuModule.isOpen;\n };\n /**\n * @param {Function} module - Defines the module\n * @returns {boolean} return the injected modules\n * @hidden\n */\n Grid.prototype.ensureModuleInjected = function (module) {\n return this.getInjectedModules().indexOf(module) >= 0;\n };\n /**\n * Destroys the given template reference.\n *\n * @param {string[]} propertyNames - Defines the collection of template name.\n * @param {any} index - specifies the index\n *\n * @returns {void}\n */\n // eslint-disable-next-line\n Grid.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * @param {string | string[]} type - Defines the type\n * @param {Object} args - Defines the arguments\n * @returns {void}\n * @hidden\n * @private\n */\n Grid.prototype.log = function (type, args) {\n var injectedModules = this.getInjectedModules();\n var logger = injectedModules.find(function (item) { return item.name === 'Logger'; });\n if (!logger) {\n Grid_1.Inject(Logger);\n this.enableLogger = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.injectModules();\n }\n // eslint-disable-next-line\n this.loggerModule ? this.loggerModule.log(type, args) : (function () { return 0; })();\n };\n /**\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyBiggerTheme = function (element) {\n if (this.element.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n };\n /**\n * @hidden\n * @returns {Object} Returns the previous row data\n */\n Grid.prototype.getPreviousRowData = function () {\n var previousRowData = this.getRowsObject()[this.getRows().length - 1].data;\n return previousRowData;\n };\n /**\n * Hides the scrollbar placeholder of Grid content when grid content is not overflown.\n *\n * @returns {void}\n */\n Grid.prototype.hideScroll = function () {\n var content = this.getContent().querySelector('.' + literals.content);\n if (content.scrollHeight <= content.clientHeight) {\n this.scrollModule.removePadding();\n content.style.overflowY = 'auto';\n }\n };\n /**\n * Get row index by primary key or row data.\n *\n * @param {string | Object} value - Defines the primary key value.\n *\n * @returns {number} Returns the index\n */\n Grid.prototype.getRowIndexByPrimaryKey = function (value) {\n var pkName = this.getPrimaryKeyFieldNames()[0];\n value = typeof value === 'object' ? value[\"\" + pkName] : value;\n var rows = this.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isDetailRow || rows[parseInt(i.toString(), 10)].isCaptionRow) {\n continue;\n }\n var pKvalue = rows[parseInt(i.toString(), 10)].data[\"\" + pkName];\n if (pkName.split('.').length > 1) {\n pKvalue = performComplexDataOperation(pkName, rows[parseInt(i.toString(), 10)].data);\n }\n if (pKvalue === value) {\n return rows[parseInt(i.toString(), 10)].index;\n }\n }\n return -1;\n };\n /**\n * @param {string} field - Defines the field name\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByFieldFromAllCols = function (field, isForeignKey) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if ((!isForeignKey && field === gCols[parseInt(i.toString(), 10)].field) ||\n (isForeignKey && gCols[parseInt(i.toString(), 10)].isForeignColumn() &&\n field === gCols[parseInt(i.toString(), 10)].foreignKeyValue)) {\n column = gCols[parseInt(i.toString(), 10)];\n break;\n }\n }\n return column;\n };\n /**\n * @param {string} uid - Defines the uid\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByUidFromAllCols = function (uid) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (uid === gCols[parseInt(i.toString(), 10)].uid) {\n column = gCols[parseInt(i.toString(), 10)];\n }\n }\n return column;\n };\n /**\n * Get all filtered records from the Grid and it returns array of objects for the local dataSource, returns a promise object if the Grid has remote data.\n *\n * @returns {Object[] | Promise} Returns the filtered records\n */\n Grid.prototype.getFilteredRecords = function () {\n if ((this.allowFiltering && this.filterSettings.columns.length) || this.searchSettings.key.length) {\n var query = this.renderModule.data.generateQuery(true);\n if (this.dataSource && this.renderModule.data.isRemote() && this.dataSource instanceof DataManager) {\n return this.renderModule.data.getData(this.dataSource, query);\n }\n else {\n if (this.dataSource instanceof DataManager) {\n return this.dataSource.executeLocal(query);\n }\n else {\n return new DataManager(this.dataSource, query).executeLocal(query);\n }\n }\n }\n return [];\n };\n Grid.prototype.getUserAgent = function () {\n var userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad|macintosh/.test(userAgent);\n };\n /**\n * @param {TouchEventArgs} e - Defines the TouchEventArgs\n * @returns {void}\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n // eslint-disable-next-line\n Grid.prototype.tapEvent = function (e) {\n if (this.getUserAgent()) {\n if (!Global.timer) {\n Global.timer = setTimeout(function () {\n Global.timer = null;\n }, 300);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.dblClickHandler(e);\n this.notify(events.doubleTap, e);\n }\n }\n };\n /**\n * @param {string} prefix - specifies the prefix\n * @returns {string} returns the row uid\n * @hidden\n */\n Grid.prototype.getRowUid = function (prefix) {\n return \"\" + prefix + this.rowUid++;\n };\n /**\n * @param {string} uid - specifies the uid\n * @returns {Element} returns the element\n * @hidden\n */\n Grid.prototype.getRowElementByUID = function (uid) {\n var rowEle;\n var rows = [];\n var cntRows = [].slice.call(this.getContent().querySelector(literals.tbody).children);\n if (this.frozenRows) {\n rows = [].slice.call(this.getHeaderContent().querySelector(literals.tbody).children);\n rows = rows.concat(cntRows);\n }\n else {\n rows = cntRows;\n }\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n if (row.getAttribute('data-uid') === uid) {\n rowEle = row;\n break;\n }\n }\n return rowEle;\n };\n /**\n * Gets the hidden columns from the Grid.\n *\n * @returns {Column[]} Returns the Column\n */\n Grid.prototype.getHiddenColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible === false) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * Calculates the page size by parent element height\n *\n * @param {number | string } containerHeight - specifies the container height\n * @returns {number} returns the page size\n */\n Grid.prototype.calculatePageSizeByParentHeight = function (containerHeight) {\n if (this.allowPaging) {\n if ((this.allowTextWrap && this.textWrapSettings.wrapMode === 'Header') || (!this.allowTextWrap)) {\n var pagesize = 0;\n if (containerHeight.indexOf('%') !== -1) {\n containerHeight = parseInt(containerHeight, 10) / 100 * this.element.clientHeight;\n }\n var nonContentHeight = this.getNoncontentHeight() + this.getRowHeight();\n if (containerHeight > nonContentHeight) {\n var contentHeight = 0;\n contentHeight = containerHeight - this.getNoncontentHeight();\n pagesize = (contentHeight / this.getRowHeight());\n }\n if (pagesize > 0) {\n return Math.floor(pagesize);\n }\n }\n }\n return 0;\n };\n Grid.prototype.getNoncontentHeight = function () {\n var height = 0;\n if (!isNullOrUndefined(this.getHeaderContent().clientHeight)) {\n height += this.getHeaderContent().clientHeight;\n }\n if (this.toolbar && !isNullOrUndefined(this.element.querySelector('.e-toolbar').clientHeight)) {\n height += this.element.querySelector('.e-toolbar').clientHeight;\n }\n if (this.allowPaging && !isNullOrUndefined(this.element.querySelector('.e-gridpager').clientHeight)) {\n height += this.element.querySelector('.e-gridpager').clientHeight;\n }\n if (this.showColumnChooser && !isNullOrUndefined(this.element.querySelector('.e-columnheader').clientHeight)) {\n height += this.element.querySelector('.e-columnheader').clientHeight;\n }\n if (this.allowGrouping && this.groupSettings.showDropArea && !isNullOrUndefined(this.element.querySelector('.e-groupdroparea').clientHeight)) {\n height += this.element.querySelector('.e-groupdroparea').clientHeight;\n }\n if (this.aggregates.length > 0 && !isNullOrUndefined(this.element.querySelector('.e-summaryrow').clientHeight)) {\n for (var i = 0; i < this.element.getElementsByClassName('e-summaryrow').length; i++) {\n height += this.element.getElementsByClassName('e-summaryrow')[parseInt(i.toString(), 10)].clientHeight;\n }\n }\n return height;\n };\n /**\n *To perform aggregate operation on a column.\n *\n * @param {AggregateColumnModel} summaryCol - Pass Aggregate Column details.\n * @param {Object} summaryData - Pass JSON Array for which its field values to be calculated.\n *\n * @returns {number} returns the summary values\n */\n Grid.prototype.getSummaryValues = function (summaryCol, summaryData) {\n return DataUtil.aggregates[summaryCol.type.toLowerCase()](summaryData, summaryCol.field);\n };\n /**\n * Sends a Post request to export Grid to Excel file in server side.\n *\n * @param {string} url - Pass Url for server side excel export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverExcelExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to Pdf file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverPdfExport = function (url) {\n this.isExcel = false;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to CSV file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverCsvExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * @param {string} url - Defines exporting url\n * @returns {void}\n * @hidden\n */\n Grid.prototype.exportGrid = function (url) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var grid = this;\n var query = grid.getDataModule().generateQuery(true);\n var state = new UrlAdaptor().processQuery(new DataManager({ url: '' }), query);\n var queries = JSON.parse(state.data);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var gridModel = JSON.parse(this.addOnPersist(['allowGrouping', 'allowPaging', 'pageSettings', 'sortSettings', 'allowPdfExport', 'allowExcelExport', 'aggregates',\n 'filterSettings', 'groupSettings', 'columns', 'locale', 'searchSettings']));\n var include = ['field', 'headerText', 'type', 'format', 'visible', 'foreignKeyValue', 'foreignKeyField',\n 'template', 'index', 'width', 'textAlign', 'headerTextAlign', 'columns'];\n gridModel.filterSettings.columns = queries.where;\n gridModel.searchSettings.fields = queries.search && queries.search[0]['fields'] || [];\n gridModel.sortSettings.columns = queries.sorted;\n gridModel.columns = this.setHeaderText(gridModel.columns, include);\n var form = this.createElement('form', { id: 'ExportForm', styles: 'display:none;' });\n var gridInput = this.createElement('input', { id: 'gridInput', attrs: { name: 'gridModel' } });\n gridInput.value = JSON.stringify(gridModel);\n form.method = 'POST';\n form.action = url;\n form.appendChild(gridInput);\n document.body.appendChild(form);\n form.submit();\n form.remove();\n };\n /**\n * @param {Column[]} columns - Defines array of columns\n * @param {string[]} include - Defines array of sting\n * @returns {Column[]} returns array of columns\n * @hidden\n */\n Grid.prototype.setHeaderText = function (columns, include) {\n for (var i = 0; i < columns.length; i++) {\n var column = this.getColumnByUid(columns[parseInt(i.toString(), 10)].uid);\n columns[parseInt(i.toString(), 10)].headerText = column.headerText;\n if (!isNullOrUndefined(column.template)) {\n columns[parseInt(i.toString(), 10)].template = 'true';\n }\n if (columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = getNumberFormat(this.getFormat(columns[parseInt(i.toString(), 10)].format), columns[parseInt(i.toString(), 10)].type, this.isExcel, defaultCurrencyCode);\n }\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.setHeaderText(columns[parseInt(i.toString(), 10)].columns, include);\n }\n var keys = Object.keys(columns[parseInt(i.toString(), 10)]);\n for (var j = 0; j < keys.length; j++) {\n if (include.indexOf(keys[parseInt(j.toString(), 10)]) < 0) {\n delete columns[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]];\n }\n }\n }\n return columns;\n };\n Grid.prototype.getFormat = function (format) {\n return typeof (format) === 'object' ? !isNullOrUndefined(format.format) ?\n format.format : format.skeleton : format;\n };\n /**\n * @hidden\n * @returns {boolean} returns the isCollapseStateEnabled\n */\n Grid.prototype.isCollapseStateEnabled = function () {\n var isExpanded = 'isExpanded';\n return this[\"\" + isExpanded] === false;\n };\n /**\n * @param {number} key - Defines the primary key value.\n * @param {Object} rowData - Defines the rowData\n * @returns {void}\n */\n Grid.prototype.updateRowValue = function (key, rowData) {\n var args = {\n requestType: 'save', data: rowData\n };\n this.showSpinner();\n this.notify(events.updateData, args);\n this.refresh();\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setForeignKeyData = function () {\n this.dataBind();\n var colpending = this.getDataModule().getForeignKeyDataState();\n if (colpending.isPending) {\n this.getDataModule().setForeignKeyDataState({});\n colpending.resolver();\n }\n else {\n this.getDataModule().setForeignKeyDataState({ isDataChanged: false });\n if (this.contentModule || this.headerModule) {\n this.renderModule.render();\n }\n }\n };\n /**\n * @param {string} field - specifies the field\n * @returns {void}\n * @hidden\n */\n Grid.prototype.resetFilterDlgPosition = function (field) {\n var header = this.getColumnHeaderByField(field);\n if (header) {\n var target = header.querySelector('.e-filtermenudiv');\n var filterDlg = this.element.querySelector('.e-filter-popup');\n if (target && filterDlg) {\n var gClient = this.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n if (filterDlg) {\n if ((filterDlg.offsetWidth + fClient.right) > gClient.right) {\n filterDlg.style.left = ((fClient.right - filterDlg.offsetWidth) - gClient.left).toString() + 'px';\n }\n else {\n filterDlg.style.left = (fClient.right - gClient.left).toString() + 'px';\n }\n }\n }\n }\n };\n /**\n * @param {any} callBack - specifies the callBack method\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line\n Grid.prototype.renderTemplates = function (callBack) {\n var isReactChild = this.parentDetails && this.parentDetails.parentInstObj && this.parentDetails.parentInstObj.isReact;\n if (isReactChild && this['portals']) {\n this.parentDetails.parentInstObj['portals'] = this.parentDetails.parentInstObj['portals']\n .concat(this['portals']);\n this.parentDetails.parentInstObj.renderTemplates(callBack);\n this['portals'] = undefined;\n }\n else {\n var portals = 'portals';\n this.notify('reactTemplateRender', this[\"\" + portals]);\n this.renderReactTemplates(callBack);\n }\n };\n /**\n * Apply the changes to the Grid without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchUpdate = function (changes) {\n this.processRowChanges(changes);\n };\n /**\n * Apply the changes to the Grid in one batch after 50ms without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchAsyncUpdate = function (changes) {\n this.processBulkRowChanges(changes);\n };\n Grid.prototype.processBulkRowChanges = function (changes) {\n var _this_1 = this;\n if (!this.dataToBeUpdated) {\n this.dataToBeUpdated = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n setTimeout(function () {\n _this_1.processRowChanges(_this_1.dataToBeUpdated);\n _this_1.dataToBeUpdated = null;\n }, this.asyncTimeOut);\n }\n else {\n var loopstring = [literals.addedRecords, literals.changedRecords, literals.deletedRecords];\n var keyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < loopstring.length; i++) {\n if (changes[loopstring[parseInt(i.toString(), 10)]]) {\n compareChanges(this, changes, loopstring[parseInt(i.toString(), 10)], keyField);\n }\n }\n }\n };\n Grid.prototype.processRowChanges = function (changes) {\n var _this_1 = this;\n var keyField = this.getPrimaryKeyFieldNames()[0];\n changes = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n var promise = this.getDataModule().saveChanges(changes, keyField, {}, this.getDataModule().generateQuery().requiresCount());\n if (this.getDataModule().isRemote()) {\n promise.then(function () {\n _this_1.setNewData();\n });\n }\n else {\n this.setNewData();\n }\n };\n Grid.prototype.setNewData = function () {\n var _this_1 = this;\n var oldValues = JSON.parse(JSON.stringify(this.getCurrentViewRecords()));\n var getData = this.getDataModule().getData({}, this.getDataModule().generateQuery().requiresCount());\n getData.then(function (e) {\n _this_1.bulkRefresh(e.result, oldValues, e.count);\n });\n };\n Grid.prototype.deleteRowElement = function (row) {\n var tr = this.getRowElementByUID(row.uid);\n remove(tr);\n };\n Grid.prototype.bulkRefresh = function (result, oldValues, count) {\n var _this_1 = this;\n var rowObj = this.getRowsObject();\n var keyField = this.getPrimaryKeyFieldNames()[0];\n var _loop_5 = function (i) {\n if (!result.filter(function (e) { return e[\"\" + keyField] === rowObj[parseInt(i.toString(), 10)].data[\"\" + keyField]; }).length) {\n this_5.deleteRowElement(rowObj[parseInt(i.toString(), 10)]);\n rowObj.splice(i, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_5 = this, out_i_1;\n for (var i = 0; i < rowObj.length; i++) {\n _loop_5(i);\n i = out_i_1;\n }\n var _loop_6 = function (i) {\n var isRowExist;\n oldValues.filter(function (e) {\n if (e[\"\" + keyField] === result[parseInt(i.toString(), 10)][\"\" + keyField]) {\n if (e !== result[parseInt(i.toString(), 10)]) {\n _this_1.setRowData(result[parseInt(i.toString(), 10)][\"\" + keyField], result[parseInt(i.toString(), 10)]);\n }\n isRowExist = true;\n }\n });\n if (!isRowExist) {\n this_6.renderRowElement(result[parseInt(i.toString(), 10)], i);\n }\n };\n var this_6 = this;\n for (var i = 0; i < result.length; i++) {\n _loop_6(i);\n }\n this.currentViewData = result;\n var rows = [].slice.call(this.getContentTable().getElementsByClassName(literals.row));\n resetRowIndex(this, this.getRowsObject(), rows);\n setRowElements(this);\n if (this.allowPaging) {\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: { totalRecordsCount: count } });\n }\n };\n Grid.prototype.renderRowElement = function (data, index) {\n var row = new RowRenderer(this.serviceLocator, null, this);\n var model = new RowModelGenerator(this);\n var modelData = model.generateRows([data]);\n var tr = row.render(modelData[0], this.getColumns());\n this.addRowObject(modelData[0], index);\n var tbody = this.getContentTable().querySelector(literals.tbody);\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (this.frozenRows && this.element.querySelector('.e-frozenrow-empty')) {\n this.element.querySelector('.e-frozenrow-empty').classList.remove('e-frozenrow-empty');\n }\n }\n if (this.frozenRows && index < this.frozenRows) {\n tbody = this.getHeaderContent().querySelector(literals.tbody);\n }\n else {\n tbody = this.getContent().querySelector(literals.tbody);\n }\n tbody = this.getContent().querySelector(literals.tbody);\n tbody.appendChild(tr);\n };\n Grid.prototype.addRowObject = function (row, index) {\n this.getRowsObject().splice(index, 1, row);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateVisibleExpandCollapseRows = function () {\n var rows = this.getRowsObject();\n for (var i = 0, len = rows.length; i < len; i++) {\n if ((rows[parseInt(i.toString(), 10)].isDataRow || rows[parseInt(i.toString(), 10)].isAggregateRow)\n && this.getRowElementByUID(rows[parseInt(i.toString(), 10)].uid).style.display === 'none') {\n rows[parseInt(i.toString(), 10)].visible = false;\n }\n else {\n rows[parseInt(i.toString(), 10)].visible = true;\n }\n }\n };\n /**\n * Method to sanitize any suspected untrusted strings and scripts before rendering them.\n *\n * @param {string} value - Specifies the html value to sanitize\n * @returns {string} Returns the sanitized html string\n * @hidden\n */\n Grid.prototype.sanitize = function (value) {\n if (this.enableHtmlSanitizer) {\n return SanitizeHtmlHelper.sanitize(value);\n }\n return value;\n };\n /**\n * @param {string | number} height - specifies the height\n * @returns {number | string} - specifies the height number\n * @hidden\n */\n Grid.prototype.getHeight = function (height) {\n if (!Number.isInteger(height) && height.indexOf('%') !== -1) {\n height = parseInt(height, 10) / 100 * this.element.clientHeight;\n }\n else if (!Number.isInteger(height) && this.height !== 'auto') {\n height = parseInt(height, 10);\n }\n else {\n height = this.height;\n }\n return height;\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right content\n\n */\n Grid.prototype.getFrozenRightContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header\n\n */\n Grid.prototype.getFrozenRightHeader = function () {\n return this.headerModule.getPanel();\n };\n /**\n * @hidden\n * @returns {Element} - returns movable header tbody\n\n */\n Grid.prototype.getMovableHeaderTbody = function () {\n return this.getHeaderContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns movable content tbody\n\n */\n Grid.prototype.getMovableContentTbody = function () {\n return this.getContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen header tbody\n\n */\n Grid.prototype.getFrozenHeaderTbody = function () {\n return this.getHeaderContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen left content tbody\n\n */\n Grid.prototype.getFrozenLeftContentTbody = function () {\n return this.getContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header tbody\n\n */\n Grid.prototype.getFrozenRightHeaderTbody = function () {\n return this.getHeaderContent().querySelector(literals.tbody);\n };\n /**\n * @returns {Element} returns frozen right content tbody\n\n * @hidden\n */\n Grid.prototype.getFrozenRightContentTbody = function () {\n return this.getContent().querySelector(literals.tbody);\n };\n /**\n * @param {boolean} isCustom - Defines custom filter dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomFilter = function (isCustom) {\n if (this.filterModule) {\n this.filterModule.showCustomFilter(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * @param {boolean} isCustom - Defines custom sort dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomSort = function (isCustom) {\n if (this.sortModule) {\n this.sortModule.showCustomSort(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * @param {boolean} isCustom - Defines custom column chooser dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomColumnChooser = function (isCustom) {\n if (this.columnChooserModule) {\n this.columnChooserModule.showCustomColumnChooser(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * To manually show the vertical row mode filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveFilterDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomFilter(true);\n }\n };\n /**\n * To manually show the vertical row sort filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveSortDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomSort(true);\n }\n };\n /**\n * @param {boolean} isColVirtualization - Defines column virtualization\n * @returns {Column[]} returns array of column models\n * @hidden\n */\n Grid.prototype.getCurrentVisibleColumns = function (isColVirtualization) {\n var cols = [];\n var gridCols = isColVirtualization ? this.getColumns() : this.columnModel;\n for (var _i = 0, gridCols_1 = gridCols; _i < gridCols_1.length; _i++) {\n var col = gridCols_1[_i];\n if (col.visible) {\n cols.push(col);\n }\n }\n return cols;\n };\n Grid.prototype.enableInfiniteAggrgate = function () {\n if (this.enableInfiniteScrolling && this.groupSettings.columns.length && !this.groupSettings.disablePageWiseAggregates\n && !this.groupSettings.enableLazyLoading) {\n this.setProperties({ groupSettings: { disablePageWiseAggregates: true } }, true);\n }\n };\n var Grid_1;\n __decorate([\n Property([])\n ], Grid.prototype, \"currentViewData\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"parentDetails\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"showHider\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableHover\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAutoFill\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableStickyHeader\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, TextWrapSettings)\n ], Grid.prototype, \"textWrapSettings\", void 0);\n __decorate([\n Complex({}, ResizeSettings)\n ], Grid.prototype, \"resizeSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPaging\", void 0);\n __decorate([\n Complex({}, PageSettings)\n ], Grid.prototype, \"pageSettings\", void 0);\n __decorate([\n Complex({}, LoadingIndicator)\n ], Grid.prototype, \"loadingIndicator\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableVirtualMaskRow\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableColumnVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], Grid.prototype, \"searchSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowSorting\", void 0);\n __decorate([\n Property('Ellipsis')\n ], Grid.prototype, \"clipMode\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowMultiSorting\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], Grid.prototype, \"sortSettings\", void 0);\n __decorate([\n Complex({}, InfiniteScrollSettings)\n ], Grid.prototype, \"infiniteScrollSettings\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowSelection\", void 0);\n __decorate([\n Property(-1)\n ], Grid.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], Grid.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property('Horizontal')\n ], Grid.prototype, \"rowRenderingMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAdaptiveUI\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate([\n Complex({}, RowDropSettings)\n ], Grid.prototype, \"rowDropSettings\", void 0);\n __decorate([\n Complex({}, FilterSettings)\n ], Grid.prototype, \"filterSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowGrouping\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableImmutableMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnMenu\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"autoFit\", void 0);\n __decorate([\n Complex({}, GroupSettings)\n ], Grid.prototype, \"groupSettings\", void 0);\n __decorate([\n Complex({}, EditSettings)\n ], Grid.prototype, \"editSettings\", void 0);\n __decorate([\n Collection([], AggregateRow)\n ], Grid.prototype, \"aggregates\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnChooser\", void 0);\n __decorate([\n Complex({}, ColumnChooserSettings)\n ], Grid.prototype, \"columnChooserSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHeaderFocus\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"width\", void 0);\n __decorate([\n Property('Default')\n ], Grid.prototype, \"gridLines\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"rowTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"emptyRecordTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"detailTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"childGrid\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"queryString\", void 0);\n __decorate([\n Property('AllPages')\n ], Grid.prototype, \"printMode\", void 0);\n __decorate([\n Property('Expanded')\n ], Grid.prototype, \"hierarchyPrintMode\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], Grid.prototype, \"rowHeight\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"query\", void 0);\n __decorate([\n Property('USD')\n ], Grid.prototype, \"currencyCode\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"exportGrids\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbar\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"columnMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbarTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"pagerTemplate\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenRows\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenColumns\", void 0);\n __decorate([\n Property('')\n ], Grid.prototype, \"cssClass\", void 0);\n __decorate([\n Property('All')\n ], Grid.prototype, \"columnQueryMode\", void 0);\n __decorate([\n Property({})\n ], Grid.prototype, \"currentAction\", void 0);\n __decorate([\n Property('')\n ], Grid.prototype, \"ej2StatePersistenceVersion\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordDoubleClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"printComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportDetailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportDetailTemplate\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"detailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenColumnChooser\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenAdaptiveDialog\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchCancel\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beginEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"commandClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSaved\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"keyPressed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"checkBoxChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeCopy\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePaste\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeAutoFill\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportGroupCaption\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupExpand\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupCollapse\", void 0);\n Grid = Grid_1 = __decorate([\n NotifyPropertyChanges\n ], Grid);\n return Grid;\n}(Component));\nexport { Grid };\n","import { print as printWindow, createElement, detach, classList, selectAll, extend } from '@syncfusion/ej2-base';\nimport { getPrintGridModel } from '../base/util';\nimport { Grid } from '../base/grid';\nimport * as events from '../base/constant';\nimport { Deferred } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n/**\n * @returns {string[]} returns the cloned property\n * @hidden\n */\nexport function getCloneProperties() {\n return ['aggregates', 'allowGrouping', 'allowFiltering', 'allowMultiSorting', 'allowReordering', 'allowSorting',\n 'allowTextWrap', 'childGrid', 'columns', 'currentViewData', 'dataSource', 'detailTemplate', 'enableAltRow',\n 'enableColumnVirtualization', 'filterSettings', 'gridLines',\n 'groupSettings', 'height', 'locale', 'pageSettings', 'printMode', 'query', 'queryString', 'enableRtl',\n 'rowHeight', 'rowTemplate', 'sortSettings', 'textWrapSettings', 'allowPaging', 'hierarchyPrintMode', 'searchSettings',\n 'queryCellInfo', 'beforeDataBound'];\n}\n/**\n *\n * The `Print` module is used to handle print action.\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for the Grid print module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {Scroll} scrollModule - specifies the scroll module\n * @hidden\n */\n function Print(parent, scrollModule) {\n this.isAsyncPrint = false;\n this.defered = new Deferred();\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.isContentReady(), this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.on(events.onEmpty, this.onEmpty.bind(this));\n this.parent.on(events.hierarchyPrint, this.hierarchyPrint, this);\n this.scrollModule = scrollModule;\n }\n Print.prototype.isContentReady = function () {\n var _this = this;\n if (this.isPrintGrid() && (this.parent.hierarchyPrintMode === 'None' || !this.parent.childGrid)) {\n return this.contentReady;\n }\n return function () {\n _this.defered.promise.then(function () {\n _this.contentReady();\n });\n if (_this.isPrintGrid()) {\n _this.hierarchyPrint();\n }\n };\n };\n Print.prototype.hierarchyPrint = function () {\n this.removeColGroup(this.parent);\n var printGridObj = window.printGridObj;\n if (printGridObj && !printGridObj.element.querySelector('[aria-busy=true')) {\n printGridObj.printModule.defered.resolve();\n }\n };\n /**\n * By default, prints all the Grid pages and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./printmode/).\n *\n * @returns {void}\n */\n Print.prototype.print = function () {\n this.renderPrintGrid();\n };\n Print.prototype.onEmpty = function () {\n if (this.isPrintGrid()) {\n this.contentReady();\n }\n };\n Print.prototype.actionBegin = function () {\n if (this.isPrintGrid()) {\n this.isAsyncPrint = true;\n }\n };\n Print.prototype.renderPrintGrid = function () {\n var gObj = this.parent;\n var element = createElement('div', {\n id: this.parent.element.id + '_print', className: gObj.element.className + ' e-print-grid'\n });\n element.classList.remove('e-gridhover');\n document.body.appendChild(element);\n var printGrid = new Grid(getPrintGridModel(gObj, gObj.hierarchyPrintMode));\n for (var i = 0; i < printGrid.columns.length; i++) {\n printGrid.columns[parseInt(i.toString(), 10)] = extend({}, printGrid.columns[parseInt(i.toString(), 10)]);\n if (gObj.isFrozenGrid() && !gObj.getFrozenColumns()) {\n printGrid.columns[parseInt(i.toString(), 10)].freeze = undefined;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.isAngular) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n printGrid.viewContainerRef = this.parent.viewContainerRef;\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n printGrid.load = function () { };\n printGrid.query = gObj.getQuery().clone();\n window.printGridObj = printGrid;\n printGrid.isPrinting = true;\n var modules = printGrid.getInjectedModules();\n var injectedModues = gObj.getInjectedModules();\n if (!modules || modules.length !== injectedModues.length) {\n printGrid.setInjectedModules(injectedModues);\n }\n gObj.notify(events.printGridInit, { element: element, printgrid: printGrid });\n this.parent.log('exporting_begin', this.getModuleName());\n printGrid.registeredTemplate = this.parent.registeredTemplate;\n printGrid.isVue = this.parent.isVue;\n printGrid.appendTo(element);\n if (!gObj.isVue3) {\n printGrid.trigger = gObj.trigger;\n }\n };\n Print.prototype.contentReady = function () {\n if (this.isPrintGrid()) {\n var gObj = this.parent;\n if (this.isAsyncPrint) {\n this.printGrid();\n return;\n }\n var args = {\n requestType: 'print',\n element: gObj.element,\n selectedRows: gObj.getContentTable().querySelectorAll('tr[aria-selected=\"true\"]'),\n cancel: false,\n hierarchyPrintMode: gObj.hierarchyPrintMode\n };\n if (!this.isAsyncPrint) {\n gObj.trigger(events.beforePrint, args);\n }\n if (args.cancel) {\n detach(gObj.element);\n return;\n }\n if (!this.isAsyncPrint) {\n this.printGrid();\n }\n }\n };\n Print.prototype.printGrid = function () {\n var gObj = this.parent;\n // Height adjustment on print grid\n if (gObj.height !== 'auto') { // if scroller enabled\n var cssProps = this.scrollModule.getCssProperties();\n var contentDiv = gObj.element.querySelector('.' + literals.content);\n var headerDiv = gObj.element.querySelector('.' + literals.gridHeader);\n contentDiv.style.height = 'auto';\n contentDiv.style.overflowY = 'auto';\n headerDiv.style[cssProps.padding] = '';\n headerDiv.firstElementChild.style[cssProps.border] = '';\n }\n // Grid alignment adjustment on grouping\n if (gObj.allowGrouping) {\n if (!gObj.groupSettings.columns.length) {\n gObj.element.querySelector('.e-groupdroparea').style.display = 'none';\n }\n else {\n this.removeColGroup(gObj);\n }\n }\n // hide horizontal scroll\n for (var _i = 0, _a = [].slice.call(gObj.element.getElementsByClassName(literals.content)); _i < _a.length; _i++) {\n var element = _a[_i];\n element.style.overflowX = 'hidden';\n }\n // Hide the waiting popup\n var waitingPop = [].slice.call(gObj.element.getElementsByClassName('e-spin-show'));\n for (var _b = 0, _c = [].slice.call(waitingPop); _b < _c.length; _b++) {\n var element = _c[_b];\n classList(element, ['e-spin-hide'], ['e-spin-show']);\n }\n this.printGridElement(gObj);\n gObj.isPrinting = false;\n delete window.printGridObj;\n var args = {\n element: gObj.element\n };\n gObj.trigger(events.printComplete, args);\n gObj.destroy();\n this.parent.log('exporting_complete', this.getModuleName());\n };\n Print.prototype.printGridElement = function (gObj) {\n classList(gObj.element, ['e-print-grid-layout'], ['e-print-grid']);\n if (gObj.isPrinting) {\n detach(gObj.element);\n }\n this.printWind = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWind.moveTo(0, 0);\n this.printWind.resizeTo(screen.availWidth, screen.availHeight);\n this.printWind = printWindow(gObj.element, this.printWind);\n };\n Print.prototype.removeColGroup = function (gObj) {\n var depth = gObj.groupSettings.columns.length;\n var element = gObj.element;\n var id = '#' + gObj.element.id;\n if (!depth) {\n return;\n }\n var groupCaption = selectAll('.e-groupcaption', element);\n var colSpan = groupCaption[depth - 1].getAttribute('colspan');\n for (var i = 0; i < groupCaption.length; i++) {\n groupCaption[parseInt(i.toString(), 10)].setAttribute('colspan', colSpan);\n }\n var colGroups = selectAll(\"colgroup\" + id + \"colgroup\", element);\n var contentColGroups = selectAll('.e-content colgroup', element);\n var footerColGroups = selectAll('.e-summarycontent colgroup', element);\n this.hideColGroup(colGroups, depth);\n this.hideColGroup(contentColGroups, depth);\n this.hideColGroup(footerColGroups, depth);\n };\n Print.prototype.hideColGroup = function (colGroups, depth) {\n for (var i = 0; i < colGroups.length; i++) {\n for (var j = 0; j < depth; j++) {\n colGroups[parseInt(i.toString(), 10)].children[parseInt(j.toString(), 10)].style.display = 'none';\n }\n }\n };\n /**\n * To destroy the print\n *\n * @returns {boolean} returns the isPrintGrid or not\n * @hidden\n */\n Print.prototype.isPrintGrid = function () {\n return this.parent.element.id.indexOf('_print') > 0 && this.parent.isPrinting;\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Print.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.contentReady, this.contentReady.bind(this));\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.off(events.onEmpty, this.onEmpty.bind(this));\n this.parent.off(events.hierarchyPrint, this.hierarchyPrint);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Print.prototype.getModuleName = function () {\n return 'print';\n };\n Print.printGridProp = getCloneProperties().concat([events.beforePrint, events.printComplete, events.load]);\n return Print;\n}());\nexport { Print };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { merge, isNullOrUndefined, extend, Property } from '@syncfusion/ej2-base';\nimport { Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getUid, templateCompiler, getForeignData, getObject } from '../base/util';\n/**\n * Represents Grid `Column` model class.\n */\nvar Column = /** @class */ (function () {\n function Column(options, parent) {\n var _this = this;\n /**\n * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells.\n *\n * @default true\n */\n this.disableHtmlEncode = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n *\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n *\n * @default true\n */\n this.allowResizing = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n *\n * @default true\n */\n this.allowFiltering = true;\n /**\n * If `allowGrouping` set to false, then it disables grouping of a particular column.\n * By default all columns are groupable.\n *\n * @default true\n */\n this.allowGrouping = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n *\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `showColumnMenu` set to false, then it disable the column menu of a particular column.\n * By default column menu will show for all columns\n *\n * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `enableGroupByFormat` set to true, then it groups the particular column by formatted values.\n *\n * @default true\n */\n this.enableGroupByFormat = false;\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n *\n * @default true\n */\n this.allowEditing = true;\n /**\n * It is used to customize the default filter options for a specific columns.\n * * type - Specifies the filter type as menu or checkbox.\n * * ui - to render custom component for specific column it has following functions.\n * * ui.create – It is used for creating custom components.\n * * ui.read - It is used for read the value from the component.\n * * ui.write - It is used to apply component model as dynamically.\n * {% codeBlock src=\"grid/filter-menu-api/index.ts\" %}{% endcodeBlock %}\n *\n * > Check the [`Filter UI`](../../grid/filtering/filter-menu/#custom-component-in-filter-menu) for its customization.\n *\n * @default {}\n */\n this.filter = {};\n /**\n * If `showInColumnChooser` set to false, then hide the particular column in column chooser.\n * By default all columns are displayed in column Chooser.\n *\n * @default true\n */\n this.showInColumnChooser = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n *\n * @default {}\n */\n this.edit = {};\n /**\n * If `allowSearching` set to false, then it disables Searching of a particular column.\n * By default all columns allow Searching.\n *\n * @default true\n */\n this.allowSearching = true;\n /**\n * If `autoFit` set to true, then the particular column content width will be\n * adjusted based on its content in the initial rendering itself.\n * Setting this property as true is equivalent to calling `autoFitColumns` method in the `dataBound` event.\n *\n * @default false\n */\n this.autoFit = false;\n this.sortDirection = 'Descending';\n /**\n * @returns {Function} returns the edit template\n * @hidden */\n this.getEditTemplate = function () { return _this.editTemplateFn; };\n /**\n * @returns {Function} returns the filter template\n * @hidden */\n this.getFilterTemplate = function () { return _this.filterTemplateFn; };\n merge(this, options);\n this.parent = parent;\n if (this.type === 'none') {\n this.type = null;\n }\n else if (this.type) {\n this.type = typeof (this.type) === 'string' ? this.type.toLowerCase() : undefined;\n }\n if (this.editType) {\n this.editType = this.editType.toLowerCase();\n }\n if (isNullOrUndefined(this.uid)) {\n this.uid = getUid('grid-column');\n }\n var valueFormatter = new ValueFormatter();\n if (options.format && (options.format.skeleton || (options.format.format &&\n typeof options.format.format === 'string'))) {\n this.setFormatter(valueFormatter.getFormatFunction(extend({}, options.format)));\n this.setParser(valueFormatter.getParserFunction(options.format));\n }\n this.toJSON = function () {\n var col = {};\n var skip = ['filter', 'dataSource', 'headerText', 'template', 'headerTemplate', 'edit',\n 'editTemplate', 'filterTemplate', 'commandsTemplate', 'parent'];\n var keys = Object.keys(_this);\n for (var i = 0; i < keys.length; i++) {\n if (keys[parseInt(i.toString(), 10)] === 'columns') {\n col[keys[parseInt(i.toString(), 10)]] = [];\n for (var j = 0; j < _this[keys[parseInt(i.toString(), 10)]].length; j++) {\n col[keys[parseInt(i.toString(), 10)]].push(_this[keys[parseInt(i.toString(), 10)]][parseInt(j.toString(), 10)].toJSON());\n }\n }\n else if (skip.indexOf(keys[parseInt(i.toString(), 10)]) < 0) {\n col[keys[parseInt(i.toString(), 10)]] = _this[keys[parseInt(i.toString(), 10)]];\n }\n }\n return col;\n };\n if (!this.field) {\n this.allowFiltering = false;\n this.allowGrouping = false;\n this.allowSorting = false;\n if (this.columns) {\n this.allowResizing = this.columns.some(function (col) {\n return col.allowResizing;\n });\n }\n }\n if (this.commands && !this.textAlign) {\n this.textAlign = 'Right';\n }\n if (this.template || this.commandsTemplate) {\n this.templateFn = templateCompiler(this.template || this.commandsTemplate);\n }\n if (this.headerTemplate) {\n this.headerTemplateFn = templateCompiler(this.headerTemplate);\n }\n if (!isNullOrUndefined(this.filter) && this.filter.itemTemplate) {\n this.fltrTemplateFn = templateCompiler(this.filter.itemTemplate);\n }\n if (this.editTemplate) {\n this.editTemplateFn = templateCompiler(this.editTemplate);\n }\n if (this.filterTemplate) {\n this.filterTemplateFn = templateCompiler(this.filterTemplate);\n }\n if (this.isForeignColumn() &&\n (isNullOrUndefined(this.editType) || this.editType === 'dropdownedit' || this.editType === 'defaultedit')) {\n this.editType = 'dropdownedit';\n if (this.edit.params && this.edit.params.dataSource) {\n this.edit.params.ddEditedData = true;\n }\n this.edit.params = extend({\n dataSource: this.dataSource,\n query: new Query(), fields: { value: this.foreignKeyField || this.field, text: this.foreignKeyValue }\n }, this.edit.params);\n }\n if (this.sortComparer) {\n var a_1 = this.sortComparer;\n this.sortComparer = function (x, y, xObj, yObj) {\n if (typeof a_1 === 'string') {\n a_1 = getObject(a_1, window);\n }\n if (_this.sortDirection === 'Descending') {\n var z = x;\n x = y;\n y = z;\n var obj = xObj;\n xObj = yObj;\n yObj = obj;\n }\n return a_1(x, y, xObj, yObj);\n };\n }\n if (!this.sortComparer && this.isForeignColumn()) {\n this.sortComparer = function (x, y) {\n x = getObject(_this.foreignKeyValue, getForeignData(_this, {}, x)[0]);\n y = getObject(_this.foreignKeyValue, getForeignData(_this, {}, y)[0]);\n return _this.sortDirection === 'Descending' ? DataUtil.fnDescending(x, y) : DataUtil.fnAscending(x, y);\n };\n }\n }\n /**\n * @returns {string} returns the sort direction\n * @hidden */\n Column.prototype.getSortDirection = function () {\n return this.sortDirection;\n };\n /**\n * @param {string} direction - specifies the direction\n * @returns {void}\n * @hidden\n */\n Column.prototype.setSortDirection = function (direction) {\n this.sortDirection = direction;\n };\n /**\n * @returns {freezeTable} returns the FreezeTable\n * @hidden */\n Column.prototype.getFreezeTableName = function () {\n return this.freezeTable;\n };\n /**\n * @param {Column} column - specifies the column\n * @returns {void}\n * @hidden\n */\n Column.prototype.setProperties = function (column) {\n //Angular two way binding\n var keys = Object.keys(column);\n var _loop_1 = function (i) {\n if (keys[parseInt(i.toString(), 10)] === 'columns') {\n var cols_1 = column[keys[parseInt(i.toString(), 10)]];\n var _loop_2 = function (j) {\n this_1.columns.find(function (col) {\n return col.field === cols_1[parseInt(j.toString(), 10)]\n .field;\n }).setProperties(cols_1[parseInt(j.toString(), 10)]);\n };\n for (var j = 0; j < cols_1.length; j++) {\n _loop_2(j);\n }\n }\n else {\n this_1[keys[parseInt(i.toString(), 10)]] = column[keys[parseInt(i.toString(), 10)]];\n }\n //Refresh the react columnTemplates on state change\n if (this_1.parent && this_1.parent.isReact) {\n if (keys[parseInt(i.toString(), 10)] === 'template') {\n this_1.templateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n this_1.parent.refreshReactColumnTemplateByUid(this_1.uid, true);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'headerTemplate') {\n this_1.headerTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n this_1.parent.refreshReactHeaderTemplateByUid(this_1.uid);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'editTemplate') {\n this_1.editTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n }\n }\n };\n var this_1 = this;\n for (var i = 0; i < keys.length; i++) {\n _loop_1(i);\n }\n };\n /**\n * @returns {boolean} returns true for foreign column\n * @hidden\n * It defines the column is foreign key column or not.\n */\n Column.prototype.isForeignColumn = function () {\n return !!(this.dataSource && this.foreignKeyValue);\n };\n /**\n * @returns {Function} returns the function\n * @hidden\n */\n Column.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getParser = function () {\n return this.parserFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setParser = function (value) {\n this.parserFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getColumnTemplate = function () {\n return this.templateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getHeaderTemplate = function () {\n return this.headerTemplateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getFilterItemTemplate = function () {\n return this.fltrTemplateFn;\n };\n /**\n * @returns {string} returns the string\n * @hidden */\n Column.prototype.getDomSetter = function () {\n return this.disableHtmlEncode ? 'textContent' : 'innerHTML';\n };\n return Column;\n}());\nexport { Column };\n/**\n * Define options for custom command buttons.\n */\nvar CommandColumnModel = /** @class */ (function () {\n function CommandColumnModel() {\n }\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"title\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"buttonOption\", void 0);\n return CommandColumnModel;\n}());\nexport { CommandColumnModel };\n/**\n * Defines Grid column\n */\nvar GridColumn = /** @class */ (function (_super) {\n __extends(GridColumn, _super);\n function GridColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], GridColumn.prototype, \"columns\", void 0);\n return GridColumn;\n}(Column));\nexport { GridColumn };\n/**\n * Defines stacked grid column\n */\nvar StackedColumn = /** @class */ (function (_super) {\n __extends(StackedColumn, _super);\n function StackedColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return StackedColumn;\n}(GridColumn));\nexport { StackedColumn };\n","import { Browser, NumberFormatOptions } from \"@syncfusion/ej2-base\";\r\nimport { Column } from \"@syncfusion/ej2-react-grids\";\r\nimport { DInfoSymbol } from \"components\";\r\nimport { DDataManager } from \"data\";\r\nimport { DGridValidationRule } from \"./DGridValidationRule\";\r\n\r\nexport enum ColumnType {\r\n STRING = \"string\",\r\n BOOLEAN = \"boolean\",\r\n COLOR = \"color\",\r\n DATE = \"date\",\r\n DATETIME = \"datetime\",\r\n TIME = \"time\",\r\n NUMBER = \"number\",\r\n}\r\n\r\ninterface DGridIDColumnProps {\r\n field: string;\r\n}\r\n\r\ninterface DGridInvisibleColumnProps extends DGridIDColumnProps {\r\n type: ColumnType;\r\n defaultValue?: string;\r\n}\r\n\r\ninterface DGridStringColumnProps extends DGridIDColumnProps {\r\n headerText: string;\r\n width: string;\r\n defaultValue?: string;\r\n allowEditing?: boolean;\r\n validationRule?: DGridValidationRule;\r\n headerInfoText?: string;\r\n showColumnOnMobileDevices?: boolean;\r\n}\r\n\r\ninterface DGridDateTimeColumnProps extends DGridStringColumnProps {\r\n format?: string;\r\n}\r\n\r\ninterface DGridBooleanColumnProps extends DGridStringColumnProps { }\r\n\r\ninterface DGridNumberColumnProps extends DGridStringColumnProps {\r\n format?: string | NumberFormatOptions;\r\n}\r\n\r\ninterface DGridForeignKeyColumnProps extends DGridStringColumnProps {\r\n foreignKeyPath: string;\r\n foreignKeyField: string;\r\n foreignKeyValue: string;\r\n}\r\n\r\nconst headerInfoTemplate = (headerInfoText: string): any => {\r\n return (data: Column) => {\r\n return (\r\n
\r\n {data.headerText}\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport class DGridIDColumn extends Column {\r\n constructor({ field }: DGridIDColumnProps) {\r\n super({\r\n field,\r\n visible: false,\r\n showInColumnChooser: false,\r\n width: \"0%\",\r\n isPrimaryKey: true,\r\n isIdentity: true,\r\n allowEditing: false,\r\n allowFiltering: false,\r\n allowSearching: false,\r\n allowGrouping: false,\r\n allowSorting: false,\r\n });\r\n }\r\n}\r\n\r\nexport class DGridInvisibleColumn extends Column {\r\n constructor({ field, type, defaultValue }: DGridInvisibleColumnProps) {\r\n super({\r\n field,\r\n type,\r\n defaultValue,\r\n visible: false,\r\n showInColumnChooser: false,\r\n width: \"0%\",\r\n allowEditing: false,\r\n allowFiltering: false,\r\n allowSearching: false,\r\n allowGrouping: false,\r\n allowSorting: false,\r\n });\r\n }\r\n}\r\n\r\nexport class DGridStringColumn extends Column {\r\n constructor({\r\n field,\r\n headerText,\r\n width,\r\n defaultValue,\r\n validationRule,\r\n headerInfoText,\r\n allowEditing = true,\r\n showColumnOnMobileDevices = true,\r\n }: DGridStringColumnProps) {\r\n super({\r\n field,\r\n headerText,\r\n headerTemplate: headerInfoText ? headerInfoTemplate(headerInfoText) : undefined,\r\n width,\r\n defaultValue,\r\n allowEditing,\r\n edit: {\r\n params: {\r\n showClearButton: !validationRule?.required,\r\n },\r\n },\r\n validationRules: getValidationRules(headerText, validationRule),\r\n visible: Browser.isDevice ? showColumnOnMobileDevices : true,\r\n });\r\n }\r\n}\r\n\r\nexport class DGridDateColumn extends Column {\r\n constructor({\r\n field,\r\n headerText,\r\n headerInfoText,\r\n width,\r\n defaultValue,\r\n format = \"dd/MM/yyyy\",\r\n validationRule,\r\n allowEditing = true,\r\n showColumnOnMobileDevices = true,\r\n }: DGridDateTimeColumnProps) {\r\n super({\r\n field,\r\n headerText,\r\n headerTemplate: headerInfoText ? headerInfoTemplate(headerInfoText) : undefined,\r\n width,\r\n defaultValue,\r\n type: ColumnType.DATE,\r\n enableGroupByFormat: true,\r\n format: { type: \"date\", format: format },\r\n edit: {\r\n params: {\r\n showClearButton: !validationRule?.required,\r\n firstDayOfWeek: 1\r\n },\r\n },\r\n editType: \"datepickeredit\",\r\n allowEditing,\r\n validationRules: getValidationRules(headerText, validationRule),\r\n visible: Browser.isDevice ? showColumnOnMobileDevices : true,\r\n });\r\n }\r\n}\r\n\r\nexport class DGridDateTimeColumn extends Column {\r\n constructor({\r\n field,\r\n headerText,\r\n headerInfoText,\r\n width,\r\n defaultValue,\r\n format = \"dd/MM/yyyy HH:mm:ss\",\r\n validationRule,\r\n allowEditing = true,\r\n showColumnOnMobileDevices = true,\r\n }: DGridDateTimeColumnProps) {\r\n super({\r\n field,\r\n headerText,\r\n headerTemplate: headerInfoText ? headerInfoTemplate(headerInfoText) : undefined,\r\n width,\r\n defaultValue,\r\n type: ColumnType.DATETIME,\r\n enableGroupByFormat: true,\r\n format: {\r\n type: \"datetime\",\r\n skeleton: format,\r\n },\r\n edit: {\r\n params: {\r\n showClearButton: !validationRule?.required,\r\n firstDayOfWeek: 1\r\n },\r\n },\r\n editType: \"datetimepickeredit\",\r\n allowEditing,\r\n validationRules: getValidationRules(headerText, validationRule),\r\n visible: Browser.isDevice ? showColumnOnMobileDevices : true,\r\n });\r\n }\r\n}\r\n\r\nexport class DGridBooleanColumn extends Column {\r\n constructor({\r\n field,\r\n headerText,\r\n headerInfoText,\r\n width,\r\n defaultValue,\r\n validationRule,\r\n allowEditing = true,\r\n showColumnOnMobileDevices = true,\r\n }: DGridBooleanColumnProps) {\r\n super({\r\n field,\r\n headerText,\r\n headerTemplate: headerInfoText ? headerInfoTemplate(headerInfoText) : undefined,\r\n width,\r\n defaultValue,\r\n enableGroupByFormat: true,\r\n displayAsCheckBox: true,\r\n type: ColumnType.BOOLEAN,\r\n textAlign: \"Center\",\r\n editType: \"booleanedit\",\r\n allowEditing,\r\n validationRules: getValidationRules(headerText, validationRule),\r\n visible: Browser.isDevice ? showColumnOnMobileDevices : true,\r\n });\r\n }\r\n}\r\n\r\nexport class DGridNumberColumn extends Column {\r\n constructor({\r\n field,\r\n headerText,\r\n headerInfoText,\r\n width,\r\n defaultValue,\r\n format = \"N0\",\r\n validationRule,\r\n allowEditing = true,\r\n showColumnOnMobileDevices = true,\r\n }: DGridNumberColumnProps) {\r\n super({\r\n field,\r\n headerText,\r\n headerTemplate: headerInfoText ? headerInfoTemplate(headerInfoText) : undefined,\r\n width,\r\n defaultValue,\r\n type: ColumnType.NUMBER,\r\n format,\r\n textAlign: \"Right\",\r\n enableGroupByFormat: true,\r\n edit: {\r\n params: {\r\n format,\r\n showClearButton: !validationRule?.required,\r\n },\r\n },\r\n editType: \"numericedit\",\r\n allowEditing,\r\n validationRules: getValidationRules(headerText, validationRule),\r\n visible: Browser.isDevice ? showColumnOnMobileDevices : true,\r\n });\r\n }\r\n}\r\n\r\nexport class DGridForeignKeyColumn extends Column {\r\n constructor({\r\n field,\r\n headerText,\r\n width,\r\n defaultValue,\r\n foreignKeyPath,\r\n foreignKeyField,\r\n foreignKeyValue,\r\n validationRule,\r\n allowEditing = true,\r\n showColumnOnMobileDevices = true,\r\n }: DGridForeignKeyColumnProps) {\r\n const data = new DDataManager({ path: foreignKeyPath });\r\n super({\r\n field,\r\n headerText,\r\n width,\r\n defaultValue,\r\n type: ColumnType.STRING,\r\n editType: \"dropdownedit\",\r\n dataSource: data,\r\n foreignKeyField,\r\n foreignKeyValue,\r\n allowEditing,\r\n edit: {\r\n params: {\r\n allowFiltering: true,\r\n sortOrder: \"Ascending\",\r\n dataSource: data,\r\n fields: { text: foreignKeyValue, value: foreignKeyField },\r\n showClearButton: !validationRule?.required,\r\n },\r\n },\r\n validationRules: getValidationRules(headerText, validationRule),\r\n visible: Browser.isDevice ? showColumnOnMobileDevices : true,\r\n });\r\n }\r\n}\r\n\r\nconst getValidationRules = (\r\n headerText,\r\n validationRule?: DGridValidationRule\r\n): Object | undefined => {\r\n let validationRules: Object | undefined;\r\n if (validationRule) {\r\n validationRules = {};\r\n if (validationRule.required !== undefined)\r\n validationRules[\"required\"] = [\r\n true,\r\n `Il campo '${headerText}' è obbligatorio.`,\r\n ];\r\n if (validationRule.minLength !== undefined)\r\n validationRules[\"minLength\"] = [\r\n validationRule.minLength,\r\n `Il campo '${headerText}' ha una lunghezza minima di ${validationRule.minLength} caratteri.`,\r\n ];\r\n if (validationRule.maxLength !== undefined)\r\n validationRules[\"maxLength\"] = [\r\n validationRule.maxLength,\r\n `Il campo '${headerText}' ha una lunghezza massima di ${validationRule.maxLength} caratteri.`,\r\n ];\r\n if (validationRule.number !== undefined)\r\n validationRules[\"number\"] = [\r\n true,\r\n `Il campo '${headerText}' può contenere solo cifre.`,\r\n ];\r\n if (validationRule.regex !== undefined)\r\n validationRules[\"regex\"] = [\r\n validationRule.regex,\r\n validationRule.regexErrorMessage ??\r\n `Il campo '${headerText}' non contiene un valore valido.`,\r\n ];\r\n if (validationRule.min !== undefined)\r\n validationRules[\"min\"] = [\r\n validationRule.min,\r\n `Il valore minimo del campo '${headerText}' è ${validationRule.min}.`,\r\n ];\r\n if (validationRule.max !== undefined)\r\n validationRules[\"max\"] = [\r\n validationRule.max,\r\n `Il valore massimo del campo '${headerText}' è ${validationRule.max}.`,\r\n ];\r\n if (validationRule.email !== undefined)\r\n validationRules[\"email\"] = [\r\n true,\r\n `Il campo '${headerText}' non contiene un indirizzo e-mail valido.`,\r\n ];\r\n if (validationRule.url !== undefined)\r\n validationRules[\"url\"] = [\r\n true,\r\n `Il campo '${headerText}' non contiene un url valido.`,\r\n ];\r\n }\r\n return validationRules;\r\n};\r\n","export class DGridFormatting {\r\n constructor(public field: string, public rules: DGridFormattingRule[]) { }\r\n}\r\n\r\nexport enum FormattingRulesOperator {\r\n EQUAL,\r\n BETWEEN,\r\n LESS,\r\n LESSOREQUAL,\r\n GREATER,\r\n GREATEROREQUAL,\r\n}\r\n\r\ninterface FormattingParams {\r\n description: string;\r\n operator: FormattingRulesOperator | ((record: object, value: object | boolean | string | number, value1: object | boolean | string | number, value2?: object | boolean | string | number) => boolean);\r\n value1: object | boolean | string | number;\r\n value2?: object | boolean | string | number;\r\n backgroundColor?: string;\r\n foregroundColor?: string;\r\n bold?: boolean;\r\n italic?: boolean;\r\n strikethrough?: boolean;\r\n}\r\n\r\nexport class DGridFormattingRule {\r\n private _description: string;\r\n public operator: FormattingRulesOperator | ((record: object, value: object | boolean | string | number, value1: object | boolean | string | number, value2?: object | boolean | string | number) => boolean);\r\n public value1: object | boolean | string | number;\r\n public value2?: object | boolean | string | number;\r\n public backgroundColor?: string;\r\n public foregroundColor?: string;\r\n public bold?: boolean;\r\n public italic?: boolean;\r\n public strikethrough?: boolean;\r\n\r\n public description() {\r\n let result = this._description;\r\n result = result.replace(\"[value1]\", this.value1.toString());\r\n result = result.replace(\"[value2]\", this.value1.toString());\r\n return result;\r\n }\r\n\r\n constructor({ description, operator, value1, value2, backgroundColor, foregroundColor, bold, italic, strikethrough }: FormattingParams) {\r\n this._description = description;\r\n this.operator = operator;\r\n this.value1 = value1;\r\n this.value2 = value2;\r\n this.backgroundColor = backgroundColor;\r\n this.foregroundColor = foregroundColor;\r\n this.bold = bold;\r\n this.italic = italic;\r\n this.strikethrough = strikethrough;\r\n }\r\n}\r\n","import { DGridFormatting } from \".\";\r\n\r\nimport \"./styles.scss\";\r\n\r\ninterface Params {\r\n formattingRules: DGridFormatting[];\r\n}\r\n\r\nexport const DGridFormattingLegend = ({ formattingRules }: Params) => {\r\n return (\r\n
\r\n {formattingRules.map((f) => {\r\n return f.rules.map((r) => {\r\n const classNames: string[] = [];\r\n const textStyles: string[] = [];\r\n if (r.bold) {\r\n classNames.push(\"bold\");\r\n textStyles.push(\"G\");\r\n }\r\n if (r.italic) {\r\n classNames.push(\"italic\");\r\n textStyles.push(\"C\");\r\n }\r\n if (r.strikethrough) {\r\n classNames.push(\"strikethrough\");\r\n textStyles.push(\"D\");\r\n }\r\n return (\r\n
\r\n \r\n {textStyles.join(\" \")}\r\n
\r\n \r\n {r.description()}\r\n
\r\n \r\n );\r\n });\r\n })}\r\n \r\n );\r\n};\r\n","import { GridComponent } from \"@syncfusion/ej2-react-grids\";\r\n\r\nexport class DGridToolbarItem {\r\n constructor(\r\n public id: string,\r\n public text: string,\r\n public icon: string,\r\n public action: (grid: GridComponent, rowData?: Object) => void,\r\n public tooltipText?: string,\r\n public requiresSelectedRow?: boolean,\r\n public executeActionOnDoubleClick?: boolean,\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 { 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","import { select, detach } from '@syncfusion/ej2-base';\nimport { VScroll } from './v-scroll';\nimport { HScroll } from './h-scroll';\n/**\n * Used to add scroll in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nexport function addScrolling(createElement, container, content, scrollType, enableRtl, offset) {\n var containerOffset;\n var contentOffset;\n var parentElem = container.parentElement;\n if (scrollType === 'vscroll') {\n containerOffset = offset || container.getBoundingClientRect().height;\n contentOffset = content.getBoundingClientRect().height;\n }\n else {\n containerOffset = container.getBoundingClientRect().width;\n contentOffset = content.getBoundingClientRect().width;\n }\n if (containerOffset < contentOffset) {\n return createScrollbar(createElement, container, content, scrollType, enableRtl, offset);\n }\n else if (parentElem) {\n var width = parentElem.getBoundingClientRect().width;\n if (width < containerOffset && scrollType === 'hscroll') {\n contentOffset = width;\n container.style.maxWidth = width + 'px';\n return createScrollbar(createElement, container, content, scrollType, enableRtl, offset);\n }\n return content;\n }\n else {\n return content;\n }\n}\n/**\n * Used to create scroll bar in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nfunction createScrollbar(createElement, container, content, scrollType, enableRtl, offset) {\n var scrollEle = createElement('div', { className: 'e-menu-' + scrollType });\n container.appendChild(scrollEle);\n scrollEle.appendChild(content);\n if (offset) {\n scrollEle.style.overflow = 'hidden';\n scrollEle.style.height = offset + 'px';\n }\n else {\n scrollEle.style.maxHeight = container.style.maxHeight;\n container.style.overflow = 'hidden';\n }\n var scrollObj;\n if (scrollType === 'vscroll') {\n scrollObj = new VScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetHeight / 2;\n }\n else {\n scrollObj = new HScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetWidth;\n }\n return scrollEle;\n}\n/**\n * Used to destroy the scroll option.\n *\n * @param {VScroll | HScroll} scrollObj - Specifies the scroller object\n * @param {Element} element - Specifies the element\n * @param {HTMLElement} skipEle - Specifies the skip element\n * @returns {void}\n * @hidden\n */\nexport function destroyScroll(scrollObj, element, skipEle) {\n if (scrollObj) {\n var menu = select('.e-menu-parent', element);\n if (menu) {\n if (!skipEle || skipEle === menu) {\n scrollObj.destroy();\n element.parentElement.appendChild(menu);\n detach(element);\n }\n }\n else {\n scrollObj.destroy();\n detach(element);\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, NotifyPropertyChanges, isBlazor } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents, Touch } from '@syncfusion/ej2-base';\nimport { Animation } from '@syncfusion/ej2-base';\nimport { Browser, Collection, setValue, getValue, getUniqueID, getInstance, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { select, selectAll, closest, detach, append, rippleEffect, isVisible, Complex, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { getZindexPartial, calculatePosition, isCollide, fit, Popup } from '@syncfusion/ej2-popups';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getScrollableParent } from '@syncfusion/ej2-popups';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nimport { addScrolling, destroyScroll } from '../common/menu-scroll';\nvar ENTER = 'enter';\nvar ESCAPE = 'escape';\nvar FOCUSED = 'e-focused';\nvar HEADER = 'e-menu-header';\nvar SELECTED = 'e-selected';\nvar SEPARATOR = 'e-separator';\nvar UPARROW = 'uparrow';\nvar DOWNARROW = 'downarrow';\nvar LEFTARROW = 'leftarrow';\nvar RIGHTARROW = 'rightarrow';\nvar HOME = 'home';\nvar END = 'end';\nvar TAB = 'tab';\nvar CARET = 'e-caret';\nvar ITEM = 'e-menu-item';\nvar DISABLED = 'e-disabled';\nvar HIDE = 'e-menu-hide';\nvar ICONS = 'e-icons';\nvar RTL = 'e-rtl';\nvar POPUP = 'e-menu-popup';\nvar TEMPLATE_PROPERTY = 'Template';\n/**\n * Configures the field options of the Menu.\n */\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('id')\n ], FieldSettings.prototype, \"itemId\", void 0);\n __decorate([\n Property('parentId')\n ], FieldSettings.prototype, \"parentId\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('url')\n ], FieldSettings.prototype, \"url\", void 0);\n __decorate([\n Property('separator')\n ], FieldSettings.prototype, \"separator\", void 0);\n __decorate([\n Property('items')\n ], FieldSettings.prototype, \"children\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Specifies menu items.\n */\nvar MenuItem = /** @class */ (function (_super) {\n __extends(MenuItem, _super);\n function MenuItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], MenuItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], MenuItem.prototype, \"separator\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuItem.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"url\", void 0);\n return MenuItem;\n}(ChildProperty));\nexport { MenuItem };\n/**\n * Animation configuration settings.\n */\nvar MenuAnimationSettings = /** @class */ (function (_super) {\n __extends(MenuAnimationSettings, _super);\n function MenuAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], MenuAnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], MenuAnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], MenuAnimationSettings.prototype, \"easing\", void 0);\n return MenuAnimationSettings;\n}(ChildProperty));\nexport { MenuAnimationSettings };\n/**\n * Base class for Menu and ContextMenu components.\n *\n * @private\n */\nvar MenuBase = /** @class */ (function (_super) {\n __extends(MenuBase, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {MenuBaseModel} options - Specifies the menu base model\n * @param {string | HTMLUListElement} element - Specifies the element\n */\n function MenuBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.navIdx = [];\n _this.animation = new Animation({});\n _this.isTapHold = false;\n _this.tempItem = [];\n _this.showSubMenuOn = 'Auto';\n return _this;\n }\n /**\n * Initialized third party configuration settings.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.preRender = function () {\n if (!this.isMenu) {\n var ul = void 0;\n if (this.element.tagName === 'EJS-CONTEXTMENU') {\n ul = this.createElement('ul', {\n id: getUniqueID(this.getModuleName()), className: 'e-control e-lib e-' + this.getModuleName()\n });\n var ejInst = getValue('ej2_instances', this.element);\n removeClass([this.element], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.clonedElement = this.element;\n this.element = ul;\n setValue('ej2_instances', ejInst, this.element);\n }\n else {\n ul = this.createElement('ul', { id: getUniqueID(this.getModuleName()) });\n append([].slice.call(this.element.cloneNode(true).children), ul);\n var refEle = this.element.nextElementSibling;\n if (refEle) {\n this.element.parentElement.insertBefore(ul, refEle);\n }\n else {\n this.element.parentElement.appendChild(ul);\n }\n this.clonedElement = ul;\n }\n this.clonedElement.style.display = 'none';\n }\n if (this.element.tagName === 'EJS-MENU') {\n var ele = this.element;\n var ejInstance = getValue('ej2_instances', ele);\n var ul = this.createElement('ul');\n var wrapper = this.createElement('EJS-MENU', { className: 'e-' + this.getModuleName() + '-wrapper' });\n for (var idx = 0, len = ele.attributes.length; idx < len; idx++) {\n ul.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = ul;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.clonedElement = wrapper;\n this.element = ele;\n if (!this.element.id) {\n this.element.id = getUniqueID(this.getModuleName());\n }\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderItems();\n this.wireEvents();\n this.renderComplete();\n var wrapper = this.getWrapper();\n // eslint-disable-next-line\n if (this.template && this.enableScrolling && (this.isReact || this.isAngular)) {\n requestAnimationFrame(function () {\n addScrolling(_this.createElement, wrapper, _this.element, 'hscroll', _this.enableRtl);\n });\n }\n };\n MenuBase.prototype.initialize = function () {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n if (this.isMenu) {\n this.element.parentElement.insertBefore(wrapper, this.element);\n }\n else {\n document.body.appendChild(wrapper);\n }\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n wrapper.appendChild(this.element);\n if (this.isMenu && this.hamburgerMode) {\n if (!this.target) {\n this.createHeaderContainer(wrapper);\n }\n }\n this.defaultOption = this.showItemOnClick;\n };\n MenuBase.prototype.renderItems = function () {\n if (!this.items.length) {\n var items = ListBase.createJsonFromElement(this.element, { fields: { child: 'items' } });\n this.setProperties({ items: items }, true);\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n }\n var ul = this.createItems(this.items);\n append(Array.prototype.slice.call(ul.children), this.element);\n this.element.classList.add('e-menu-parent');\n if (this.isMenu) {\n if (!this.hamburgerMode && this.element.classList.contains('e-vertical')) {\n this.setBlankIconStyle(this.element);\n }\n if (this.enableScrolling) {\n var wrapper = this.getWrapper();\n if (this.element.classList.contains('e-vertical')) {\n addScrolling(this.createElement, wrapper, this.element, 'vscroll', this.enableRtl);\n }\n else {\n addScrolling(this.createElement, wrapper, this.element, 'hscroll', this.enableRtl);\n }\n }\n }\n else {\n this.element.parentElement.setAttribute('role', 'dialog');\n this.element.parentElement.setAttribute('aria-label', 'context menu');\n }\n };\n MenuBase.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n if (this.target) {\n var target = void 0;\n var targetElems = selectAll(this.target);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.add(target, 'click', this.menuHeaderClickHandler, this);\n }\n else {\n if (Browser.isIos) {\n new Touch(target, { tapHold: this.touchHandler.bind(this) });\n }\n else {\n EventHandler.add(target, 'contextmenu', this.cmenuHandler, this);\n }\n }\n }\n this.targetElement = target;\n if (!this.isMenu) {\n EventHandler.add(this.targetElement, 'scroll', this.scrollHandler, this);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollHandler, this);\n }\n }\n }\n if (!Browser.isDevice) {\n this.delegateMoverHandler = this.moverHandler.bind(this);\n this.delegateMouseDownHandler = this.mouseDownHandler.bind(this);\n EventHandler.add(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler, this);\n EventHandler.add(document, 'mousedown', this.delegateMouseDownHandler, this);\n }\n this.delegateClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.delegateClickHandler, this);\n this.wireKeyboardEvent(wrapper);\n this.rippleFn = rippleEffect(wrapper, { selector: '.' + ITEM });\n };\n MenuBase.prototype.wireKeyboardEvent = function (element) {\n var keyConfigs = {\n downarrow: DOWNARROW,\n uparrow: UPARROW,\n enter: ENTER,\n leftarrow: LEFTARROW,\n rightarrow: RIGHTARROW,\n escape: ESCAPE\n };\n if (this.isMenu) {\n keyConfigs.home = HOME;\n keyConfigs.end = END;\n keyConfigs.tab = TAB;\n }\n new KeyboardEvents(element, {\n keyAction: this.keyBoardHandler.bind(this),\n keyConfigs: keyConfigs\n });\n };\n MenuBase.prototype.mouseDownHandler = function (e) {\n if (closest(e.target, '.e-' + this.getModuleName() + '-wrapper') !== this.getWrapper()\n && (!closest(e.target, '.e-' + this.getModuleName() + '-popup'))) {\n this.closeMenu(this.isMenu ? null : this.navIdx.length, e);\n }\n };\n MenuBase.prototype.keyHandler = function (e) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n if (e.target && (e.target.classList.contains('e-contextmenu') || e.target.classList.contains('e-menu-item'))) {\n e.preventDefault();\n }\n }\n };\n MenuBase.prototype.keyBoardHandler = function (e) {\n var actionName = '';\n var trgt = e.target;\n var actionNeeded = this.isMenu && !this.hamburgerMode && !this.element.classList.contains('e-vertical')\n && this.navIdx.length < 1;\n e.preventDefault();\n if (this.enableScrolling && e.keyCode === 13 && trgt.classList.contains('e-scroll-nav')) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [closest(trgt, '.e-' + this.getModuleName() + '-wrapper')]);\n }\n if (actionNeeded) {\n switch (e.action) {\n case RIGHTARROW:\n actionName = RIGHTARROW;\n e.action = DOWNARROW;\n break;\n case LEFTARROW:\n actionName = LEFTARROW;\n e.action = UPARROW;\n break;\n case DOWNARROW:\n actionName = DOWNARROW;\n e.action = RIGHTARROW;\n break;\n case UPARROW:\n actionName = UPARROW;\n e.action = '';\n break;\n }\n }\n else if (this.enableRtl) {\n switch (e.action) {\n case LEFTARROW:\n actionNeeded = true;\n actionName = LEFTARROW;\n e.action = RIGHTARROW;\n break;\n case RIGHTARROW:\n actionNeeded = true;\n actionName = RIGHTARROW;\n e.action = LEFTARROW;\n break;\n }\n }\n switch (e.action) {\n case DOWNARROW:\n case UPARROW:\n case END:\n case HOME:\n case TAB:\n this.upDownKeyHandler(e);\n break;\n case RIGHTARROW:\n this.rightEnterKeyHandler(e);\n break;\n case LEFTARROW:\n this.leftEscKeyHandler(e);\n break;\n case ENTER:\n if (this.hamburgerMode && trgt.tagName === 'SPAN' && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n this.rightEnterKeyHandler(e);\n }\n break;\n case ESCAPE:\n this.leftEscKeyHandler(e);\n break;\n }\n if (actionNeeded) {\n e.action = actionName;\n }\n };\n MenuBase.prototype.upDownKeyHandler = function (e) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (e.action === DOWNARROW || e.action === HOME || e.action === TAB) ? 0 : cul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n if (e.action !== END && e.action !== HOME) {\n fliIdx = this.getIdx(cul, fli);\n }\n fli.classList.remove(FOCUSED);\n if (e.action !== END && e.action !== HOME) {\n if (e.action === DOWNARROW) {\n fliIdx++;\n }\n else {\n fliIdx--;\n }\n if (fliIdx === (e.action === DOWNARROW ? cul.childElementCount : -1)) {\n fliIdx = defaultIdx;\n }\n }\n }\n var cli = cul.children[fliIdx];\n fliIdx = this.isValidLI(cli, fliIdx, e.action);\n cul.children[fliIdx].classList.add(FOCUSED);\n cul.children[fliIdx].focus();\n };\n MenuBase.prototype.isValidLI = function (cli, index, action) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (action === DOWNARROW || action === HOME || action === TAB) ? 0 : cul.childElementCount - 1;\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n if (action === DOWNARROW && index === cul.childElementCount - 1) {\n index = defaultIdx;\n }\n else if (action === UPARROW && index === 0) {\n index = defaultIdx;\n }\n else if ((action === DOWNARROW) || (action === RIGHTARROW)) {\n index++;\n }\n else {\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 var aEle = fli.querySelector('.e-menu-url');\n if (item.url && aEle) {\n switch (aEle.getAttribute('target')) {\n case '_blank':\n window.open(item.url, '_blank');\n break;\n case '_parent':\n window.parent.location.href = item.url;\n break;\n default:\n window.location.href = item.url;\n }\n }\n this.closeMenu(null, e);\n var sli = this.getLIByClass(this.getUlByNavIdx(), SELECTED);\n if (sli) {\n sli.classList.add(FOCUSED);\n sli.focus();\n }\n }\n }\n }\n };\n MenuBase.prototype.leftEscKeyHandler = function (e) {\n if (this.navIdx.length) {\n this.keyType = 'left';\n this.closeMenu(this.navIdx.length, e);\n }\n else {\n if (e.action === ESCAPE) {\n this.closeMenu(null, e);\n }\n }\n };\n MenuBase.prototype.scrollHandler = function (e) {\n this.closeMenu(null, e);\n };\n MenuBase.prototype.touchHandler = function (e) {\n this.isTapHold = true;\n this.cmenuHandler(e.originalEvent);\n };\n MenuBase.prototype.cmenuHandler = function (e) {\n e.preventDefault();\n this.currentTarget = e.target;\n this.isCMenu = true;\n this.pageX = e.changedTouches ? e.changedTouches[0].pageX + 1 : e.pageX + 1;\n this.pageY = e.changedTouches ? e.changedTouches[0].pageY + 1 : e.pageY + 1;\n this.closeMenu(null, e);\n if (this.isCMenu) {\n if (this.canOpen(e.target)) {\n this.openMenu(null, null, this.pageY, this.pageX, e);\n }\n this.isCMenu = false;\n }\n };\n // eslint:disable-next-line:max-func-body-length\n MenuBase.prototype.closeMenu = function (ulIndex, e, isIterated) {\n var _this = this;\n if (ulIndex === void 0) { ulIndex = 0; }\n if (e === void 0) { e = null; }\n if (this.isMenuVisible()) {\n var sli = void 0;\n var item_1;\n var wrapper_1 = this.getWrapper();\n var beforeCloseArgs = void 0;\n var items_1;\n var popups = this.getPopups();\n var isClose = false;\n var cnt = this.isMenu ? popups.length + 1 : wrapper_1.childElementCount;\n var ul_1 = this.isMenu && cnt !== 1 ? select('.e-ul', popups[cnt - 2])\n : selectAll('.e-menu-parent', wrapper_1)[cnt - 1];\n if (this.isMenu && ul_1.classList.contains('e-menu')) {\n sli = this.getLIByClass(ul_1, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n isClose = true;\n }\n if (!isClose) {\n var liElem_1 = e && e.target && this.getLI(e.target);\n if (liElem_1) {\n this.cli = liElem_1;\n }\n else {\n this.cli = ul_1.children[0];\n }\n item_1 = this.navIdx.length ? this.getItem(this.navIdx) : null;\n items_1 = item_1 ? item_1.items : this.items;\n beforeCloseArgs = { element: ul_1, parentItem: item_1, items: items_1, event: e, cancel: false, isFocused: true };\n this.trigger('beforeClose', beforeCloseArgs, function (observedCloseArgs) {\n var popupEle;\n var closeArgs;\n var popupId = '';\n var popupObj;\n var isOpen = !observedCloseArgs.cancel;\n if (isOpen || _this.isCMenu) {\n if (_this.isMenu) {\n popupEle = closest(ul_1, '.' + POPUP);\n if (_this.hamburgerMode) {\n popupEle.parentElement.style.minHeight = '';\n closest(ul_1, '.e-menu-item').setAttribute('aria-expanded', 'false');\n }\n _this.unWireKeyboardEvent(popupEle);\n destroyScroll(getInstance(popupEle.children[0], VScroll), popupEle.children[0]);\n popupObj = getInstance(popupEle, Popup);\n popupObj.hide();\n popupId = popupEle.id;\n popupObj.destroy();\n detach(popupEle);\n }\n else {\n _this.toggleAnimation(ul_1, false);\n }\n closeArgs = { element: ul_1, parentItem: item_1, items: items_1 };\n _this.trigger('onClose', closeArgs);\n _this.navIdx.pop();\n if (_this.navIdx.length === 0 && e && e.type === 'keyup') {\n _this.showSubMenu = false;\n }\n if (!_this.isMenu) {\n EventHandler.remove(ul_1, 'keydown', _this.keyHandler);\n if (_this.keyType === 'right') {\n _this.keyType = '';\n }\n }\n }\n _this.updateReactTemplate();\n var trgtliId;\n var closedLi;\n var trgtLi;\n var trgtpopUp = _this.getWrapper() && _this.getUlByNavIdx();\n if (_this.isCMenu) {\n if (_this.canOpen(e.target)) {\n _this.openMenu(null, null, _this.pageY, _this.pageX, e);\n }\n _this.isCMenu = false;\n }\n if (_this.isMenu && trgtpopUp && popupId.length) {\n // eslint-disable-next-line\n trgtliId = new RegExp('(.*)-ej2menu-' + _this.element.id + '-popup').exec(popupId)[1];\n closedLi = trgtpopUp.querySelector('[id=\"' + trgtliId + '\"]');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n else if (trgtpopUp) {\n closedLi = trgtpopUp.querySelector('.e-menu-item.e-selected');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n var submenus = liElem_1 && liElem_1.querySelectorAll('.e-menu-item');\n if (isOpen && _this.hamburgerMode && ulIndex && !(submenus.length)) {\n _this.afterCloseMenu(e);\n }\n else if (isOpen && !_this.hamburgerMode && closedLi && !trgtLi && _this.keyType !== 'left' && (_this.navIdx.length || !_this.isMenu && _this.navIdx.length === 0)) {\n var ele = (e && (e.target.classList.contains('e-vscroll') || e.target.classList.contains('e-scroll-nav')))\n ? closest(e.target, '.e-menu-wrapper') : null;\n if (ele) {\n ele = ele.querySelector('.e-menu-item');\n if (_this.showItemOnClick || (ele && _this.getIndex(ele.id, true).length <= _this.navIdx.length)) {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e, true);\n }\n }\n else {\n if (!(e && e.target.classList.contains('e-nav-arrow'))) {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e);\n }\n }\n }\n else if (isOpen && !isIterated && !ulIndex && ((_this.hamburgerMode && _this.navIdx.length) ||\n _this.navIdx.length === 1 && liElem_1 && trgtpopUp !== liElem_1.parentElement)) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && isNullOrUndefined(ulIndex) && _this.navIdx.length) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && !_this.isMenu && !ulIndex && _this.navIdx.length === 0 && !_this.isMenusClosed) {\n _this.isMenusClosed = true;\n _this.closeMenu(0, e);\n }\n else if (isOpen && _this.isMenu && e && e.target &&\n _this.navIdx.length !== 0 && closest(e.target, '.e-menu-parent.e-control')) {\n _this.closeMenu(0, e);\n }\n else if (isOpen && !_this.isMenu && selectAll('.e-menu-parent', wrapper_1)[ulIndex - 1] && e.which === 3) {\n _this.closeMenu(null, e);\n }\n else {\n if (isOpen && (_this.keyType === 'right' || _this.keyType === 'click')) {\n _this.afterCloseMenu(e);\n }\n else {\n var cul = _this.getUlByNavIdx();\n var sli_1 = _this.getLIByClass(cul, SELECTED);\n if (sli_1) {\n sli_1.setAttribute('aria-expanded', 'false');\n sli_1.classList.remove(SELECTED);\n if (observedCloseArgs.isFocused && liElem_1 || _this.keyType === 'left') {\n sli_1.classList.add(FOCUSED);\n if (!e.target || !e.target.classList.contains('e-edit-template')) {\n sli_1.focus();\n }\n }\n }\n if (!isOpen && _this.hamburgerMode && liElem_1 && liElem_1.getAttribute('aria-expanded') === 'false' &&\n liElem_1.getAttribute('aria-haspopup') === 'true') {\n if (closest(liElem_1, '.e-menu-parent.e-control')) {\n _this.navIdx = [];\n }\n else {\n _this.navIdx.pop();\n }\n _this.navIdx.push(_this.cliIdx);\n var item_2 = _this.getItem(_this.navIdx);\n liElem_1.setAttribute('aria-expanded', 'true');\n _this.openMenu(liElem_1, item_2, -1, -1, e);\n }\n }\n if (_this.navIdx.length < 1) {\n if (_this.showSubMenuOn === 'Hover' || _this.showSubMenuOn === 'Click') {\n _this.showItemOnClick = _this.defaultOption;\n _this.showSubMenuOn = 'Auto';\n }\n }\n }\n _this.removeStateWrapper();\n });\n }\n }\n };\n MenuBase.prototype.updateReactTemplate = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && this.template && this.navIdx.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var portals = this.portals.splice(0, this.items.length);\n this.clearTemplate(['template']);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.portals = portals;\n this.renderReactTemplates();\n }\n };\n MenuBase.prototype.getMenuItemModel = function (item, level) {\n if (isNullOrUndefined(item)) {\n return null;\n }\n if (isNullOrUndefined(level)) {\n level = 0;\n }\n var fields = this.getFields(level);\n return { text: item[fields.text], id: item[fields.id], items: item[fields.child], separator: item[fields.separator],\n iconCss: item[fields.iconCss], url: item[fields.url] };\n };\n MenuBase.prototype.getPopups = function () {\n var _this = this;\n var popups = [];\n [].slice.call(document.querySelectorAll('.' + POPUP)).forEach(function (elem) {\n if (!isNullOrUndefined(elem.querySelector('.' + ITEM)) && _this.getIndex(elem.querySelector('.' + ITEM).id, true).length) {\n popups.push(elem);\n }\n });\n return popups;\n };\n MenuBase.prototype.isMenuVisible = function () {\n return (this.navIdx.length > 0 || (this.element.classList.contains('e-contextmenu') && isVisible(this.element).valueOf()));\n };\n MenuBase.prototype.canOpen = function (target) {\n var canOpen = true;\n if (this.filter) {\n canOpen = false;\n var filter = this.filter.split(' ');\n for (var i = 0, len = filter.length; i < len; i++) {\n if (closest(target, '.' + filter[i])) {\n canOpen = true;\n break;\n }\n }\n }\n return canOpen;\n };\n MenuBase.prototype.openMenu = function (li, item, top, left, e, target) {\n var _this = this;\n if (top === void 0) { top = 0; }\n if (left === void 0) { left = 0; }\n if (e === void 0) { e = null; }\n if (target === void 0) { target = this.targetElement; }\n var wrapper = this.getWrapper();\n this.lItem = li;\n var elemId = this.element.id !== '' ? this.element.id : 'menu';\n this.isMenusClosed = false;\n if (isNullOrUndefined(top)) {\n top = -1;\n }\n if (isNullOrUndefined(left)) {\n left = -1;\n }\n if (li) {\n this.uList = this.createItems(item[this.getField('children', this.navIdx.length - 1)]);\n if (!this.isMenu && Browser.isDevice) {\n wrapper.lastChild.style.display = 'none';\n var data = {\n text: item[this.getField('text')].toString(), iconCss: ICONS + ' e-previous'\n };\n var hdata = new MenuItem(this.items[0], 'items', data, true);\n var hli = this.createItems([hdata]).children[0];\n hli.classList.add(HEADER);\n this.uList.insertBefore(hli, this.uList.children[0]);\n }\n if (this.isMenu) {\n this.popupWrapper = this.createElement('div', {\n className: 'e-' + this.getModuleName() + '-wrapper ' + POPUP, id: li.id + '-ej2menu-' + elemId + '-popup'\n });\n if (this.hamburgerMode) {\n top = li.offsetHeight;\n li.appendChild(this.popupWrapper);\n }\n else {\n document.body.appendChild(this.popupWrapper);\n }\n this.isNestedOrVertical = this.element.classList.contains('e-vertical') || this.navIdx.length !== 1;\n this.popupObj = this.generatePopup(this.popupWrapper, this.uList, li, this.isNestedOrVertical);\n if (this.template) {\n this.renderReactTemplates();\n }\n if (this.hamburgerMode) {\n this.calculateIndentSize(this.uList, li);\n }\n else {\n if (this.cssClass) {\n addClass([this.popupWrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.popupObj.hide();\n }\n if (!this.hamburgerMode && !this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, 0, 0, 'menu'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, 0, 0, 'menu');\n }\n }\n else {\n this.uList.style.zIndex = this.element.style.zIndex;\n wrapper.appendChild(this.uList);\n if (!this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, top, left, 'none'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n }\n else {\n this.uList = this.element;\n this.uList.style.zIndex = getZindexPartial(target ? target : this.element).toString();\n if (isNullOrUndefined(e)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ev = document.createEvent('MouseEvents');\n ev.initEvent('click', true, false);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetEvent = this.copyObject(ev, {});\n targetEvent.target = targetEvent.srcElement = target;\n targetEvent.currentTarget = target;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.triggerBeforeOpen(li, this.uList, item, targetEvent, top, left, 'none');\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MenuBase.prototype.copyObject = function (source, destination) {\n for (var prop in source) {\n destination[\"\" + prop] = source[\"\" + prop];\n }\n return destination;\n };\n MenuBase.prototype.calculateIndentSize = function (ul, li) {\n var liStyle = getComputedStyle(li);\n var liIndent = parseInt(liStyle.textIndent, 10);\n if (this.navIdx.length < 2 && !li.classList.contains('e-blankicon')) {\n liIndent *= 2;\n }\n else {\n liIndent += (liIndent / 4);\n }\n ul.style.textIndent = liIndent + 'px';\n var blankIconElem = ul.querySelectorAll('.e-blankicon');\n if (blankIconElem && blankIconElem.length) {\n var menuIconElem = ul.querySelector('.e-menu-icon');\n var menuIconElemStyle = getComputedStyle(menuIconElem);\n var blankIconIndent = (parseInt(menuIconElemStyle.marginRight, 10) + menuIconElem.offsetWidth + liIndent);\n for (var i = 0; i < blankIconElem.length; i++) {\n blankIconElem[i].style.textIndent = blankIconIndent + 'px';\n }\n }\n };\n MenuBase.prototype.generatePopup = function (popupWrapper, ul, li, isNestedOrVertical) {\n var _this = this;\n var popupObj = new Popup(popupWrapper, {\n actionOnScroll: this.hamburgerMode ? 'none' : 'reposition',\n relateTo: li,\n collision: this.hamburgerMode ? { X: 'none', Y: 'none' } : { X: isNestedOrVertical ||\n this.enableRtl ? 'none' : 'flip', Y: 'fit' },\n position: (isNestedOrVertical && !this.hamburgerMode) ? { X: 'right', Y: 'top' } : { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n enableRtl: this.enableRtl,\n content: ul,\n open: function () {\n var scrollEle = select('.e-menu-vscroll', popupObj.element);\n if (scrollEle) {\n scrollEle.style.height = 'inherit';\n scrollEle.style.maxHeight = '';\n }\n var ul = select('.e-ul', popupObj.element);\n popupObj.element.style.maxHeight = '';\n ul.focus();\n _this.triggerOpen(ul);\n }\n });\n return popupObj;\n };\n MenuBase.prototype.createHeaderContainer = function (wrapper) {\n wrapper = wrapper || this.getWrapper();\n var spanElem = this.createElement('span', { className: 'e-' + this.getModuleName() + '-header' });\n var tempTitle = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.title) : this.title;\n var spanTitle = this.createElement('span', {\n className: 'e-' + this.getModuleName() + '-title', innerHTML: tempTitle\n });\n var spanIcon = this.createElement('span', {\n className: 'e-icons e-' + this.getModuleName() + '-icon', attrs: { 'tabindex': '0' }\n });\n spanElem.appendChild(spanTitle);\n spanElem.appendChild(spanIcon);\n wrapper.insertBefore(spanElem, this.element);\n };\n MenuBase.prototype.openHamburgerMenu = function (e) {\n if (this.hamburgerMode) {\n this.triggerBeforeOpen(null, this.element, null, e, 0, 0, 'hamburger');\n }\n };\n MenuBase.prototype.closeHamburgerMenu = function (e) {\n var _this = this;\n var beforeCloseArgs = { element: this.element, parentItem: null, event: e,\n items: this.items, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedHamburgerCloseArgs) {\n if (!observedHamburgerCloseArgs.cancel) {\n _this.closeMenu(null, e);\n _this.element.classList.add('e-hide-menu');\n _this.trigger('onClose', { element: _this.element, parentItem: null, items: _this.items });\n }\n });\n };\n MenuBase.prototype.callFit = function (element, x, y, top, left) {\n return fit(element, null, { X: x, Y: y }, { top: top, left: left });\n };\n MenuBase.prototype.triggerBeforeOpen = function (li, ul, item, e, top, left, type) {\n var _this = this;\n var items = li ? item[this.getField('children', this.navIdx.length - 1)] : this.items;\n var eventArgs = {\n element: ul, items: items, parentItem: item, event: e, cancel: false, top: top, left: left, showSubMenuOn: 'Auto'\n };\n var menuType = type;\n this.trigger('beforeOpen', eventArgs, function (observedOpenArgs) {\n switch (menuType) {\n case 'menu':\n if (!_this.hamburgerMode) {\n if (observedOpenArgs.showSubMenuOn !== 'Auto') {\n _this.showItemOnClick = !_this.defaultOption;\n _this.showSubMenuOn = observedOpenArgs.showSubMenuOn;\n }\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n }\n _this.popupWrapper.style.display = 'block';\n if (!_this.hamburgerMode) {\n _this.popupWrapper.style.maxHeight = _this.popupWrapper.getBoundingClientRect().height + 'px';\n if (_this.enableScrolling) {\n addScrolling(_this.createElement, _this.popupWrapper, _this.uList, 'vscroll', _this.enableRtl);\n }\n _this.checkScrollOffset(e);\n }\n if (!_this.hamburgerMode && !_this.left && !_this.top) {\n _this.popupObj.refreshPosition(_this.lItem, true);\n _this.left = parseInt(_this.popupWrapper.style.left, 10);\n _this.top = parseInt(_this.popupWrapper.style.top, 10);\n if (_this.enableRtl) {\n _this.left =\n _this.isNestedOrVertical ? _this.left - _this.popupWrapper.offsetWidth - _this.lItem.parentElement.offsetWidth + 2\n : _this.left - _this.popupWrapper.offsetWidth + _this.lItem.offsetWidth;\n }\n // eslint-disable-next-line\n if (_this.template && (_this.isReact || _this.isAngular)) {\n requestAnimationFrame(function () {\n _this.collision();\n _this.popupWrapper.style.display = '';\n });\n }\n else {\n _this.collision();\n _this.popupWrapper.style.display = '';\n }\n }\n else {\n _this.popupObj.collision = { X: 'none', Y: 'none' };\n _this.popupWrapper.style.display = '';\n }\n break;\n case 'none':\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n break;\n case 'hamburger':\n if (!observedOpenArgs.cancel) {\n _this.element.classList.remove('e-hide-menu');\n _this.triggerOpen(_this.element);\n }\n break;\n }\n if (menuType !== 'hamburger') {\n if (observedOpenArgs.cancel) {\n if (_this.isMenu) {\n _this.popupObj.destroy();\n detach(_this.popupWrapper);\n }\n else if (ul.className.indexOf('e-ul') > -1) {\n detach(ul);\n }\n _this.navIdx.pop();\n }\n else {\n if (_this.isMenu) {\n if (_this.hamburgerMode) {\n _this.popupWrapper.style.top = _this.top + 'px';\n _this.popupWrapper.style.left = 0 + 'px';\n _this.toggleAnimation(_this.popupWrapper);\n }\n else {\n _this.setBlankIconStyle(_this.popupWrapper);\n _this.wireKeyboardEvent(_this.popupWrapper);\n rippleEffect(_this.popupWrapper, { selector: '.' + ITEM });\n _this.popupWrapper.style.left = _this.left + 'px';\n _this.popupWrapper.style.top = _this.top + 'px';\n var animationOptions = _this.animationSettings.effect !== 'None' ? {\n name: _this.animationSettings.effect, duration: _this.animationSettings.duration,\n timingFunction: _this.animationSettings.easing\n } : null;\n _this.popupObj.show(animationOptions, _this.lItem);\n }\n }\n else {\n _this.setBlankIconStyle(_this.uList);\n _this.setPosition(_this.lItem, _this.uList, _this.top, _this.left);\n _this.toggleAnimation(_this.uList);\n }\n }\n }\n if (_this.keyType === 'right') {\n var cul = _this.getUlByNavIdx();\n li.classList.remove(FOCUSED);\n if (_this.isMenu && _this.navIdx.length === 1) {\n _this.removeLIStateByClass([SELECTED], [_this.getWrapper()]);\n }\n li.classList.add(SELECTED);\n if (_this.action === ENTER) {\n var eventArgs_1 = { element: li, item: item, event: e };\n _this.trigger('select', eventArgs_1);\n }\n li.focus();\n cul = _this.getUlByNavIdx();\n if (cul) {\n var index = _this.isValidLI(cul.children[0], 0, _this.action);\n cul.children[index].classList.add(FOCUSED);\n cul.children[index].focus();\n }\n }\n });\n };\n MenuBase.prototype.collision = function () {\n var collide;\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if ((this.isNestedOrVertical || this.enableRtl) && (collide.indexOf('right') > -1\n || collide.indexOf('left') > -1)) {\n this.popupObj.collision.X = 'none';\n var offWidth = closest(this.lItem, '.e-' + this.getModuleName() + '-wrapper').offsetWidth;\n this.left =\n this.enableRtl ? calculatePosition(this.lItem, this.isNestedOrVertical ? 'right' : 'left', 'top').left\n : this.left - this.popupWrapper.offsetWidth - offWidth + 2;\n }\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if (collide.indexOf('left') > -1 || collide.indexOf('right') > -1) {\n this.left = this.callFit(this.popupWrapper, true, false, this.top, this.left).left;\n }\n this.popupWrapper.style.left = this.left + 'px';\n };\n MenuBase.prototype.setBlankIconStyle = function (menu) {\n var blankIconList = [].slice.call(menu.getElementsByClassName('e-blankicon'));\n if (!blankIconList.length) {\n return;\n }\n var iconLi = menu.querySelector('.e-menu-item:not(.e-blankicon):not(.e-separator)');\n if (!iconLi) {\n return;\n }\n var icon = iconLi.querySelector('.e-menu-icon');\n if (!icon) {\n return;\n }\n var cssProp = this.enableRtl ? { padding: 'paddingRight', margin: 'marginLeft' } :\n { padding: 'paddingLeft', margin: 'marginRight' };\n var iconCssProps = getComputedStyle(icon);\n var iconSize = parseInt(iconCssProps.fontSize, 10);\n if (!!parseInt(iconCssProps.width, 10) && parseInt(iconCssProps.width, 10) > iconSize) {\n iconSize = parseInt(iconCssProps.width, 10);\n }\n // eslint:disable\n var size = iconSize + parseInt(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n iconCssProps[cssProp.margin], 10) + parseInt(getComputedStyle(iconLi)[cssProp.padding], 10) + \"px\";\n blankIconList.forEach(function (li) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n li.style[cssProp.padding] = size;\n });\n // eslint:enable\n };\n MenuBase.prototype.checkScrollOffset = function (e) {\n var wrapper = this.getWrapper();\n if (wrapper.children[0].classList.contains('e-menu-hscroll') && this.navIdx.length === 1) {\n var trgt = isNullOrUndefined(e) ? this.element : closest(e.target, '.' + ITEM);\n var offsetEle = select('.e-hscroll-bar', wrapper);\n if (offsetEle.scrollLeft > trgt.offsetLeft) {\n offsetEle.scrollLeft -= (offsetEle.scrollLeft - trgt.offsetLeft);\n }\n var offsetLeft = offsetEle.scrollLeft + offsetEle.offsetWidth;\n var offsetRight = trgt.offsetLeft + trgt.offsetWidth;\n if (offsetLeft < offsetRight) {\n offsetEle.scrollLeft += (offsetRight - offsetLeft);\n }\n }\n };\n MenuBase.prototype.setPosition = function (li, ul, top, left) {\n var px = 'px';\n this.toggleVisiblity(ul);\n if (ul === this.element || (left > -1 && top > -1)) {\n var collide = isCollide(ul, null, left, top);\n if (collide.indexOf('right') > -1) {\n left = left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n var offset = this.callFit(ul, false, true, top, left);\n top = offset.top - 20;\n if (top < 0) {\n var newTop = (pageYOffset + document.documentElement.clientHeight) - ul.getBoundingClientRect().height;\n if (newTop > -1) {\n top = newTop;\n }\n }\n }\n collide = isCollide(ul, null, left, top);\n if (collide.indexOf('left') > -1) {\n var offset = this.callFit(ul, true, false, top, left);\n left = offset.left;\n }\n }\n else {\n if (Browser.isDevice) {\n top = Number(this.element.style.top.replace(px, ''));\n left = Number(this.element.style.left.replace(px, ''));\n }\n else {\n var x = this.enableRtl ? 'left' : 'right';\n var offset = calculatePosition(li, x, 'top');\n top = offset.top;\n left = offset.left;\n var collide = isCollide(ul, null, this.enableRtl ? left - ul.offsetWidth : left, top);\n var xCollision = collide.indexOf('left') > -1 || collide.indexOf('right') > -1;\n if (xCollision) {\n offset = calculatePosition(li, this.enableRtl ? 'right' : 'left', 'top');\n left = offset.left;\n }\n if (this.enableRtl || xCollision) {\n left = (this.enableRtl && xCollision) ? left : left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n offset = this.callFit(ul, false, true, top, left);\n top = offset.top;\n }\n }\n }\n this.toggleVisiblity(ul, false);\n ul.style.top = top + px;\n ul.style.left = left + px;\n };\n MenuBase.prototype.toggleVisiblity = function (ul, isVisible) {\n if (isVisible === void 0) { isVisible = true; }\n ul.style.visibility = isVisible ? 'hidden' : '';\n ul.style.display = isVisible ? 'block' : 'none';\n };\n MenuBase.prototype.createItems = function (items) {\n var _this = this;\n var level = this.navIdx ? this.navIdx.length : 0;\n var fields = this.getFields(level);\n var showIcon = this.hasField(items, this.getField('iconCss', level));\n var listBaseOptions = {\n showIcon: showIcon,\n moduleName: 'menu',\n fields: fields,\n template: this.template,\n itemNavigable: true,\n itemCreating: function (args) {\n if (!args.curData[args.fields[fields.id]]) {\n args.curData[args.fields[fields.id]] = getUniqueID('menuitem');\n }\n if (isNullOrUndefined(args.curData.htmlAttributes)) {\n args.curData.htmlAttributes = {};\n }\n if (Browser.isIE) {\n args.curData.htmlAttributes.role = 'menuitem';\n args.curData.htmlAttributes.tabindex = '-1';\n }\n else {\n Object.assign(args.curData.htmlAttributes, { role: 'menuitem', tabindex: '-1' });\n }\n if (_this.isMenu && !args.curData[_this.getField('separator', level)]) {\n args.curData.htmlAttributes['aria-label'] = args.curData[args.fields.text] ?\n args.curData[args.fields.text] : args.curData[args.fields.id];\n }\n if (args.curData[args.fields[fields.iconCss]] === '') {\n args.curData[args.fields[fields.iconCss]] = null;\n }\n },\n itemCreated: function (args) {\n if (args.curData[_this.getField('separator', level)]) {\n args.item.classList.add(SEPARATOR);\n args.item.setAttribute('role', 'separator');\n }\n if (showIcon && !args.curData[args.fields.iconCss]\n && !args.curData[_this.getField('separator', level)]) {\n args.item.classList.add('e-blankicon');\n }\n if (args.curData[args.fields.child]\n && args.curData[args.fields.child].length) {\n var span = _this.createElement('span', { className: ICONS + ' ' + CARET });\n args.item.appendChild(span);\n args.item.setAttribute('aria-haspopup', 'true');\n args.item.setAttribute('aria-expanded', 'false');\n args.item.classList.add('e-menu-caret-icon');\n }\n if (_this.isMenu && _this.template) {\n args.item.setAttribute('id', args.curData[args.fields.id].toString());\n args.item.removeAttribute('data-uid');\n if (args.item.classList.contains('e-level-1')) {\n args.item.classList.remove('e-level-1');\n }\n if (args.item.classList.contains('e-has-child')) {\n args.item.classList.remove('e-has-child');\n }\n args.item.removeAttribute('aria-level');\n }\n var eventArgs = { item: args.curData, element: args.item };\n _this.trigger('beforeItemRender', eventArgs);\n }\n };\n this.setProperties({ 'items': this.items }, true);\n if (this.isMenu) {\n listBaseOptions.templateID = this.element.id + TEMPLATE_PROPERTY;\n }\n var ul = ListBase.createList(this.createElement, items, listBaseOptions, !this.template, this);\n ul.setAttribute('tabindex', '0');\n if (this.isMenu) {\n ul.setAttribute('role', 'menu');\n }\n else {\n ul.setAttribute('role', 'menubar');\n }\n return ul;\n };\n MenuBase.prototype.moverHandler = function (e) {\n var trgt = e.target;\n this.liTrgt = trgt;\n var cli = this.getLI(trgt);\n var wrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : this.getWrapper();\n var hdrWrapper = this.getWrapper();\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var ulId;\n var isDifferentElem = false;\n if (!wrapper) {\n return;\n }\n if (wrapper.id !== '') {\n ulId = regex.exec(wrapper.id)[1];\n }\n else {\n ulId = wrapper.querySelector('ul').id;\n }\n if (ulId !== this.element.id) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [this.getWrapper()]);\n if (this.navIdx.length) {\n isDifferentElem = true;\n }\n else {\n return;\n }\n }\n if (cli && closest(cli, '.e-' + this.getModuleName() + '-wrapper') && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [wrapper].concat(this.getPopups()) : [wrapper]);\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [hdrWrapper].concat(this.getPopups()) : [hdrWrapper]);\n cli.classList.add(FOCUSED);\n if (!this.showItemOnClick) {\n this.clickHandler(e);\n }\n }\n else if (this.isMenu && this.showItemOnClick && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n }\n if (this.isMenu) {\n if (!this.showItemOnClick && (trgt.parentElement !== wrapper && !closest(trgt, '.e-' + this.getModuleName() + '-popup'))\n && (!cli || (cli && !this.getIndex(cli.id, true).length)) && this.showSubMenuOn !== 'Hover') {\n this.removeLIStateByClass([FOCUSED], [wrapper]);\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n else if (isDifferentElem && !this.showItemOnClick) {\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n if (!this.isClosed) {\n this.removeStateWrapper();\n }\n this.isClosed = false;\n }\n };\n MenuBase.prototype.removeStateWrapper = function () {\n if (this.liTrgt) {\n var wrapper = closest(this.liTrgt, '.e-menu-vscroll');\n if (this.liTrgt.tagName === 'DIV' && wrapper) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [wrapper]);\n }\n }\n };\n MenuBase.prototype.removeLIStateByClass = function (classList, element) {\n var li;\n var _loop_1 = function (i) {\n classList.forEach(function (className) {\n li = select('.' + className, element[i]);\n if (li) {\n li.classList.remove(className);\n }\n });\n };\n for (var i = 0; i < element.length; i++) {\n _loop_1(i);\n }\n };\n MenuBase.prototype.getField = function (propName, level) {\n if (level === void 0) { level = 0; }\n var fieldName = this.fields[\"\" + propName];\n return typeof fieldName === 'string' ? fieldName :\n (!fieldName[level] ? fieldName[fieldName.length - 1].toString()\n : fieldName[level].toString());\n };\n MenuBase.prototype.getFields = function (level) {\n if (level === void 0) { level = 0; }\n return {\n id: this.getField('itemId', level),\n iconCss: this.getField('iconCss', level),\n text: this.getField('text', level),\n url: this.getField('url', level),\n child: this.getField('children', level),\n separator: this.getField('separator', level)\n };\n };\n MenuBase.prototype.hasField = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][\"\" + field]) {\n return true;\n }\n }\n return false;\n };\n MenuBase.prototype.menuHeaderClickHandler = function (e) {\n if (closest(e.target, '.e-menu-wrapper').querySelector('ul.e-menu-parent').id !== this.element.id) {\n return;\n }\n if (this.element.className.indexOf('e-hide-menu') > -1) {\n this.openHamburgerMenu(e);\n }\n else {\n this.closeHamburgerMenu(e);\n }\n };\n MenuBase.prototype.clickHandler = function (e) {\n this.isTapHold = this.isTapHold ? false : this.isTapHold;\n var wrapper = this.getWrapper();\n var trgt = e.target;\n var cli = this.cli = this.getLI(trgt);\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var cliWrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : null;\n var isInstLI = cli && cliWrapper && (this.isMenu ? this.getIndex(cli.id, true).length > 0\n : wrapper.firstElementChild.id === cliWrapper.firstElementChild.id);\n if (Browser.isDevice && this.isMenu) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n this.mouseDownHandler(e);\n }\n if (cli && cliWrapper && this.isMenu) {\n var cliWrapperId = cliWrapper.id ? regex.exec(cliWrapper.id)[1] : cliWrapper.querySelector('.e-menu-parent').id;\n if (this.element.id !== cliWrapperId) {\n return;\n }\n }\n if (isInstLI && e.type === 'click' && !cli.classList.contains(HEADER)) {\n this.setLISelected(cli);\n var navIdx = this.getIndex(cli.id, true);\n var item = this.getItem(navIdx);\n var eventArgs = { element: cli, item: item, event: e };\n this.trigger('select', eventArgs);\n }\n if (isInstLI && (e.type === 'mouseover' || Browser.isDevice || this.showItemOnClick)) {\n var ul = void 0;\n if (cli.classList.contains(HEADER)) {\n ul = wrapper.children[this.navIdx.length - 1];\n this.toggleAnimation(ul);\n var sli = this.getLIByClass(ul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n detach(cli.parentNode);\n this.navIdx.pop();\n }\n else {\n if (!cli.classList.contains(SEPARATOR)) {\n this.showSubMenu = true;\n var cul = cli.parentNode;\n if (isNullOrUndefined(cul)) {\n return;\n }\n this.cliIdx = this.getIdx(cul, cli);\n if (this.isMenu || !Browser.isDevice) {\n var culIdx = this.isMenu ? Array.prototype.indexOf.call([wrapper].concat(this.getPopups()), closest(cul, '.' + 'e-' + this.getModuleName() + '-wrapper'))\n : this.getIdx(wrapper, cul);\n if (this.navIdx[culIdx] === this.cliIdx) {\n this.showSubMenu = false;\n }\n if (culIdx !== this.navIdx.length && (e.type !== 'mouseover' || this.showSubMenu)) {\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n this.isClosed = true;\n this.keyType = 'click';\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n }\n this.closeMenu(culIdx + 1, e);\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n }\n }\n }\n if (!this.isClosed) {\n this.afterCloseMenu(e);\n }\n this.isClosed = false;\n }\n }\n }\n else {\n if (this.isMenu && trgt.tagName === 'DIV' && this.navIdx.length && closest(trgt, '.e-menu-vscroll')) {\n var popupEle = closest(trgt, '.' + POPUP);\n var cIdx = Array.prototype.indexOf.call(this.getPopups(), popupEle) + 1;\n if (cIdx < this.navIdx.length) {\n this.closeMenu(cIdx + 1, e);\n if (popupEle) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [popupEle]);\n }\n }\n }\n else if (this.isMenu && this.hamburgerMode && trgt.tagName === 'SPAN'\n && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n if (trgt.tagName !== 'UL' || (this.isMenu ? trgt.parentElement.classList.contains('e-menu-wrapper') &&\n !this.getIndex(trgt.querySelector('.' + ITEM).id, true).length : trgt.parentElement !== wrapper)) {\n if (!cli) {\n this.removeLIStateByClass([SELECTED], [wrapper]);\n }\n if (!cli || !cli.querySelector('.' + CARET)) {\n this.closeMenu(null, e);\n }\n }\n }\n }\n };\n MenuBase.prototype.afterCloseMenu = function (e) {\n if (isNullOrUndefined(e)) {\n return;\n }\n var isHeader;\n if (this.showSubMenu) {\n if (this.showItemOnClick && this.navIdx.length === 0) {\n isHeader = closest(e.target, '.e-menu-parent.e-control');\n }\n else {\n isHeader = closest(this.element, '.e-menu-parent.e-control');\n }\n var idx = this.navIdx.concat(this.cliIdx);\n var item = this.getItem(idx);\n if (item && item[this.getField('children', idx.length - 1)] &&\n item[this.getField('children', idx.length - 1)].length) {\n if (e.type === 'mouseover' || (Browser.isDevice && this.isMenu)) {\n this.setLISelected(this.cli);\n }\n if ((!this.hamburgerMode && isHeader) || (this.hamburgerMode && this.cli.getAttribute('aria-expanded') === 'false')) {\n this.cli.setAttribute('aria-expanded', 'true');\n this.navIdx.push(this.cliIdx);\n this.openMenu(this.cli, item, null, null, e);\n }\n }\n else {\n if (e.type !== 'mouseover') {\n this.closeMenu(null, e);\n }\n }\n if (!isHeader) {\n var cul = this.getUlByNavIdx();\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.setAttribute('aria-expanded', 'false');\n sli.classList.remove(SELECTED);\n }\n }\n }\n this.keyType = '';\n };\n MenuBase.prototype.setLISelected = function (li) {\n var sli = this.getLIByClass(li.parentElement, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n if (!this.isMenu) {\n li.classList.remove(FOCUSED);\n }\n li.classList.add(SELECTED);\n };\n MenuBase.prototype.getLIByClass = function (ul, classname) {\n if (ul) {\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains(classname)) {\n return ul.children[i];\n }\n }\n }\n return null;\n };\n /**\n * This method is used to get the index of the menu item in the Menu based on the argument.\n *\n * @param {MenuItem | string} item - item be passed to get the index | id to be passed to get the item index.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.getItemIndex = function (item, isUniqueId) {\n var idx;\n if (typeof item === 'string') {\n idx = item;\n }\n else {\n idx = item.id;\n }\n var isText = (isUniqueId === false) ? false : true;\n var navIdx = this.getIndex(idx, isText);\n return navIdx;\n };\n /**\n * This method is used to set the menu item in the Menu based on the argument.\n *\n * @param {MenuItem} item - item need to be updated.\n * @param {string} id - id / text to be passed to update the item.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.setItem = function (item, id, isUniqueId) {\n var idx;\n if (isUniqueId) {\n idx = id ? id : item.id;\n }\n else {\n idx = id ? id : item.text;\n }\n var navIdx = this.getIndex(idx, isUniqueId);\n var newItem = this.getItem(navIdx);\n Object.assign(newItem, item);\n };\n MenuBase.prototype.getItem = function (navIdx) {\n navIdx = navIdx.slice();\n var idx = navIdx.pop();\n var items = this.getItems(navIdx);\n return items[idx];\n };\n MenuBase.prototype.getItems = function (navIdx) {\n var items = this.items;\n for (var i = 0; i < navIdx.length; i++) {\n items = items[navIdx[i]][this.getField('children', i)];\n }\n return items;\n };\n MenuBase.prototype.setItems = function (newItems, navIdx) {\n var items = this.getItems(navIdx);\n items.splice(0, items.length);\n for (var i = 0; i < newItems.length; i++) {\n items.splice(i, 0, newItems[i]);\n }\n };\n MenuBase.prototype.getIdx = function (ul, li, skipHdr) {\n if (skipHdr === void 0) { skipHdr = true; }\n var idx = Array.prototype.indexOf.call(ul.children, li);\n if (skipHdr && ul.children[0].classList.contains(HEADER)) {\n idx--;\n }\n return idx;\n };\n MenuBase.prototype.getLI = function (elem) {\n if (elem.tagName === 'LI' && elem.classList.contains('e-menu-item')) {\n return elem;\n }\n return closest(elem, 'li.e-menu-item');\n };\n MenuBase.prototype.updateItemsByNavIdx = function () {\n var items = this.items;\n var count = 0;\n for (var index = 0; index < this.navIdx.length; index++) {\n items = items[index].items;\n if (!items) {\n break;\n }\n count++;\n var ul = this.getUlByNavIdx(count);\n if (!ul) {\n break;\n }\n this.updateItem(ul, items);\n }\n };\n MenuBase.prototype.removeChildElement = function (elem) {\n while (elem.firstElementChild) {\n elem.removeChild(elem.firstElementChild);\n }\n return elem;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {MenuBaseModel} newProp - Specifies the new properties\n * @param {MenuBaseModel} oldProp - Specifies the old properties\n * @returns {void}\n */\n MenuBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var wrapper = this.getWrapper();\n var _loop_2 = function (prop) {\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (this_1.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'showItemOnClick':\n this_1.unWireEvents();\n this_1.showItemOnClick = newProp.showItemOnClick;\n this_1.wireEvents();\n break;\n case 'enableScrolling':\n if (newProp.enableScrolling) {\n var ul_2;\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n this_1.getPopups().forEach(function (wrapper) {\n ul_2 = select('.e-ul', wrapper);\n addScrolling(_this.createElement, wrapper, ul_2, 'vscroll', _this.enableRtl);\n });\n }\n else {\n var ul_3 = wrapper.children[0];\n if (this_1.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n }\n else {\n destroyScroll(getInstance(ul_3, HScroll), ul_3);\n }\n wrapper.style.overflow = '';\n wrapper.appendChild(this_1.element);\n this_1.getPopups().forEach(function (wrapper) {\n ul_3 = wrapper.children[0];\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n wrapper.style.overflow = '';\n });\n }\n break;\n case 'items': {\n var idx = void 0;\n var navIdx = void 0;\n var item = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this_1.isReact && this_1.template) {\n this_1.clearTemplate(['template']);\n }\n if (!Object.keys(oldProp.items).length) {\n this_1.updateItem(this_1.element, this_1.items);\n if (this_1.enableScrolling && this_1.element.parentElement.classList.contains('e-custom-scroll')) {\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n }\n if (!this_1.hamburgerMode) {\n for (var i = 1, count = wrapper.childElementCount; i < count; i++) {\n detach(wrapper.lastElementChild);\n }\n }\n this_1.navIdx = [];\n }\n else {\n var keys = Object.keys(newProp.items);\n for (var i = 0; i < keys.length; i++) {\n navIdx = this_1.getChangedItemIndex(newProp, [], Number(keys[i]));\n if (navIdx.length <= this_1.getWrapper().children.length) {\n idx = navIdx.pop();\n item = this_1.getItems(navIdx);\n this_1.insertAfter([item[idx]], item[idx].text);\n this_1.removeItem(item, navIdx, idx);\n this_1.setItems(item, navIdx);\n }\n navIdx.length = 0;\n }\n }\n break;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_2(prop);\n }\n };\n MenuBase.prototype.updateItem = function (ul, items) {\n if (isBlazor() && !this.isMenu) {\n ul = this.removeChildElement(ul);\n }\n else {\n if (this.enableScrolling) {\n var wrapper1 = this.getWrapper();\n var ul1 = wrapper1.children[0];\n if (this.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul1, VScroll), ul1);\n }\n else {\n destroyScroll(getInstance(ul1, HScroll), ul1);\n }\n }\n ul.innerHTML = '';\n }\n var lis = [].slice.call(this.createItems(items).children);\n lis.forEach(function (li) {\n ul.appendChild(li);\n });\n };\n MenuBase.prototype.getChangedItemIndex = function (newProp, index, idx) {\n index.push(idx);\n var key = Object.keys(newProp.items[idx]).pop();\n if (key === 'items') {\n var item = newProp.items[idx];\n var popStr = Object.keys(item.items).pop();\n if (popStr) {\n this.getChangedItemIndex(item, index, Number(popStr));\n }\n }\n else {\n if (key === 'isParentArray' && index.length > 1) {\n index.pop();\n }\n }\n return index;\n };\n MenuBase.prototype.removeItem = function (item, navIdx, idx) {\n item.splice(idx, 1);\n var uls = this.getWrapper().children;\n if (navIdx.length < uls.length) {\n detach(uls[navIdx.length].children[idx]);\n }\n };\n /**\n * Used to unwire the bind events.\n *\n * @private\n * @param {string} targetSelctor - Specifies the target selector\n * @returns {void}\n */\n MenuBase.prototype.unWireEvents = function (targetSelctor) {\n if (targetSelctor === void 0) { targetSelctor = this.target; }\n var wrapper = this.getWrapper();\n if (targetSelctor) {\n var target = void 0;\n var touchModule = void 0;\n var targetElems = selectAll(targetSelctor);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.remove(target, 'click', this.menuHeaderClickHandler);\n }\n else {\n if (Browser.isIos) {\n touchModule = getInstance(target, Touch);\n if (touchModule) {\n touchModule.destroy();\n }\n }\n else {\n EventHandler.remove(target, 'contextmenu', this.cmenuHandler);\n }\n }\n }\n if (!this.isMenu) {\n EventHandler.remove(this.targetElement, 'scroll', this.scrollHandler);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollHandler);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.remove(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler);\n EventHandler.remove(document, 'mousedown', this.delegateMouseDownHandler);\n }\n EventHandler.remove(document, 'click', this.delegateClickHandler);\n this.unWireKeyboardEvent(wrapper);\n this.rippleFn();\n };\n MenuBase.prototype.unWireKeyboardEvent = function (element) {\n var keyboardModule = getInstance(element, KeyboardEvents);\n if (keyboardModule) {\n keyboardModule.destroy();\n }\n };\n MenuBase.prototype.toggleAnimation = function (ul, isMenuOpen) {\n var _this = this;\n if (isMenuOpen === void 0) { isMenuOpen = true; }\n var pUlHeight;\n var pElement;\n if (this.animationSettings.effect === 'None' || !isMenuOpen) {\n this.end(ul, isMenuOpen);\n }\n else {\n this.animation.animate(ul, {\n name: this.animationSettings.effect,\n duration: this.animationSettings.duration,\n timingFunction: this.animationSettings.easing,\n begin: function (options) {\n if (_this.hamburgerMode) {\n pElement = options.element.parentElement;\n options.element.style.position = 'absolute';\n pUlHeight = pElement.offsetHeight;\n options.element.style.maxHeight = options.element.offsetHeight + 'px';\n pElement.style.maxHeight = '';\n }\n else {\n options.element.style.display = 'block';\n options.element.style.maxHeight = options.element.getBoundingClientRect().height + 'px';\n }\n },\n progress: function (options) {\n if (_this.hamburgerMode) {\n pElement.style.minHeight = (pUlHeight + options.element.offsetHeight) + 'px';\n }\n },\n end: function (options) {\n if (_this.hamburgerMode) {\n options.element.style.position = '';\n options.element.style.maxHeight = '';\n pElement.style.minHeight = '';\n options.element.style.top = 0 + 'px';\n options.element.children[0].focus();\n _this.triggerOpen(options.element.children[0]);\n }\n else {\n _this.end(options.element, isMenuOpen);\n }\n }\n });\n }\n };\n MenuBase.prototype.triggerOpen = function (ul) {\n var item = this.navIdx.length ? this.getItem(this.navIdx) : null;\n var eventArgs = {\n element: ul, parentItem: item, items: item ? item.items : this.items\n };\n this.trigger('onOpen', eventArgs);\n if (!this.isMenu) {\n EventHandler.add(ul, 'keydown', this.keyHandler, this);\n }\n };\n MenuBase.prototype.end = function (ul, isMenuOpen) {\n if (isMenuOpen) {\n ul.style.display = 'block';\n ul.style.maxHeight = '';\n this.triggerOpen(ul);\n if (ul.querySelector('.' + FOCUSED)) {\n ul.querySelector('.' + FOCUSED).focus();\n }\n else {\n var ele = this.getWrapper().children[this.getIdx(this.getWrapper(), ul) - 1];\n if (this.currentTarget) {\n if (!(this.currentTarget.classList.contains('e-numerictextbox') || this.currentTarget.classList.contains('e-textbox') || this.currentTarget.tagName === 'INPUT')) {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n else {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n }\n else {\n if (ul === this.element) {\n var fli = this.getLIByClass(this.element, FOCUSED);\n if (fli) {\n fli.classList.remove(FOCUSED);\n }\n var sli = this.getLIByClass(this.element, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n ul.style.display = 'none';\n }\n else {\n detach(ul);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n MenuBase.prototype.getPersistData = function () {\n return '';\n };\n /**\n * Get wrapper element.\n *\n * @returns {Element} - Wrapper element\n * @private\n */\n MenuBase.prototype.getWrapper = function () {\n return closest(this.element, '.e-' + this.getModuleName() + '-wrapper');\n };\n MenuBase.prototype.getIndex = function (data, isUniqueId, items, nIndex, isCallBack, level) {\n if (items === void 0) { items = this.items; }\n if (nIndex === void 0) { nIndex = []; }\n if (isCallBack === void 0) { isCallBack = false; }\n if (level === void 0) { level = 0; }\n var item;\n level = isCallBack ? level + 1 : 0;\n for (var i = 0, len = items.length; i < len; i++) {\n item = items[i];\n if ((isUniqueId ? item[this.getField('itemId', level)] : item[this.getField('text', level)]) === data) {\n nIndex.push(i);\n break;\n }\n else if (item[this.getField('children', level)]\n && item[this.getField('children', level)].length) {\n nIndex = this.getIndex(data, isUniqueId, item[this.getField('children', level)], nIndex, true, level);\n if (nIndex[nIndex.length - 1] === -1) {\n if (i !== len - 1) {\n nIndex.pop();\n }\n }\n else {\n nIndex.unshift(i);\n break;\n }\n }\n else {\n if (i === len - 1) {\n nIndex.push(-1);\n }\n }\n }\n return (!isCallBack && nIndex[0] === -1) ? [] : nIndex;\n };\n /**\n * This method is used to enable or disable the menu items in the Menu based on the items and enable argument.\n *\n * @param {string[]} items - Text items that needs to be enabled/disabled.\n * @param {boolean} enable - Set `true`/`false` to enable/disable the list items.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.enableItems = function (items, enable, isUniqueId) {\n if (enable === void 0) { enable = true; }\n var ul;\n var idx;\n var navIdx;\n var disabled = DISABLED;\n var skipItem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n if (this.navIdx.length) {\n if (navIdx.length !== 1) {\n skipItem = false;\n for (var i_1 = 0, len = navIdx.length - 1; i_1 < len; i_1++) {\n if (navIdx[i_1] !== this.navIdx[i_1]) {\n skipItem = true;\n break;\n }\n }\n if (skipItem) {\n continue;\n }\n }\n }\n else {\n if (navIdx.length !== 1) {\n continue;\n }\n }\n idx = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul && !isNullOrUndefined(idx)) {\n if (enable) {\n if (this.isMenu) {\n ul.children[idx].classList.remove(disabled);\n ul.children[idx].removeAttribute('aria-disabled');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.remove(disabled);\n }\n else {\n ul.children[idx].classList.remove(disabled);\n }\n }\n }\n else {\n if (this.isMenu) {\n ul.children[idx].classList.add(disabled);\n ul.children[idx].setAttribute('aria-disabled', 'true');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.add(disabled);\n }\n else {\n ul.children[idx].classList.add(disabled);\n }\n }\n }\n }\n }\n };\n /**\n * This method is used to show the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be shown.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.showItems = function (items, isUniqueId) {\n this.showHideItems(items, false, isUniqueId);\n };\n /**\n * This method is used to hide the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be hidden.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.hideItems = function (items, isUniqueId) {\n this.showHideItems(items, true, isUniqueId);\n };\n MenuBase.prototype.showHideItems = function (items, ishide, isUniqueId) {\n var ul;\n var index;\n var navIdx;\n var item;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n index = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n item = this.getItems(navIdx);\n if (ul) {\n var validUl = isUniqueId ? ul.children[index].id : item[index].text.toString();\n if (ishide && validUl === items[i]) {\n ul.children[index].classList.add(HIDE);\n }\n else if (!ishide && validUl === items[i]) {\n ul.children[index].classList.remove(HIDE);\n }\n }\n }\n };\n /**\n * It is used to remove the menu items from the Menu based on the items text.\n *\n * @param {string[]} items Text items that needs to be removed.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.removeItems = function (items, isUniqueId) {\n var idx;\n var navIdx;\n var iitems;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n if (!isNullOrUndefined(idx)) {\n this.removeItem(iitems, navIdx, idx);\n }\n }\n };\n /**\n * It is used to insert the menu items after the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item after that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertAfter = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId);\n };\n /**\n * It is used to insert the menu items before the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item before that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertBefore = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId, false);\n };\n MenuBase.prototype.insertItems = function (items, text, isUniqueId, isAfter) {\n if (isAfter === void 0) { isAfter = true; }\n var li;\n var idx;\n var navIdx;\n var iitems;\n var menuitem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(text, isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n menuitem = new MenuItem(iitems[0], 'items', items[i], true);\n iitems.splice(isAfter ? idx + 1 : idx, 0, menuitem);\n var uls = this.isMenu ? [this.getWrapper()].concat(this.getPopups()) : [].slice.call(this.getWrapper().children);\n if (!isNullOrUndefined(idx) && navIdx.length < uls.length) {\n idx = isAfter ? idx + 1 : idx;\n li = this.createItems(iitems).children[idx];\n var ul = this.isMenu ? select('.e-menu-parent', uls[navIdx.length]) : uls[navIdx.length];\n ul.insertBefore(li, ul.children[idx]);\n }\n }\n };\n MenuBase.prototype.removeAttributes = function () {\n var _this = this;\n ['top', 'left', 'display', 'z-index'].forEach(function (key) {\n _this.element.style.removeProperty(key);\n });\n ['role', 'tabindex', 'class', 'style'].forEach(function (key) {\n if (key === 'class' && _this.element.classList.contains('e-menu-parent')) {\n _this.element.classList.remove('e-menu-parent');\n }\n if (['class', 'style'].indexOf(key) === -1 || !_this.element.getAttribute(key)) {\n _this.element.removeAttribute(key);\n }\n if (_this.isMenu && key === 'class' && _this.element.classList.contains('e-vertical')) {\n _this.element.classList.remove('e-vertical');\n }\n });\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n MenuBase.prototype.destroy = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n this.unWireEvents();\n if (!this.isMenu) {\n this.clonedElement.style.display = '';\n if (this.clonedElement.tagName === 'EJS-CONTEXTMENU') {\n addClass([this.clonedElement], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.element = this.clonedElement;\n }\n else {\n if (this.refreshing && this.clonedElement.childElementCount && this.clonedElement.children[0].tagName === 'LI') {\n this.setProperties({ 'items': [] }, true);\n }\n if (document.getElementById(this.clonedElement.id)) {\n var refEle = this.clonedElement.nextElementSibling;\n if (refEle && refEle !== wrapper) {\n this.clonedElement.parentElement.insertBefore(this.element, refEle);\n }\n else {\n this.clonedElement.parentElement.appendChild(this.element);\n }\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n append([].slice.call(this.clonedElement.children), this.element);\n detach(this.clonedElement);\n this.removeAttributes();\n }\n }\n this.clonedElement = null;\n }\n else {\n this.closeMenu();\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n this.removeAttributes();\n wrapper.parentNode.insertBefore(this.element, wrapper);\n this.clonedElement = null;\n }\n if (this.isMenu && this.clonedElement) {\n detach(this.element);\n wrapper.style.display = '';\n wrapper.classList.remove('e-' + this.getModuleName() + '-wrapper');\n wrapper.removeAttribute('data-ripple');\n }\n else {\n detach(wrapper);\n }\n _super.prototype.destroy.call(this);\n if (this.template) {\n this.clearTemplate(['template']);\n }\n }\n this.rippleFn = null;\n };\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"created\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(0)\n ], MenuBase.prototype, \"hoverDelay\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"filter\", void 0);\n __decorate([\n Property(null)\n ], MenuBase.prototype, \"template\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"enableScrolling\", void 0);\n __decorate([\n Property(true)\n ], MenuBase.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({ itemId: 'id', text: 'text', parentId: 'parentId', iconCss: 'iconCss', url: 'url', separator: 'separator', children: 'items' }, FieldSettings)\n ], MenuBase.prototype, \"fields\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuBase.prototype, \"items\", void 0);\n __decorate([\n Complex({ duration: 400, easing: 'ease', effect: 'SlideDown' }, MenuAnimationSettings)\n ], MenuBase.prototype, \"animationSettings\", void 0);\n MenuBase = __decorate([\n NotifyPropertyChanges\n ], MenuBase);\n return MenuBase;\n}(Component));\nexport { MenuBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/triple-slash-reference */\n/// \nimport { attributes, getUniqueID, Collection, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { getZindexPartial } from '@syncfusion/ej2-popups';\nimport { MenuBase, MenuItem } from '../common/menu-base';\n/**\n * The ContextMenu is a graphical user interface that appears on the user right click/touch hold operation.\n * ```html\n *
\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar ContextMenu = /** @class */ (function (_super) {\n __extends(ContextMenu, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {ContextMenuModel} options - Specifies the context menu model\n * @param {string} element - Specifies the element\n */\n function ContextMenu(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * For internal use only - prerender processing.\n *\n * @private\n * @returns {void}\n */\n ContextMenu.prototype.preRender = function () {\n this.isMenu = false;\n this.element.id = this.element.id || getUniqueID('ej2-contextmenu');\n _super.prototype.preRender.call(this);\n };\n ContextMenu.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n attributes(this.element, { 'role': 'menubar', 'tabindex': '0' });\n this.element.style.zIndex = getZindexPartial(this.element).toString();\n };\n /**\n * This method is used to open the ContextMenu in specified position.\n *\n * @param {number} top - To specify ContextMenu vertical positioning.\n * @param {number} left - To specify ContextMenu horizontal positioning.\n * @param {HTMLElement} target - To calculate z-index for ContextMenu based upon the specified target.\n * @function open\n * @returns {void}\n */\n ContextMenu.prototype.open = function (top, left, target) {\n _super.prototype.openMenu.call(this, null, null, top, left, null, target);\n };\n /**\n * Closes the ContextMenu if it is opened.\n *\n * @function close\n * @returns {void}\n */\n ContextMenu.prototype.close = function () {\n _super.prototype.closeMenu.call(this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {ContextMenuModel} newProp - Specifies new properties\n * @param {ContextMenuModel} oldProp - Specifies old properties\n * @returns {void}\n */\n ContextMenu.prototype.onPropertyChanged = function (newProp, oldProp) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'filter':\n this.close();\n this.filter = newProp.filter;\n break;\n case 'target':\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n break;\n }\n }\n };\n /**\n * Get module name.\n *\n * @returns {string} - Module Name\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"filter\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], ContextMenu.prototype, \"items\", void 0);\n ContextMenu = __decorate([\n NotifyPropertyChanges\n ], ContextMenu);\n return ContextMenu;\n}(MenuBase));\nexport { ContextMenu };\n","import { Draggable, Droppable, EventHandler } from '@syncfusion/ej2-base';\nimport { createElement, closest, remove, classList, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { parentsUntil, isActionPrevent, isGroupAdaptive, updatecloneRow, getComplexFieldID, getParsedFieldID, isComplexField, findCellIndex, resetRowIndex } from '../base/util';\nimport { resetCachedRowIndex, groupReorderRowObject } from '../base/util';\nimport { generateExpandPredicates, getPredicates, capitalizeFirstLetter } from '../base/util';\nimport * as events from '../base/constant';\nimport { AriaService } from '../services/aria-service';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport { DataUtil, Predicate } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\nimport { RowRenderer } from '../renderer/row-renderer';\n// eslint-disable-next-line valid-jsdoc\n/**\n *\n * The `Group` module is used to handle group action.\n */\nvar Group = /** @class */ (function () {\n /**\n * Constructor for Grid group module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {GroupSettingsModel} groupSettings - specifies the GroupSettingsModel\n * @param {string[]} sortedColumns - specifies the sortedColumns\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @hidden\n */\n function Group(parent, groupSettings, sortedColumns, serviceLocator) {\n var _this = this;\n //Internal variables\n this.sortRequired = true;\n /** @hidden */\n this.groupSortFocus = false;\n /** @hidden */\n this.groupTextFocus = false;\n /** @hidden */\n this.groupCancelFocus = false;\n this.isAppliedGroup = false;\n this.isAppliedUnGroup = false;\n this.isAppliedCaptionRowBorder = false;\n this.reorderingColumns = [];\n this.visualElement = createElement('div', {\n className: 'e-cloneproperties e-dragclone e-gdclone',\n styles: 'line-height:23px', attrs: { action: 'grouping' }\n });\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = e.sender.target;\n var element = target.classList.contains('e-groupheadercell') ? target :\n parentsUntil(target, 'e-groupheadercell');\n if (!element || (!target.classList.contains('e-drag') && _this.groupSettings.allowReordering)) {\n return false;\n }\n _this.column = gObj.getColumnByField(element.firstElementChild.getAttribute('ej-mappingname'));\n _this.visualElement.textContent = element.textContent;\n _this.visualElement.style.width = element.offsetWidth + 2 + 'px';\n _this.visualElement.style.height = element.offsetHeight + 2 + 'px';\n _this.visualElement.setAttribute('e-mappinguid', _this.column.uid);\n gObj.element.appendChild(_this.visualElement);\n return _this.visualElement;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.dragStart = function (e) {\n _this.parent.element.classList.add('e-ungroupdrag');\n };\n this.drag = function (e) {\n if (_this.groupSettings.allowReordering) {\n _this.animateDropper(e);\n }\n var target = e.target;\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n _this.parent.trigger(events.columnDrag, { target: target, draggableType: 'headercell', column: _this.column });\n if (!_this.groupSettings.allowReordering) {\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n if (!(parentsUntil(target, literals.gridContent) || parentsUntil(target, 'e-headercell'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n }\n };\n this.dragStop = function (e) {\n _this.parent.element.classList.remove('e-ungroupdrag');\n var preventDrop = !(parentsUntil(e.target, literals.gridContent) || parentsUntil(e.target, 'e-gridheader'));\n if (_this.groupSettings.allowReordering && preventDrop) {\n remove(e.helper);\n if (parentsUntil(e.target, 'e-groupdroparea')) {\n _this.rearrangeGroup();\n }\n else if (!(parentsUntil(e.target, 'e-grid'))) {\n var field = _this.parent.getColumnByUid(e.helper.getAttribute('e-mappinguid')).field;\n if (_this.groupSettings.columns.indexOf(field) !== -1) {\n _this.ungroupColumn(field);\n }\n }\n return;\n }\n else if (preventDrop) {\n remove(e.helper);\n return;\n }\n };\n this.animateDropper = function (e) {\n var uid = _this.parent.element.querySelector('.e-cloneproperties').getAttribute('e-mappinguid');\n var dragField = _this.parent.getColumnByUid(uid).field;\n var parent = parentsUntil(e.target, 'e-groupdroparea');\n var dropTarget = parentsUntil(e.target, 'e-group-animator');\n var grouped = [].slice.call(_this.element.getElementsByClassName('e-groupheadercell'))\n .map(function (e) { return e.querySelector('div').getAttribute('ej-mappingname'); });\n var cols = JSON.parse(JSON.stringify(grouped));\n if (dropTarget || parent) {\n if (dropTarget) {\n var dropField = dropTarget.querySelector('div[ej-mappingname]').getAttribute('ej-mappingname');\n var dropIndex = +(dropTarget.getAttribute('index'));\n if (dropField !== dragField) {\n var dragIndex = cols.indexOf(dragField);\n if (dragIndex !== -1) {\n cols.splice(dragIndex, 1);\n }\n var flag = dropIndex !== -1 && dragIndex === dropIndex;\n cols.splice(dropIndex + (flag ? 1 : 0), 0, dragField);\n }\n }\n else if (parent && cols.indexOf(dragField) === -1) {\n cols.push(dragField);\n }\n _this.element.innerHTML = '';\n if (cols.length && !_this.element.classList.contains('e-grouped')) {\n _this.element.classList.add('e-grouped');\n }\n _this.reorderingColumns = cols;\n for (var c = 0; c < cols.length; c++) {\n _this.addColToGroupDrop(cols[parseInt(c.toString(), 10)]);\n }\n }\n else {\n _this.addLabel();\n _this.removeColFromGroupDrop(dragField);\n }\n };\n this.drop = function (e) {\n var gObj = _this.parent;\n var column = gObj.getColumnByUid(e.droppedElement.getAttribute('e-mappinguid'));\n _this.element.classList.remove('e-hover');\n remove(e.droppedElement);\n _this.aria.setDropTarget(_this.parent.element.querySelector('.e-groupdroparea'), false);\n _this.aria.setGrabbed(_this.parent.getHeaderTable().querySelector('[aria-grabbed=true]'), false);\n if (isNullOrUndefined(column) || column.allowGrouping === false ||\n parentsUntil(gObj.getColumnHeaderByUid(column.uid), 'e-grid').getAttribute('id') !==\n gObj.element.getAttribute('id')) {\n _this.parent.log('action_disabled_column', { moduleName: _this.getModuleName(), columnName: column ? column.headerText : undefined });\n return;\n }\n _this.groupColumn(column.field);\n };\n this.contentRefresh = true;\n this.aria = new AriaService();\n this.parent = parent;\n this.groupSettings = groupSettings;\n this.serviceLocator = serviceLocator;\n this.sortedColumns = sortedColumns;\n this.focus = serviceLocator.getService('focus');\n this.addEventListener();\n this.groupGenerator = new GroupModelGenerator(this.parent);\n }\n Group.prototype.addLabel = function () {\n if (!this.element.getElementsByClassName('e-group-animator').length) {\n var dragLabel = this.l10n.getConstant('GroupDropArea');\n this.element.innerHTML = dragLabel;\n this.element.classList.remove('e-grouped');\n }\n };\n Group.prototype.rearrangeGroup = function () {\n this.sortRequired = false;\n this.updateModel();\n };\n Group.prototype.columnDrag = function (e) {\n if (this.groupSettings.allowReordering && e.column.allowGrouping) {\n this.animateDropper(e);\n }\n var cloneElement = this.parent.element.querySelector('.e-cloneproperties');\n if (!this.parent.allowReordering) {\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n }\n if (!(e.column.allowGrouping && (parentsUntil(e.target, 'e-groupdroparea') ||\n (parentsUntil(e.target, 'e-headercell') &&\n parentsUntil(e.target, 'e-headercell').isEqualNode(this.parent.getColumnHeaderByField(e.column.field))))) &&\n !(this.parent.allowReordering && parentsUntil(e.target, 'e-headercell'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n if (e.target.classList.contains('e-groupdroparea')) {\n this.element.classList.add('e-hover');\n }\n else {\n this.element.classList.remove('e-hover');\n }\n };\n Group.prototype.columnDragStart = function (e) {\n if (e.target.classList.contains('e-stackedheadercell')) {\n return;\n }\n var dropArea = this.parent.element.querySelector('.e-groupdroparea');\n this.aria.setDropTarget(dropArea, e.column.allowGrouping);\n var element = e.target.classList.contains('e-headercell') ? e.target : parentsUntil(e.target, 'e-headercell');\n this.aria.setGrabbed(element, true, !e.column.allowGrouping);\n };\n Group.prototype.columnDrop = function (e) {\n var gObj = this.parent;\n if (e.droppedElement.getAttribute('action') === 'grouping') {\n var column = gObj.getColumnByUid(e.droppedElement.getAttribute('e-mappinguid'));\n if (isNullOrUndefined(column) || column.allowGrouping === false ||\n parentsUntil(gObj.getColumnHeaderByUid(column.uid), 'e-grid').getAttribute('id') !==\n gObj.element.getAttribute('id')) {\n return;\n }\n this.ungroupColumn(column.field);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Group.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.groupComplete, this.onActionComplete, this);\n this.parent.on(events.ungroupComplete, this.onActionComplete, this);\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.click, this.clickHandler, this);\n this.parent.on(events.columnDrag, this.columnDrag, this);\n this.parent.on(events.columnDragStart, this.columnDragStart, this);\n this.parent.on(events.headerDrop, this.columnDrop, this);\n this.parent.on(events.columnDrop, this.columnDrop, this);\n this.parent.on(events.headerRefreshed, this.refreshSortIcons, this);\n this.parent.on(events.sortComplete, this.refreshSortIcons, this);\n this.parent.on(events.keyPressed, this.keyPressHandler, this);\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.onEmpty, this.initialEnd, this);\n this.parent.on(events.initialEnd, this.render, this);\n this.parent.on(events.groupAggregates, this.onGroupAggregates, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on('group-expand-collapse', this.updateExpand, this);\n this.parent.on('persist-data-changed', this.initialEnd, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Group.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialEnd, this.render);\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.groupComplete, this.onActionComplete);\n this.parent.off(events.ungroupComplete, this.onActionComplete);\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.columnDrag, this.columnDrag);\n this.parent.off(events.columnDragStart, this.columnDragStart);\n this.parent.off(events.columnDrop, this.columnDrop);\n this.parent.off(events.headerDrop, this.columnDrop);\n this.parent.off(events.headerRefreshed, this.refreshSortIcons);\n this.parent.off(events.sortComplete, this.refreshSortIcons);\n this.parent.off(events.keyPressed, this.keyPressHandler);\n this.parent.off(events.groupAggregates, this.onGroupAggregates);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off('group-expand-collapse', this.updateExpand);\n };\n Group.prototype.initialEnd = function () {\n var gObj = this.parent;\n this.parent.off(events.contentReady, this.initialEnd);\n this.parent.off(events.onEmpty, this.initialEnd);\n if (this.parent.getColumns().length && this.groupSettings.columns.length) {\n this.contentRefresh = false;\n for (var _i = 0, _a = gObj.groupSettings.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n this.groupColumn(col);\n }\n this.contentRefresh = true;\n }\n };\n Group.prototype.keyPressHandler = function (e) {\n var gObj = this.parent;\n if (e.target && parentsUntil(e.target, 'e-groupheadercell') && (e.action === 'tab' || e.action === 'shiftTab')) {\n var focusableGroupedItems = this.getFocusableGroupedItems();\n if ((e.action === 'tab' && e.target === focusableGroupedItems[focusableGroupedItems.length - 1])\n || (e.action === 'shiftTab' && e.target === focusableGroupedItems[0])) {\n return;\n }\n for (var i = 0; i < focusableGroupedItems.length; i++) {\n if (e.target === focusableGroupedItems[parseInt(i.toString(), 10)]) {\n e.preventDefault();\n var index = e.action === 'tab' ? i + 1 : i - 1;\n focusableGroupedItems[parseInt(index.toString(), 10)].focus();\n return;\n }\n }\n }\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (isMacLike && e.metaKey) {\n if (e.action === 'downArrow') {\n e.action = 'ctrlDownArrow';\n }\n else if (e.action === 'upArrow') {\n e.action = 'ctrlUpArrow';\n }\n }\n if (e.action !== 'ctrlSpace' && (!this.groupSettings.columns.length ||\n ['altDownArrow', 'altUpArrow', 'ctrlDownArrow', 'ctrlUpArrow', 'enter'].indexOf(e.action) === -1)) {\n return;\n }\n switch (e.action) {\n case 'altDownArrow':\n case 'altUpArrow':\n // eslint-disable-next-line no-case-declarations\n var selected = gObj.allowSelection ? gObj.getSelectedRowIndexes() : [];\n if (selected.length) {\n e.preventDefault();\n var rows = gObj.getContentTable().querySelector(literals.tbody).children;\n var dataRow = gObj.getDataRows()[selected[selected.length - 1]];\n var grpRow = void 0;\n for (var i = dataRow.rowIndex; i >= 0; i--) {\n if (!rows[parseInt(i.toString(), 10)].classList.contains(literals.row) && !rows[parseInt(i.toString(), 10)].classList.contains('e-detailrow')) {\n grpRow = rows[parseInt(i.toString(), 10)];\n break;\n }\n }\n this.expandCollapseRows(grpRow.querySelector(e.action === 'altUpArrow' ?\n '.e-recordplusexpand' : '.e-recordpluscollapse'));\n }\n break;\n case 'ctrlDownArrow':\n e.preventDefault();\n this.expandAll();\n break;\n case 'ctrlUpArrow':\n e.preventDefault();\n this.collapseAll();\n break;\n case 'enter':\n if (e.target.classList.contains('e-groupsort')) {\n this.groupSortFocus = true;\n e.preventDefault();\n this.applySortFromTarget(e.target);\n break;\n }\n else if (e.target.classList.contains('e-ungroupbutton')) {\n this.groupCancelFocus = true;\n e.preventDefault();\n this.unGroupFromTarget(e.target);\n break;\n }\n if (this.parent.isEdit || (closest(e.target, '#' + this.parent.element.id + '_searchbar') !== null) ||\n parentsUntil(e.target, 'e-pager') || parentsUntil(e.target, 'e-toolbar')) {\n return;\n }\n // eslint-disable-next-line no-case-declarations\n var element = this.focus.getFocusedElement();\n if (element && (element.classList.contains('e-icon-grightarrow') || element.classList.contains('e-icon-gdownarrow'))) {\n element = element.parentElement;\n }\n // eslint-disable-next-line no-case-declarations\n var row = element ? element.parentElement.querySelector('[class^=\"e-record\"]') : null;\n if (!row) {\n break;\n }\n if (element.children.length && (element.children[0].classList.contains('e-icon-grightarrow') ||\n element.children[0].classList.contains('e-icon-gdownarrow'))) {\n e.preventDefault();\n this.expandCollapseRows(row);\n }\n break;\n case 'ctrlSpace':\n // eslint-disable-next-line no-case-declarations\n var elem = gObj.focusModule.currentInfo.element;\n if (elem && elem.classList.contains('e-headercell')) {\n e.preventDefault();\n var column = gObj.getColumnByUid(elem.firstElementChild.getAttribute('e-mappinguid'));\n if (column.field && gObj.groupSettings.columns.indexOf(column.field) < 0) {\n this.groupColumn(column.field);\n }\n else {\n this.ungroupColumn(column.field);\n }\n }\n break;\n }\n };\n /**\n * @returns {Element[]} - Return the focusable grouping items\n * @hidden */\n Group.prototype.getFocusableGroupedItems = function () {\n var focusableGroupedItems = [];\n if (this.groupSettings.columns.length) {\n var focusableGroupedHeaderItems = this.element.querySelectorAll('.e-groupheadercell');\n for (var i = 0; i < focusableGroupedHeaderItems.length; i++) {\n focusableGroupedItems.push(focusableGroupedHeaderItems[parseInt(i.toString(), 10)].querySelector('.e-grouptext'));\n focusableGroupedItems.push(focusableGroupedHeaderItems[parseInt(i.toString(), 10)].querySelector('.e-groupsort'));\n focusableGroupedItems.push(focusableGroupedHeaderItems[parseInt(i.toString(), 10)].querySelector('.e-ungroupbutton'));\n }\n }\n return focusableGroupedItems;\n };\n Group.prototype.wireEvent = function () {\n EventHandler.add(this.element, 'focusin', this.onFocusIn, this);\n EventHandler.add(this.element, 'focusout', this.onFocusOut, this);\n EventHandler.add(this.parent.element, 'auxclick', this.auxilaryclickHandler, this);\n };\n Group.prototype.unWireEvent = function () {\n EventHandler.remove(this.element, 'focusin', this.onFocusIn);\n EventHandler.remove(this.element, 'focusout', this.onFocusOut);\n EventHandler.remove(this.parent.element, 'auxclick', this.auxilaryclickHandler);\n };\n Group.prototype.onFocusIn = function (e) {\n if (this.parent.focusModule.currentInfo && this.parent.focusModule.currentInfo.element) {\n removeClass([this.parent.focusModule.currentInfo.element, this.parent.focusModule.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.parent.focusModule.currentInfo.element.tabIndex = -1;\n }\n this.addOrRemoveFocus(e);\n };\n Group.prototype.onFocusOut = function (e) {\n this.addOrRemoveFocus(e);\n };\n Group.prototype.addOrRemoveFocus = function (e) {\n if (e.target.classList.contains('e-groupdroparea') || e.target.classList.contains('e-grouptext')\n || e.target.classList.contains('e-groupsort')\n || e.target.classList.contains('e-ungroupbutton')) {\n var target = e.target.classList.contains('e-grouptext') ?\n e.target.parentElement.parentElement : e.target;\n if (e.type === 'focusin') {\n this.parent.focusModule.currentInfo.element = e.target;\n this.parent.focusModule.currentInfo.elementToFocus = e.target;\n addClass([target], ['e-focused', 'e-focus']);\n e.target.tabIndex = 0;\n }\n else {\n removeClass([target], ['e-focused', 'e-focus']);\n e.target.tabIndex = -1;\n }\n }\n };\n Group.prototype.clickHandler = function (e) {\n if (e.target.classList.contains('e-grouptext')) {\n this.groupTextFocus = true;\n }\n if (e.target.classList.contains('e-groupsort')) {\n this.groupSortFocus = true;\n }\n if (e.target.classList.contains('e-ungroupbutton')) {\n this.groupCancelFocus = true;\n }\n if (e.target.classList.contains('e-icon-grightarrow') || e.target.classList.contains('e-icon-gdownarrow')) {\n e.preventDefault();\n }\n var trgtEle = parentsUntil(e.target, 'e-recordplusexpand') ||\n parentsUntil(e.target, 'e-recordpluscollapse');\n if (trgtEle && (trgtEle.children[0].classList.contains('e-icon-gdownarrow') || trgtEle.children[0].classList.contains('e-icon-grightarrow'))) {\n this.expandCollapseRows(e.target);\n }\n this.applySortFromTarget(e.target);\n this.unGroupFromTarget(e.target);\n this.toogleGroupFromHeader(e.target);\n };\n Group.prototype.auxilaryclickHandler = function (e) {\n if (e.target.classList.contains('e-icon-grightarrow') || e.target.classList.contains('e-icon-gdownarrow')\n && (e.button === 1)) {\n e.preventDefault();\n }\n };\n Group.prototype.unGroupFromTarget = function (target) {\n if (target.classList.contains('e-ungroupbutton')) {\n this.ungroupColumn(target.parentElement.getAttribute('ej-mappingname'));\n }\n };\n Group.prototype.toogleGroupFromHeader = function (target) {\n if (this.groupSettings.showToggleButton) {\n if (target.classList.contains('e-grptogglebtn')) {\n if (target.classList.contains('e-toggleungroup')) {\n this.ungroupColumn(this.parent.getColumnByUid(target.parentElement.getAttribute('e-mappinguid')).field);\n }\n else {\n this.groupColumn(this.parent.getColumnByUid(target.parentElement.getAttribute('e-mappinguid')).field);\n }\n }\n else {\n if (target.classList.contains('e-toggleungroup')) {\n this.ungroupColumn(target.parentElement.getAttribute('ej-mappingname'));\n }\n }\n }\n };\n Group.prototype.applySortFromTarget = function (target) {\n var gObj = this.parent;\n var gHeader = closest(target, '.e-groupheadercell');\n if (gObj.allowSorting && gHeader && !target.classList.contains('e-ungroupbutton') &&\n !target.classList.contains('e-toggleungroup')) {\n var field = gHeader.firstElementChild.getAttribute('ej-mappingname');\n if (gObj.getColumnHeaderByField(field).getElementsByClassName('e-ascending').length) {\n gObj.sortColumn(field, 'Descending', true);\n }\n else {\n gObj.sortColumn(field, 'Ascending', true);\n }\n }\n };\n /**\n * Expands or collapses grouped rows by target element.\n *\n * @param {Element} target - Defines the target element of the grouped row.\n * @returns {void}\n */\n Group.prototype.expandCollapseRows = function (target) {\n var trgt = parentsUntil(target, 'e-recordplusexpand') ||\n parentsUntil(target, 'e-recordpluscollapse');\n if (trgt) {\n var rowNodes = [].slice.call(this.parent.getContentTable().querySelector(literals.tbody).children);\n if (this.parent.editSettings.showAddNewRow) {\n if (rowNodes[0].classList.contains('e-addedrow')) {\n rowNodes.shift();\n }\n else if (rowNodes[rowNodes.length - 1].classList.contains('e-addedrow')) {\n rowNodes.pop();\n }\n }\n var isHide = void 0;\n var dataManager = void 0;\n var query = void 0;\n var gObj = this.parent;\n var indent = trgt.parentElement.getElementsByClassName('e-indentcell').length;\n var uid = trgt.parentElement.getAttribute('data-uid');\n var captionRow = gObj.getRowObjectFromUID(uid);\n var expand = false;\n if (trgt.classList.contains('e-recordpluscollapse')) {\n addClass([trgt], 'e-recordplusexpand');\n removeClass([trgt], 'e-recordpluscollapse');\n trgt.firstElementChild.className = 'e-icons e-gdiagonaldown e-icon-gdownarrow';\n trgt.firstElementChild.setAttribute('title', 'expanded');\n expand = true;\n captionRow.isExpand = true;\n if (isGroupAdaptive(gObj)) {\n this.updateVirtualRows(gObj, target, expand, query, dataManager);\n }\n if (this.parent.groupSettings.enableLazyLoading) {\n if ((this.parent.filterSettings.columns.length || this.parent.sortSettings.columns.length ||\n this.parent.searchSettings.key.length) && this.parent.getContent().firstElementChild.scrollTop === 0) {\n this.parent.contentModule.isTop = true;\n }\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).captionExpand(trgt.parentElement);\n }\n }\n else {\n isHide = true;\n captionRow.isExpand = false;\n removeClass([trgt], 'e-recordplusexpand');\n addClass([trgt], 'e-recordpluscollapse');\n trgt.firstElementChild.className = 'e-icons e-gnextforward e-icon-grightarrow';\n trgt.firstElementChild.setAttribute('title', 'collapsed');\n if (isGroupAdaptive(gObj)) {\n this.updateVirtualRows(gObj, target, !isHide, query, dataManager);\n }\n if (this.parent.groupSettings.enableLazyLoading) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).captionCollapse(trgt.parentElement);\n }\n }\n this.aria.setExpand(trgt, expand);\n if (!isGroupAdaptive(gObj) && !this.parent.groupSettings.enableLazyLoading) {\n var rowObjs = gObj.getRowsObject();\n var startIdx = rowObjs.indexOf(captionRow);\n var rowsState = {};\n var cacheStartIdx = gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings &&\n gObj.infiniteScrollSettings.enableCache && rowObjs.length !== rowNodes.length ?\n Array.from(rowNodes).indexOf(trgt.parentElement) : undefined;\n for (var i = startIdx; i < rowObjs.length; i++) {\n if (i > startIdx && rowObjs[parseInt(i.toString(), 10)].indent === indent) {\n break;\n }\n if (rowObjs[parseInt(i.toString(), 10)].isDetailRow) {\n var visible = rowObjs[i - 1].isExpand && rowObjs[i - 1].visible;\n if (cacheStartIdx && cacheStartIdx > 0 && cacheStartIdx < rowNodes.length) {\n rowNodes[parseInt(cacheStartIdx.toString(), 10)].style.display = visible ? '' : 'none';\n }\n else if (isNullOrUndefined(cacheStartIdx)) {\n rowNodes[parseInt(i.toString(), 10)].style.display = visible ? '' : 'none';\n }\n }\n else if (rowsState[rowObjs[parseInt(i.toString(), 10)].parentUid] === false) {\n rowObjs[parseInt(i.toString(), 10)].visible = false;\n if (cacheStartIdx && cacheStartIdx > 0 && cacheStartIdx < rowNodes.length) {\n rowNodes[parseInt(cacheStartIdx.toString(), 10)].style.display = 'none';\n }\n else if (isNullOrUndefined(cacheStartIdx)) {\n rowNodes[parseInt(i.toString(), 10)].style.display = 'none';\n }\n }\n else {\n if (!(rowObjs[parseInt(i.toString(), 10)].isDataRow || rowObjs[parseInt(i.toString(), 10)].isCaptionRow\n || rowObjs[parseInt(i.toString(), 10)].isDetailRow || rowObjs[parseInt(i.toString(), 10)].isAggregateRow)) {\n var visible = rowObjs[parseInt(i.toString(), 10)].cells\n .some(function (cell) { return cell.isDataCell && cell.visible; });\n if (visible === rowObjs[parseInt(i.toString(), 10)].visible) {\n continue;\n }\n }\n rowObjs[parseInt(i.toString(), 10)].visible = true;\n if (cacheStartIdx && cacheStartIdx > 0 && cacheStartIdx < rowNodes.length) {\n rowNodes[parseInt(cacheStartIdx.toString(), 10)].style.display = '';\n rowNodes[parseInt(cacheStartIdx.toString(), 10)].classList.remove('e-hide');\n }\n else if (isNullOrUndefined(cacheStartIdx)) {\n rowNodes[parseInt(i.toString(), 10)].style.display = '';\n rowNodes[parseInt(i.toString(), 10)].classList.remove('e-hide');\n }\n }\n if (rowObjs[parseInt(i.toString(), 10)].isCaptionRow) {\n rowsState[rowObjs[parseInt(i.toString(), 10)].uid] = rowObjs[parseInt(i.toString(), 10)].isExpand\n && rowObjs[parseInt(i.toString(), 10)].visible;\n }\n if (!isNullOrUndefined(cacheStartIdx)) {\n cacheStartIdx++;\n }\n }\n this.lastCaptionRowBorder();\n this.parent.notify(events.refreshExpandandCollapse, { rows: this.parent.getRowsObject() });\n }\n if (!this.parent.enableInfiniteScrolling || !this.parent.groupSettings.enableLazyLoading) {\n this.parent.notify(events.captionActionComplete, { isCollapse: isHide, parentUid: uid });\n }\n }\n };\n /**\n * The function is used to set border in last row\n *\n * @returns { void }\n * @hidden\n */\n Group.prototype.lastCaptionRowBorder = function () {\n var table = this.parent.getContentTable();\n var clientHeight = this.parent.getContent().clientHeight;\n if ((!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling) ||\n this.parent.groupSettings.enableLazyLoading) {\n if (table.scrollHeight < clientHeight || this.isAppliedCaptionRowBorder) {\n if (this.isAppliedCaptionRowBorder || table.querySelector('.e-lastrowcell')) {\n var borderCells = table.querySelectorAll('.e-lastrowcell');\n for (var i = 0, len = borderCells.length; i < len; i++) {\n removeClass([borderCells[parseInt(i.toString(), 10)]], 'e-lastrowcell');\n }\n this.isAppliedCaptionRowBorder = false;\n }\n var rowNodes = this.parent.getContentTable().querySelector(literals.tbody).children;\n var lastRow = rowNodes[rowNodes.length - 1];\n if (lastRow.style.display !== 'none' && !lastRow.classList.contains('e-groupcaptionrow')) {\n if (table.scrollHeight < clientHeight) {\n addClass(table.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n this.isAppliedCaptionRowBorder = true;\n }\n }\n else {\n for (var i = rowNodes.length - 1, len = 0; i > len; i--) {\n if (rowNodes[parseInt(i.toString(), 10)].style.display !== 'none'\n && rowNodes[parseInt(i.toString(), 10)].classList.contains('e-groupcaptionrow')) {\n if (rowNodes[parseInt(i.toString(), 10)].querySelector('.e-recordpluscollapse')) {\n addClass(rowNodes[parseInt(i.toString(), 10)].childNodes, 'e-lastrowcell');\n this.isAppliedCaptionRowBorder = true;\n break;\n }\n }\n }\n }\n }\n }\n };\n Group.prototype.updateVirtualRows = function (gObj, target, isExpand, query, dataManager) {\n var rObj = gObj.getRowObjectFromUID(target.closest('tr').getAttribute('data-uid'));\n rObj.isExpand = isExpand;\n updatecloneRow(gObj);\n this.parent.notify(events.refreshVirtualMaxPage, {});\n query = gObj.getDataModule().generateQuery(false);\n query.queries = gObj.getDataModule().aggregateQuery(gObj.getQuery().clone()).queries;\n var args = { requestType: 'virtualscroll', rowObject: rObj };\n if (gObj.contentModule) {\n args.virtualInfo = gObj.contentModule.prevInfo;\n }\n dataManager = gObj.getDataModule().getData(args, query.requiresCount());\n dataManager.then(function (e) { return gObj.renderModule.dataManagerSuccess(e, args); });\n };\n Group.prototype.expandCollapse = function (isExpand) {\n if (!this.parent.groupSettings.columns.length) {\n return;\n }\n if (!isExpand) {\n this.parent.notify(events.initialCollapse, isExpand);\n }\n var rowNodes = this.parent.getContentTable().querySelector(literals.tbody).children;\n var rowObjs = this.parent.getRowsObject();\n var row;\n for (var i = 0, len = rowNodes.length; i < len; i++) {\n if (rowNodes[parseInt(i.toString(), 10)].querySelectorAll('.e-recordplusexpand, .e-recordpluscollapse').length) {\n row = rowNodes[parseInt(i.toString(), 10)].querySelector(isExpand ? '.e-recordpluscollapse' : '.e-recordplusexpand');\n if (row) {\n if (isExpand) {\n row.className = 'e-recordplusexpand';\n row.firstElementChild.className = 'e-icons e-gdiagonaldown e-icon-gdownarrow';\n row.setAttribute('aria-expanded', 'true');\n row.firstElementChild.setAttribute('title', 'expanded');\n }\n else {\n row.className = 'e-recordpluscollapse';\n row.firstElementChild.className = 'e-icons e-gnextforward e-icon-grightarrow';\n row.setAttribute('aria-expanded', 'false');\n row.firstElementChild.setAttribute('title', 'collapsed');\n }\n }\n if (!(rowNodes[parseInt(i.toString(), 10)].firstElementChild.classList.contains('e-recordplusexpand') ||\n rowNodes[parseInt(i.toString(), 10)].firstElementChild.classList.contains('e-recordpluscollapse'))) {\n rowNodes[parseInt(i.toString(), 10)].style.display = isExpand ? '' : 'none';\n }\n }\n else {\n rowNodes[parseInt(i.toString(), 10)].style.display = isExpand ? '' : 'none';\n }\n if (rowObjs[parseInt(i.toString(), 10)].isCaptionRow) {\n rowObjs[parseInt(i.toString(), 10)].isExpand = isExpand ? true : false;\n }\n }\n this.parent.updateVisibleExpandCollapseRows();\n this.lastCaptionRowBorder();\n this.parent.notify(events.refreshExpandandCollapse, { rows: this.parent.getRowsObject() });\n };\n /**\n * Expands all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Group.prototype.expandAll = function () {\n this.expandCollapse(true);\n };\n /**\n * Collapses all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Group.prototype.collapseAll = function () {\n this.expandCollapse(false);\n };\n /**\n * The function is used to render grouping\n *\n * @returns {void}\n * @hidden\n */\n Group.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n this.renderGroupDropArea();\n this.initDragAndDrop();\n this.refreshToggleBtn();\n this.wireEvent();\n };\n Group.prototype.renderGroupDropArea = function () {\n var groupElem = this.parent.element.querySelector('.e-groupdroparea');\n if (groupElem) {\n remove(groupElem);\n }\n this.element = this.parent.createElement('div', { className: 'e-groupdroparea', attrs: { 'tabindex': '-1' } });\n if (this.groupSettings.allowReordering) {\n this.element.classList.add('e-group-animate');\n }\n this.updateGroupDropArea();\n this.parent.element.insertBefore(this.element, this.parent.element.firstChild);\n if (!this.groupSettings.showDropArea || this.parent.rowRenderingMode === 'Vertical') {\n this.element.style.display = 'none';\n }\n };\n Group.prototype.updateGroupDropArea = function (clear) {\n if (this.groupSettings.showDropArea && !this.groupSettings.columns.length) {\n var dragLabel = this.l10n.getConstant('GroupDropArea');\n this.element.innerHTML = dragLabel;\n this.element.classList.remove('e-grouped');\n }\n else {\n if ((this.element.innerHTML === this.l10n.getConstant('GroupDropArea') && (this.groupSettings.columns.length === 1\n || !this.isAppliedGroup && !this.isAppliedUnGroup)) || clear) {\n this.element.innerHTML = '';\n }\n this.element.classList.add('e-grouped');\n }\n };\n Group.prototype.initDragAndDrop = function () {\n this.initializeGHeaderDrop();\n this.initializeGHeaderDrag();\n };\n Group.prototype.initializeGHeaderDrag = function () {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var drag = new Draggable(this.element, {\n dragTarget: this.groupSettings.allowReordering ? '.e-drag' : '.e-groupheadercell',\n distance: this.groupSettings.allowReordering ? -10 : 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop\n });\n };\n Group.prototype.initializeGHeaderDrop = function () {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var drop = new Droppable(this.element, {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n /**\n * Groups a column by column name.\n *\n * @param {string} columnName - Defines the column name to group.\n * @returns {void}\n */\n Group.prototype.groupColumn = function (columnName) {\n var gObj = this.parent;\n var column = gObj.getColumnByField(columnName);\n if (isNullOrUndefined(column) || column.allowGrouping === false ||\n (this.contentRefresh && this.groupSettings.columns.indexOf(columnName) > -1)) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: column.headerText });\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.groupColumn, arg1: columnName });\n return;\n }\n column.visible = gObj.groupSettings.showGroupedColumn;\n this.colName = columnName;\n this.isAppliedGroup = true;\n if (this.contentRefresh) {\n this.updateModel();\n }\n else {\n this.addColToGroupDrop(columnName);\n }\n this.updateGroupDropArea();\n this.isAppliedGroup = false;\n };\n /**\n * Ungroups a column by column name.\n *\n * @param {string} columnName - Defines the column name to ungroup.\n * @returns {void}\n */\n Group.prototype.ungroupColumn = function (columnName) {\n var gObj = this.parent;\n var column = this.parent.enableColumnVirtualization ?\n this.parent.columns.filter(function (c) { return c.field === columnName; })[0] : gObj.getColumnByField(columnName);\n if (isNullOrUndefined(column) || column.allowGrouping === false || this.groupSettings.columns.indexOf(columnName) < 0) {\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.ungroupColumn, arg1: columnName });\n return;\n }\n column.visible = true;\n this.colName = column.field;\n var columns = JSON.parse(JSON.stringify(this.groupSettings.columns));\n columns.splice(columns.indexOf(this.colName), 1);\n if (this.sortedColumns.indexOf(columnName) < 0) {\n for (var i = 0, len = gObj.sortSettings.columns.length; i < len; i++) {\n if (columnName === gObj.sortSettings.columns[parseInt(i.toString(), 10)].field) {\n gObj.sortSettings.columns.splice(i, 1);\n break;\n }\n }\n }\n if (this.groupSettings.allowReordering) {\n this.reorderingColumns = columns;\n }\n this.groupSettings.columns = columns;\n if (gObj.allowGrouping) {\n this.isAppliedUnGroup = true;\n this.parent.dataBind();\n }\n };\n /**\n * The function used to update groupSettings\n *\n * @returns {void}\n * @hidden\n */\n Group.prototype.updateModel = function () {\n var columns = JSON.parse(JSON.stringify(this.groupSettings.columns));\n columns = this.reorderingColumns.length ? JSON.parse(JSON.stringify(this.reorderingColumns)) : columns;\n if (this.sortRequired) {\n if (columns.indexOf(this.colName) === -1) {\n columns.push(this.colName);\n }\n this.groupAddSortingQuery(this.colName);\n }\n this.sortRequired = true;\n this.parent.groupSettings.columns = columns;\n this.parent.dataBind();\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Group.prototype.onActionComplete = function (e) {\n if (e.requestType === 'grouping') {\n this.addColToGroupDrop(this.colName);\n }\n else {\n this.removeColFromGroupDrop(this.colName);\n }\n var args = this.groupSettings.columns.indexOf(this.colName) > -1 ? {\n columnName: this.colName, requestType: 'grouping', type: events.actionComplete\n } : { requestType: 'ungrouping', type: events.actionComplete };\n this.parent.trigger(events.actionComplete, extend(e, args));\n this.colName = null;\n };\n Group.prototype.groupAddSortingQuery = function (colName) {\n var i = 0;\n while (i < this.parent.sortSettings.columns.length) {\n if (this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field === colName) {\n break;\n }\n i++;\n }\n if (this.parent.sortSettings.columns.length === i) {\n this.parent.sortSettings.columns.push({ field: colName, direction: 'Ascending', isFromGroup: true });\n }\n else if (!this.parent.allowSorting) {\n this.parent.sortSettings.columns[parseInt(i.toString(), 10)].direction = 'Ascending';\n }\n };\n Group.prototype.createElement = function (field) {\n var gObj = this.parent;\n var direction = 'Ascending';\n var animator = this.parent.createElement('div', { className: 'e-grid-icon e-group-animator' });\n var groupedColumn = this.parent.createElement('div', { className: 'e-grid-icon e-groupheadercell' });\n var childDiv = this.parent.createElement('div', { attrs: { 'ej-mappingname': field } });\n if (isComplexField(field)) {\n childDiv.setAttribute('ej-complexname', getComplexFieldID(field));\n }\n var column = this.parent.getColumnByField(field);\n //Todo headerTemplateID for grouped column, disableHtmlEncode\n var headerCell = gObj.getColumnHeaderByUid(column.uid);\n // if (!isNullOrUndefined(column.headerTemplate)) {\n // if (column.headerTemplate.indexOf('#') !== -1) {\n // childDiv.innerHTML = document.querySelector(column.headerTemplate).innerHTML.trim();\n // } else {\n // childDiv.innerHTML = column.headerTemplate;\n // }\n // childDiv.firstElementChild.classList.add('e-grouptext');\n // } else {\n if (this.groupSettings.allowReordering) {\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-drag e-icons e-icon-drag', innerHTML: ' ',\n attrs: { title: 'Drag', tabindex: '-1', 'aria-label': this.l10n.getConstant('GroupedDrag') }\n }));\n }\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-grouptext', innerHTML: column.headerText,\n attrs: { tabindex: '-1' }\n }));\n // }\n if (this.groupSettings.showToggleButton) {\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-togglegroupbutton e-icons e-icon-ungroup e-toggleungroup', innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('UnGroupAria') }\n }));\n }\n if (headerCell.querySelectorAll('.e-ascending,.e-descending').length) {\n direction = headerCell.querySelector('.e-ascending') ? 'Ascending' : 'Descending';\n }\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-groupsort e-icons ' +\n ('e-' + direction.toLowerCase() + ' e-icon-' + direction.toLowerCase()), innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('GroupedSortIcon') + column.headerText, role: 'button' }\n }));\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-ungroupbutton e-icons e-icon-hide', innerHTML: ' ',\n attrs: { title: this.l10n.getConstant('UnGroup'),\n tabindex: '-1', 'aria-label': this.l10n.getConstant('UnGroupIcon') + column.headerText, role: 'button' },\n styles: this.groupSettings.showUngroupButton ? '' : 'display:none'\n }));\n groupedColumn.appendChild(childDiv);\n if (this.groupSettings.allowReordering) {\n animator.appendChild(groupedColumn);\n animator.appendChild(this.createSeparator());\n groupedColumn = animator;\n }\n return groupedColumn;\n };\n Group.prototype.addColToGroupDrop = function (field) {\n var groupElem = isComplexField(field) ? this.parent.element.querySelector('.e-groupdroparea div[ej-complexname=' +\n getParsedFieldID(getComplexFieldID(field)) + ']') : this.parent.element.querySelector('.e-groupdroparea div[ej-mappingname=' + getParsedFieldID(field) + ']');\n if (this.groupSettings.allowReordering && groupElem) {\n return;\n }\n var column = this.parent.getColumnByField(field);\n if (isNullOrUndefined(column)) {\n return;\n }\n var groupedColumn = this.createElement(field);\n if (this.groupSettings.allowReordering) {\n var index = this.element.getElementsByClassName('e-group-animator').length;\n groupedColumn.setAttribute('index', index.toString());\n }\n this.element.appendChild(groupedColumn);\n var focusModule = this.parent.focusModule;\n focusModule.setActive(true);\n var firstContentCellIndex = [0, 0];\n if (focusModule.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(focusModule.active.matrix.matrix, firstContentCellIndex, true);\n }\n focusModule.active.matrix.current = firstContentCellIndex;\n var row = focusModule.active.getTable().rows[focusModule.active.matrix.current[0]];\n if (this.parent.editSettings.showAddNewRow) {\n this.parent.notify(events.showAddNewRowFocus, {});\n }\n else {\n focusModule.focus();\n }\n //Todo: rtl\n };\n Group.prototype.createSeparator = function () {\n return this.parent.createElement('span', {\n className: 'e-nextgroup e-icons e-icon-next', innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('GroupSeperator') },\n styles: this.groupSettings.showUngroupButton ? '' : 'display:none'\n });\n };\n Group.prototype.refreshToggleBtn = function (isRemove) {\n if (this.groupSettings.showToggleButton) {\n var headers = [].slice.call(this.parent.getHeaderTable().getElementsByClassName('e-headercelldiv'));\n for (var i = 0, len = headers.length; i < len; i++) {\n if (!((headers[parseInt(i.toString(), 10)].classList.contains('e-emptycell')) || (headers[parseInt(i.toString(), 10)].classList.contains('e-headerchkcelldiv')))) {\n var column = this.parent.getColumnByUid(headers[parseInt(i.toString(), 10)].getAttribute('e-mappinguid'));\n if (!this.parent.showColumnMenu || (this.parent.showColumnMenu && !column.showColumnMenu)) {\n if (headers[parseInt(i.toString(), 10)].getElementsByClassName('e-grptogglebtn').length) {\n remove(headers[parseInt(i.toString(), 10)].querySelectorAll('.e-grptogglebtn')[0]);\n }\n if (!isRemove) {\n headers[parseInt(i.toString(), 10)].appendChild(this.parent.createElement('span', {\n className: 'e-grptogglebtn e-icons ' + (this.groupSettings.columns.indexOf(column.field) > -1 ?\n 'e-toggleungroup e-icon-ungroup' : 'e-togglegroup e-icon-group'), attrs: { tabindex: '-1',\n 'aria-label': isNullOrUndefined(this.l10n) ? this.parent.localeObj.getConstant('GroupButton')\n : this.l10n.getConstant('GroupButton') }\n }));\n }\n }\n }\n }\n }\n };\n Group.prototype.removeColFromGroupDrop = function (field) {\n if (!isNullOrUndefined(this.getGHeaderCell(field))) {\n var elem = this.getGHeaderCell(field);\n if (this.groupSettings.allowReordering) {\n var parent_1 = parentsUntil(elem, 'e-group-animator');\n remove(parent_1);\n }\n else {\n remove(elem);\n }\n this.updateGroupDropArea();\n if (this.parent.editSettings.showAddNewRow) {\n this.parent.notify(events.showAddNewRowFocus, {});\n }\n }\n this.isAppliedUnGroup = false;\n };\n Group.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'columns':\n // eslint-disable-next-line no-case-declarations\n var args = void 0;\n if (this.contentRefresh) {\n if (!this.isAppliedUnGroup) {\n if (!this.isAppliedGroup) {\n this.updateGroupDropArea(true);\n for (var j = 0; j < this.parent.sortSettings.columns.length; j++) {\n if (this.parent.sortSettings.columns[parseInt(j.toString(), 10)].isFromGroup) {\n this.parent.sortSettings.columns.splice(j, 1);\n j--;\n }\n }\n for (var i = 0; i < this.groupSettings.columns.length; i++) {\n this.colName = this.groupSettings.columns[parseInt(i.toString(), 10)];\n var col = this.parent.getColumnByField(this.colName);\n col.visible = this.parent.groupSettings.showGroupedColumn;\n this.groupAddSortingQuery(this.colName);\n if (i < this.groupSettings.columns.length - 1) {\n this.addColToGroupDrop(this.groupSettings.columns[parseInt(i.toString(), 10)]);\n }\n }\n }\n args = {\n columnName: this.colName, requestType: e.properties[\"\" + prop].length ? 'grouping' : 'ungrouping',\n type: events.actionBegin\n };\n }\n else {\n args = { columnName: this.colName, requestType: 'ungrouping', type: events.actionBegin };\n }\n if (!this.groupSettings.showGroupedColumn) {\n var columns = e.oldProperties[\"\" + prop];\n for (var i = 0; i < columns.length; i++) {\n if (e.properties[\"\" + prop].indexOf(columns[parseInt(i.toString(), 10)]) === -1) {\n this.parent.getColumnByField(columns[parseInt(i.toString(), 10)]).visible = true;\n }\n }\n }\n this.parent.notify(events.modelChanged, args);\n }\n break;\n case 'showDropArea':\n this.updateGroupDropArea();\n if (this.groupSettings.showDropArea) {\n this.element.style.display = '';\n this.parent.headerModule.refreshUI();\n }\n else {\n this.element.style.display = 'none';\n }\n if (this.parent.height === '100%') {\n this.parent.scrollModule.refresh();\n }\n break;\n case 'showGroupedColumn':\n this.updateGroupedColumn(this.groupSettings.showGroupedColumn);\n this.parent.notify(events.modelChanged, { requestType: 'refresh' });\n break;\n case 'showUngroupButton':\n this.updateButtonVisibility(this.groupSettings.showUngroupButton, 'e-ungroupbutton');\n break;\n case 'showToggleButton':\n this.updateButtonVisibility(this.groupSettings.showToggleButton, 'e-togglegroupbutton ');\n this.parent.refreshHeader();\n break;\n case 'enableLazyLoading':\n this.parent.freezeRefresh();\n break;\n }\n }\n };\n Group.prototype.updateGroupedColumn = function (isVisible) {\n for (var i = 0; i < this.groupSettings.columns.length; i++) {\n this.parent.getColumnByField(this.groupSettings.columns[parseInt(i.toString(), 10)]).visible = isVisible;\n }\n };\n Group.prototype.updateButtonVisibility = function (isVisible, className) {\n var gHeader = [].slice.call(this.element.getElementsByClassName(className));\n for (var i = 0; i < gHeader.length; i++) {\n gHeader[parseInt(i.toString(), 10)].style.display = isVisible ? '' : 'none';\n }\n };\n Group.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n }\n };\n /**\n * To destroy the reorder\n *\n * @returns {void}\n * @hidden\n */\n Group.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((this.parent.isDestroyed || !this.parent.allowGrouping) && !this.parent.refreshing) {\n this.clearGrouping();\n }\n this.unWireEvent();\n this.removeEventListener();\n this.refreshToggleBtn(true);\n if (this.element.parentNode) {\n remove(this.element);\n }\n //call ejdrag and drop destroy\n };\n /**\n * Clears all the grouped columns of the Grid.\n *\n * @returns {void}\n */\n Group.prototype.clearGrouping = function () {\n var cols = JSON.parse(JSON.stringify(this.groupSettings.columns));\n this.contentRefresh = false;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (i === (len - 1)) {\n this.contentRefresh = true;\n }\n this.ungroupColumn(cols[parseInt(i.toString(), 10)]);\n }\n this.contentRefresh = true;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Group.prototype.getModuleName = function () {\n return 'group';\n };\n Group.prototype.refreshSortIcons = function () {\n var gObj = this.parent;\n var header;\n var cols = gObj.sortSettings.columns;\n var gCols = gObj.groupSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n this.refreshToggleBtn();\n for (var i = 0, len = cols.length; i < len; i++) {\n if (fieldNames.indexOf(cols[parseInt(i.toString(), 10)].field) === -1) {\n continue;\n }\n header = gObj.getColumnHeaderByField(cols[parseInt(i.toString(), 10)].field);\n if (!gObj.allowSorting && (this.sortedColumns.indexOf(cols[parseInt(i.toString(), 10)].field) > -1 ||\n this.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].field) > -1)) {\n classList(header.querySelector('.e-sortfilterdiv'), ['e-ascending', 'e-icon-ascending'], []);\n if (cols.length > 1) {\n header.querySelector('.e-headercelldiv').appendChild(this.parent.createElement('span', { className: 'e-sortnumber', innerHTML: (i + 1).toString() }));\n }\n }\n else if (this.getGHeaderCell(cols[parseInt(i.toString(), 10)].field) && this.getGHeaderCell(cols[parseInt(i.toString(), 10)].field).getElementsByClassName('e-groupsort').length) {\n if (cols[parseInt(i.toString(), 10)].direction === 'Ascending') {\n classList(this.getGHeaderCell(cols[parseInt(i.toString(), 10)].field).querySelector('.e-groupsort'), ['e-ascending', 'e-icon-ascending'], ['e-descending', 'e-icon-descending']);\n }\n else {\n classList(this.getGHeaderCell(cols[parseInt(i.toString(), 10)].field).querySelector('.e-groupsort'), ['e-descending', 'e-icon-descending'], ['e-ascending', 'e-icon-ascending']);\n }\n }\n }\n for (var i = 0, len = gCols.length; i < len; i++) {\n if (fieldNames.indexOf(gCols[parseInt(i.toString(), 10)]) === -1) {\n continue;\n }\n gObj.getColumnHeaderByField(gCols[parseInt(i.toString(), 10)]).setAttribute('aria-grouped', 'true');\n }\n };\n Group.prototype.getGHeaderCell = function (field) {\n if (this.element && this.element.querySelector('[ej-mappingname=\"' + field + '\"]')) {\n return this.element.querySelector('[ej-mappingname=\"' + field + '\"]').parentElement;\n }\n return null;\n };\n Group.prototype.onGroupAggregates = function (editedData) {\n if (this.parent.groupSettings.enableLazyLoading) {\n if (this.parent.editSettings.mode !== 'Batch') {\n this.updateLazyLoadGroupAggregates(editedData);\n }\n return;\n }\n var aggregates = this.iterateGroupAggregates(editedData);\n var rowData = this.groupGenerator.generateRows(aggregates, {});\n var summaryRows = this.parent.getRowsObject().filter(function (row) { return !row.isDataRow; });\n var updateSummaryRows = rowData.filter(function (data) { return !data.isDataRow; });\n if (this.parent.isReact || this.parent.isVue) {\n this.parent.destroyTemplate(['groupFooterTemplate', 'groupCaptionTemplate', 'footerTemplate']);\n }\n for (var i = 0; i < updateSummaryRows.length; i++) {\n var row = updateSummaryRows[parseInt(i.toString(), 10)];\n var cells = row.cells.filter(function (cell) { return cell.isDataCell; });\n var args = { cells: cells, data: row.data, dataUid: summaryRows[parseInt(i.toString(), 10)] ? summaryRows[parseInt(i.toString(), 10)].uid : '' };\n this.parent.notify(events.refreshAggregateCell, args);\n }\n };\n Group.prototype.updateLazyLoadGroupAggregates = function (data, remoteResult) {\n var _this = this;\n var groupCaptionTemplates = this.getGroupAggregateTemplates(true);\n var groupFooterTemplates = this.getGroupAggregateTemplates(false);\n if (!groupCaptionTemplates.length && !groupFooterTemplates.length) {\n return;\n }\n var gObj = this.parent;\n var isRemote = gObj.getDataModule().isRemote();\n var updatedData = data[0];\n var editedRow = data.row;\n var groupedCols = gObj.groupSettings.columns;\n var groupLazyLoadRenderer = gObj.contentModule;\n var groupCache = groupLazyLoadRenderer.getGroupCache();\n var currentPageGroupCache = groupCache[gObj.pageSettings.currentPage];\n var result = remoteResult ? remoteResult : [];\n var _loop_1 = function (i) {\n var groupField = groupedCols[parseInt(i.toString(), 10)];\n var groupKey = updatedData[\"\" + groupField];\n var groupCaptionRowObject = this_1.getGroupCaptionRowObject(editedRow, groupedCols.length - i);\n if (isRemote && result.length) {\n if (i !== 0) {\n var prevGroupField = groupedCols[i - 1];\n var prevGroupKey_1 = updatedData[\"\" + prevGroupField];\n result = result.find(function (data) {\n return data.key === prevGroupKey_1;\n }).items;\n }\n this_1.updateLazyLoadGroupAggregatesRow(result, groupKey, groupCaptionRowObject, currentPageGroupCache, groupCaptionTemplates, groupFooterTemplates);\n }\n else {\n var query = gObj.renderModule.data.generateQuery();\n if (i !== 0) {\n var currentLevelCaptionRowObjects = currentPageGroupCache.filter(function (data) {\n return data.isCaptionRow && data.parentUid === groupCaptionRowObject.parentUid;\n });\n var index = currentLevelCaptionRowObjects.indexOf(groupCaptionRowObject);\n var fields = gObj.groupSettings.columns.slice(0, i).reverse();\n var keys = fields.map(function (data) {\n return updatedData[\"\" + data];\n });\n var pred = generateExpandPredicates(fields, keys, groupLazyLoadRenderer);\n var predicateList = getPredicates(pred);\n var lazyLoad = { level: i, skip: index, take: 1, where: predicateList };\n query.lazyLoad.push({ key: 'onDemandGroupInfo', value: lazyLoad });\n }\n gObj.renderModule.data.getData({}, query).then(function (e) {\n if (isRemote) {\n _this.updateLazyLoadGroupAggregates(data, e.result);\n }\n else {\n _this.updateLazyLoadGroupAggregatesRow(e.result, groupKey, groupCaptionRowObject, currentPageGroupCache, groupCaptionTemplates, groupFooterTemplates);\n }\n if (i === groupedCols.length - 1 || isRemote) {\n _this.destroyRefreshGroupCaptionFooterTemplate();\n }\n }).catch(function (e) { return gObj.renderModule.dataManagerFailure(e, { requestType: 'grouping' }); });\n if (isRemote) {\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (var i = 0; i < groupedCols.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n };\n Group.prototype.destroyRefreshGroupCaptionFooterTemplate = function () {\n var gObj = this.parent;\n if (gObj.isAngular || gObj.isReact || gObj.isVue) {\n gObj.destroyTemplate(['groupCaptionTemplate', 'groupFooterTemplate']);\n }\n gObj.refreshGroupCaptionFooterTemplate();\n gObj.removeMaskRow();\n gObj.hideSpinner();\n };\n Group.prototype.updateLazyLoadGroupAggregatesRow = function (result, groupKey, groupCaptionRowObject, currentPageGroupCache, groupCaptionTemplates, groupFooterTemplates) {\n var updatedGroupCaptionData = result.find(function (data) {\n return data.key === groupKey;\n });\n if (groupCaptionTemplates.length) {\n this.updateLazyLoadGroupAggregatesCell(updatedGroupCaptionData, groupCaptionRowObject, groupCaptionTemplates);\n }\n if (groupFooterTemplates.length) {\n var groupFooterRowObject = currentPageGroupCache.find(function (data) {\n return data.isAggregateRow && data.parentUid === groupCaptionRowObject.uid;\n });\n this.updateLazyLoadGroupAggregatesCell(updatedGroupCaptionData, groupFooterRowObject, groupFooterTemplates);\n }\n };\n Group.prototype.updateLazyLoadGroupAggregatesCell = function (updatedGroupCaptionData, captionFooterRowObject, captionFooterTemplates) {\n var prevCaptionFooterData = captionFooterRowObject.data;\n var updatedGroupCaptionDataAggregates = updatedGroupCaptionData.aggregates;\n if (captionFooterRowObject.isCaptionRow) {\n prevCaptionFooterData.aggregates = updatedGroupCaptionDataAggregates;\n }\n for (var i = 0; i < captionFooterTemplates.length; i++) {\n var template = captionFooterTemplates[parseInt(i.toString(), 10)];\n var key = template.field + ' - ' + template.type;\n var fieldData = prevCaptionFooterData[template.field];\n fieldData[\"\" + key] = updatedGroupCaptionDataAggregates[\"\" + key];\n fieldData[capitalizeFirstLetter(template.type)] = updatedGroupCaptionDataAggregates[\"\" + key];\n if (fieldData[template.type]) {\n fieldData[template.type] = updatedGroupCaptionDataAggregates[\"\" + key];\n }\n }\n };\n Group.prototype.getGroupCaptionRowObject = function (element, groupCaptionIndex) {\n var gObj = this.parent;\n var uid = element.getAttribute('data-uid');\n var parentCaptionRowObject = gObj.getRowObjectFromUID(uid);\n for (var i = 0; i < groupCaptionIndex; i++) {\n parentCaptionRowObject = gObj.getRowObjectFromUID(parentCaptionRowObject.parentUid);\n }\n return parentCaptionRowObject;\n };\n /**\n * @param { boolean } groupCaptionTemplate - Defines template either group caption or footer\n * @returns { Object[] } - Returns template array\n * @hidden\n */\n Group.prototype.getGroupAggregateTemplates = function (groupCaptionTemplate) {\n var aggregates = [];\n var aggregateRows = this.parent.aggregates;\n for (var j = 0; j < aggregateRows.length; j++) {\n var row = aggregateRows[parseInt(j.toString(), 10)];\n for (var k = 0; k < row.columns.length; k++) {\n if ((groupCaptionTemplate && row.columns[parseInt(k.toString(), 10)].groupCaptionTemplate)\n || (!groupCaptionTemplate && row.columns[parseInt(k.toString(), 10)].groupFooterTemplate)) {\n var aggr = {};\n var type = row.columns[parseInt(k.toString(), 10)].type.toString();\n aggr = { type: type.toLowerCase(), field: row.columns[parseInt(k.toString(), 10)].field };\n aggregates.push(aggr);\n }\n }\n }\n return aggregates;\n };\n /**\n * @param { Row } fromRowObj - Defines group key changed Data row object.\n * @param { Row } toRowObj - Defines group key setting reference Data row object.\n * @returns { void }\n * @hidden\n */\n Group.prototype.groupedRowReorder = function (fromRowObj, toRowObj) {\n var dragRow = this.parent.getRowElementByUID(fromRowObj.uid);\n var dropRow = this.parent.getRowElementByUID(toRowObj.uid);\n var dropArgs = {\n rows: [dragRow], target: dropRow, fromIndex: fromRowObj.index, dropIndex: toRowObj.index\n };\n if (!isNullOrUndefined(fromRowObj) && !isNullOrUndefined(toRowObj) &&\n fromRowObj.parentUid !== toRowObj.parentUid) {\n if (dropRow) {\n if (dropRow['style'].display === 'none') {\n dragRow['style'].display = 'none';\n }\n if (dropArgs.fromIndex > dropArgs.dropIndex) {\n this.parent.getContentTable().querySelector(literals.tbody).insertBefore(dragRow, dropRow);\n }\n else {\n this.parent.getContentTable().querySelector(literals.tbody).insertBefore(dragRow, dropRow.nextSibling);\n }\n }\n else {\n remove(dragRow);\n }\n this.groupReorderHandler(fromRowObj, toRowObj);\n var tr = [].slice.call(this.parent.getContentTable().getElementsByClassName(literals.row));\n groupReorderRowObject(this.parent, dropArgs, tr, toRowObj);\n if (this.parent.enableVirtualization) {\n resetCachedRowIndex(this.parent);\n }\n else {\n resetRowIndex(this.parent, this.parent.getRowsObject().filter(function (data) { return data.isDataRow; }), tr);\n }\n this.parent.notify(events.refreshExpandandCollapse, { rows: this.parent.getRowsObject() });\n }\n };\n Group.prototype.groupReorderHandler = function (dragRowObject, dropRowObject) {\n var gObj = this.parent;\n var dragRowObjectData = dragRowObject.data;\n var dropRowObjectData = dropRowObject.data;\n var groupAggregateTemplate = gObj['groupModule'].getGroupAggregateTemplates(false);\n var dropParentRowObject = gObj.getRowObjectFromUID(dropRowObject.parentUid);\n var dragParentRowObject = gObj.getRowObjectFromUID(dragRowObject.parentUid);\n var dropRootParentRowObjects = [dropParentRowObject];\n var dragRootParentRowObjects = [dragParentRowObject];\n var groupColumns = gObj.groupSettings.columns;\n for (var j = 0; j < groupColumns.length; j++) {\n dragRowObjectData[groupColumns[parseInt(j.toString(), 10)]] = dropRowObjectData[groupColumns[parseInt(j.toString(), 10)]];\n if (j > 0) {\n dropRootParentRowObjects.push(gObj.getRowObjectFromUID(dropRootParentRowObjects[j - 1].parentUid));\n dragRootParentRowObjects.push(gObj.getRowObjectFromUID(dragRootParentRowObjects[j - 1].parentUid));\n }\n }\n dragRowObject.parentUid = dropRowObject.parentUid;\n dragRowObject.visible = dropRowObject.visible;\n dragRowObject['parentGid'] = dropRowObject['parentGid'];\n if (dragRowObject.changes !== dragRowObjectData) {\n dragRowObject.changes = dragRowObjectData;\n }\n var updatedCurrentViewData = this.iterateGroupAggregates([{ dragRowObjects: dragRootParentRowObjects,\n dropRowObjects: dropRootParentRowObjects }]);\n var updatedDragCurrentViewData = updatedCurrentViewData.filter(function (object) {\n return (object['key'] === dragRootParentRowObjects[dragRootParentRowObjects.length - 1].data['key'] ||\n (object['key'] instanceof Date && object['key'].toString() ===\n dragRootParentRowObjects[dragRootParentRowObjects.length - 1].data['key'].toString()));\n });\n var updatedDropCurrentViewData = updatedCurrentViewData.filter(function (object) {\n return (object['key'] === dropRootParentRowObjects[dropRootParentRowObjects.length - 1].data['key'] ||\n (object['key'] instanceof Date && object['key'].toString() ===\n dropRootParentRowObjects[dropRootParentRowObjects.length - 1].data['key'].toString()));\n });\n updatedCurrentViewData = [];\n if (!isNullOrUndefined(updatedDragCurrentViewData[0])) {\n updatedCurrentViewData.push(updatedDragCurrentViewData[0]);\n }\n if (!isNullOrUndefined(updatedDropCurrentViewData[0])) {\n updatedCurrentViewData.push(updatedDropCurrentViewData[0]);\n }\n var currentViewData = gObj.currentViewData;\n for (var i = 0; i < currentViewData.length; i++) {\n if (isNullOrUndefined(updatedDragCurrentViewData[0]) &&\n currentViewData[parseInt(i.toString(), 10)]['key'] ===\n dragRootParentRowObjects[dragRootParentRowObjects.length - 1].data['key']) {\n currentViewData.splice(i, 1);\n i--;\n }\n else if (isNullOrUndefined(updatedDropCurrentViewData[0]) &&\n currentViewData[parseInt(i.toString(), 10)]['key'] ===\n dropRootParentRowObjects[dropRootParentRowObjects.length - 1].data['key']) {\n currentViewData.splice(i, 1);\n i--;\n }\n else if (!isNullOrUndefined(updatedDragCurrentViewData[0]) &&\n currentViewData[parseInt(i.toString(), 10)]['key'] === updatedDragCurrentViewData[0]['key']) {\n currentViewData[parseInt(i.toString(), 10)] = updatedDragCurrentViewData[0];\n }\n else if (!isNullOrUndefined(updatedDropCurrentViewData[0]) &&\n currentViewData[parseInt(i.toString(), 10)]['key'] === updatedDropCurrentViewData[0]['key']) {\n currentViewData[parseInt(i.toString(), 10)] = updatedDropCurrentViewData[0];\n }\n }\n var updatedRowObject = this.groupGenerator.generateRows(updatedCurrentViewData, {});\n var dragRootParentAggregateRowObject = [];\n var dropRootParentAggregateRowObject = [];\n for (var i = 0; i < dragRootParentRowObjects.length; i++) {\n dragRootParentAggregateRowObject\n .push.apply(dragRootParentAggregateRowObject, this.getGroupParentFooterAggregateRowObject(dragRootParentRowObjects[parseInt(i.toString(), 10)].uid));\n }\n for (var i = 0; i < dropRootParentRowObjects.length; i++) {\n dropRootParentAggregateRowObject\n .push.apply(dropRootParentAggregateRowObject, this.getGroupParentFooterAggregateRowObject(dropRootParentRowObjects[parseInt(i.toString(), 10)].uid));\n }\n dragRootParentRowObjects.push.apply(dragRootParentRowObjects, dragRootParentAggregateRowObject);\n dropRootParentRowObjects.push.apply(dropRootParentRowObjects, dropRootParentAggregateRowObject);\n this.updatedRowObjChange(dragRootParentRowObjects, updatedRowObject, groupAggregateTemplate, true);\n this.updatedRowObjChange(dropRootParentRowObjects, updatedRowObject, groupAggregateTemplate);\n this.groupReorderRefreshHandler(dragRootParentRowObjects);\n this.groupReorderRefreshHandler(dropRootParentRowObjects);\n };\n Group.prototype.updatedRowObjChange = function (rootParentRowObjects, updatedRowObjects, groupAggregateTemplate, isDraggedRow) {\n var gObj = this.parent;\n var rowObjects = gObj.getRowsObject();\n var cache = {};\n var virtualCacheRowObjects = [];\n if (gObj.enableVirtualization) {\n cache = gObj.contentModule['vgenerator'].cache;\n virtualCacheRowObjects = gObj.vcRows;\n }\n for (var i = 0; i < rootParentRowObjects.length; i++) {\n var keyPresent = false;\n var parentRowObject = rootParentRowObjects[parseInt(i.toString(), 10)];\n for (var j = 0; j < updatedRowObjects.length; j++) {\n var updatedRowObject = updatedRowObjects[parseInt(j.toString(), 10)];\n if (!isNullOrUndefined(updatedRowObject) && !isNullOrUndefined(parentRowObject.data['key']) &&\n !isNullOrUndefined(updatedRowObject.data['key']) && ((parentRowObject.data['key'] ===\n updatedRowObject.data['key'] || (parentRowObject.data['key'] instanceof Date &&\n parentRowObject.data['key'].toString() === updatedRowObject.data['key'].toString())))) {\n var isParentKeyPresent = true;\n var nextParentObject = rootParentRowObjects[parseInt((i + 1).toString(), 10)];\n if (isDraggedRow && nextParentObject && !nextParentObject.isAggregateRow) {\n var key = nextParentObject.data['key'].toString();\n var field = nextParentObject.data['field'];\n var groupedData = updatedRowObject.data['items'].records ?\n updatedRowObject.data['items'].records : updatedRowObject.data['items'];\n if (groupedData && groupedData.length && groupedData[0][\"\" + field] &&\n groupedData[0][\"\" + field].toString() !== key) {\n isParentKeyPresent = false;\n }\n }\n if (!isParentKeyPresent && isDraggedRow) {\n continue;\n }\n var index = rowObjects.indexOf(parentRowObject);\n if (index !== -1) {\n rowObjects[parseInt(index.toString(), 10)].data = updatedRowObject.data;\n rowObjects[parseInt(index.toString(), 10)]['gSummary'] = updatedRowObject['gSummary'];\n }\n if (gObj.enableVirtualization) {\n var vIndex = virtualCacheRowObjects.indexOf(parentRowObject);\n if (vIndex !== -1) {\n virtualCacheRowObjects[parseInt(vIndex.toString(), 10)].data = updatedRowObject.data;\n virtualCacheRowObjects[parseInt(vIndex.toString(), 10)]['gSummary'] = updatedRowObject['gSummary'];\n }\n }\n parentRowObject.data = updatedRowObject.data;\n parentRowObject['gSummary'] = ['gSummary'];\n updatedRowObjects.splice(j, 1);\n j--;\n keyPresent = true;\n break;\n }\n else if (parentRowObject.isAggregateRow &&\n updatedRowObject.isAggregateRow) {\n for (var l = 0; l < groupAggregateTemplate.length; l++) {\n if (this.evaluateGroupAggregateValueChange(parentRowObject, updatedRowObject, groupAggregateTemplate[parseInt(l.toString(), 10)])) {\n var index = rowObjects.indexOf(parentRowObject);\n if (index !== -1) {\n rowObjects[parseInt(index.toString(), 10)].data = updatedRowObject.data;\n rowObjects[parseInt(index.toString(), 10)]['gSummary'] = updatedRowObject['gSummary'];\n }\n if (gObj.enableVirtualization) {\n var vIndex = virtualCacheRowObjects.indexOf(parentRowObject);\n if (vIndex !== -1) {\n virtualCacheRowObjects[parseInt(vIndex.toString(), 10)].data = updatedRowObject.data;\n virtualCacheRowObjects[parseInt(vIndex.toString(), 10)]['gSummary'] = updatedRowObject['gSummary'];\n }\n }\n parentRowObject.data = updatedRowObject.data;\n parentRowObject['gSummary'] = updatedRowObject['gSummary'];\n keyPresent = true;\n break;\n }\n }\n if (keyPresent) {\n break;\n }\n }\n }\n if (!keyPresent) {\n var removeElem = gObj.getRowElementByUID(parentRowObject.uid);\n if (!isNullOrUndefined(removeElem)) {\n remove(removeElem);\n }\n rowObjects.splice(rowObjects.indexOf(parentRowObject), 1);\n if (gObj.enableVirtualization) {\n virtualCacheRowObjects.splice(virtualCacheRowObjects.indexOf(parentRowObject), 1);\n for (var k = 1; k <= Object.keys(cache).length; k++) {\n var vcIndex = cache[parseInt(k.toString(), 10)].indexOf(parentRowObject);\n if (vcIndex !== -1) {\n cache[parseInt(k.toString(), 10)].splice([parseInt(vcIndex.toString(), 10)], 1);\n }\n }\n }\n if (gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings.enableCache) {\n gObj.infiniteScrollModule.resetInfiniteCache(rowObjects);\n }\n }\n }\n };\n Group.prototype.groupReorderRefreshHandler = function (parentRowObjects) {\n var gObj = this.parent;\n var row = new RowRenderer(gObj['serviceLocator'], null, gObj);\n var columns = gObj.getColumns();\n for (var j = 0; j < parentRowObjects.length; j++) {\n var rowObject = parentRowObjects[parseInt(j.toString(), 10)];\n if (!isNullOrUndefined(rowObject.uid) &&\n !isNullOrUndefined(gObj.getRowElementByUID(rowObject.uid))) {\n row.refresh(rowObject, columns, false);\n }\n }\n };\n Group.prototype.getGroupParentFooterAggregateRowObject = function (parentUid) {\n var rowObjects = this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache &&\n this.parent.groupSettings.columns.length ? this.parent.contentModule['rows'] : this.parent.getRowsObject();\n var parentFooterAggregates = [];\n for (var i = 0; i < rowObjects.length; i++) {\n var rowObject = rowObjects[parseInt(i.toString(), 10)];\n if (rowObject.parentUid === parentUid && rowObject.isAggregateRow) {\n parentFooterAggregates.push(rowObject);\n }\n }\n return parentFooterAggregates;\n };\n Group.prototype.evaluateGroupAggregateValueChange = function (rowObjects, updatedRowObject, groupAggregateTemplate) {\n var change = false;\n if (rowObjects.data[groupAggregateTemplate['field']]['field'] === updatedRowObject.data[groupAggregateTemplate['field']]['field']\n && rowObjects.data[groupAggregateTemplate['field']]['key'] === updatedRowObject.data[groupAggregateTemplate['field']]['key'] &&\n rowObjects.data[groupAggregateTemplate['field']]\n // eslint-disable-next-line no-prototype-builtins\n .hasOwnProperty(groupAggregateTemplate['field'] + ' - ' + groupAggregateTemplate['type']) &&\n updatedRowObject.data[groupAggregateTemplate['field']]\n // eslint-disable-next-line no-prototype-builtins\n .hasOwnProperty(groupAggregateTemplate['field'] + ' - ' + groupAggregateTemplate['type'])) {\n change = true;\n }\n return change;\n };\n Group.prototype.gettingVirtualData = function (parentRowObjs, curViewRec, pK) {\n var datas = [];\n var _loop_2 = function (i) {\n if (curViewRec.indexOf(parentRowObjs[parseInt(i.toString(), 10)].data) === -1) {\n datas.push(parentRowObjs[parseInt(i.toString(), 10)].data);\n }\n if (parentRowObjs[parseInt(i.toString(), 10)].data['field'] === this_2.parent.groupSettings.columns[0]) {\n var draggedData_1 = parentRowObjs[parseInt(i.toString(), 10)].data['items'];\n if (!isNullOrUndefined(draggedData_1['records'])) {\n draggedData_1 = draggedData_1['records'];\n }\n var _loop_3 = function (j) {\n if (pK && curViewRec.findIndex(function (data) { return data[pK.toString()] ===\n draggedData_1[parseInt(j.toString(), 10)][pK.toString()]; }) === -1) {\n datas.push(draggedData_1[parseInt(j.toString(), 10)]);\n }\n };\n for (var j = 0; j < draggedData_1.length; j++) {\n _loop_3(j);\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < parentRowObjs.length; i++) {\n _loop_2(i);\n }\n return datas;\n };\n Group.prototype.iterateGroupAggregates = function (editedData) {\n var _this = this;\n var updatedData = editedData instanceof Array ? editedData : [];\n var rows = this.parent.getRowsObject();\n var initData = this.parent.getCurrentViewRecords().slice();\n var field = this.parent.getPrimaryKeyFieldNames()[0];\n var dragParentRowObjects = editedData && editedData.length ?\n editedData[0]['dragRowObjects'] : null;\n var dropParentRowObjects = editedData && editedData.length ?\n editedData[0]['dropRowObjects'] : null;\n var dropRootKey = null;\n var dragRootKey = null;\n if (this.parent.enableVirtualization && this.parent.allowGrouping && this.parent.groupSettings.columns.length &&\n (!isNullOrUndefined(dragParentRowObjects) || !isNullOrUndefined(dropParentRowObjects))) {\n if (dragParentRowObjects) {\n initData.push.apply(initData, this.gettingVirtualData(dragParentRowObjects, initData, field));\n }\n if (dropParentRowObjects) {\n initData.push.apply(initData, this.gettingVirtualData(dropParentRowObjects, initData, field));\n }\n }\n var isInfiniteGroup = this.parent.enableInfiniteScrolling && this.parent.allowGrouping && editedData.length &&\n this.parent.groupSettings.columns.length && !isNullOrUndefined(dragParentRowObjects) &&\n !isNullOrUndefined(dropParentRowObjects);\n if (isInfiniteGroup) {\n initData = [];\n dropRootKey = dropParentRowObjects[dropParentRowObjects.length - 1].data['key'];\n dragRootKey = dragParentRowObjects[dragParentRowObjects.length - 1].data['key'];\n this.parent.getRowsObject().map(function (row) {\n var groupKey = row.data[_this.parent.groupSettings.columns[0]];\n if (row.isDataRow &&\n ((groupKey === dropRootKey || groupKey === dragRootKey) || (groupKey instanceof Date &&\n (groupKey.toString() === dropRootKey.toString() || groupKey.toString() === dragRootKey.toString())))) {\n initData.push(row.data);\n }\n });\n }\n var deletedCols = [];\n var changeds = rows.map(function (row) {\n if (row.edit === 'delete') {\n deletedCols.push(row.data);\n }\n return row.changes instanceof Object ? row.changes : row.data;\n });\n changeds = updatedData.length === 0 ? changeds : updatedData;\n var mergeData = initData.map(function (item) {\n var pKeyVal = DataUtil.getObject(field, item);\n var value;\n var hasVal = changeds.some(function (cItem) {\n value = cItem;\n return pKeyVal === DataUtil.getObject(field, cItem);\n });\n return hasVal ? value : item;\n });\n var eData = editedData;\n if (!(eData.type && eData.type === 'cancel') && deletedCols.length > 0) {\n for (var i = 0; i < deletedCols.length; i++) {\n var index = mergeData.indexOf(deletedCols[parseInt(i.toString(), 10)]);\n mergeData.splice(index, 1);\n }\n }\n var aggregates = [];\n var aggregateRows = this.parent.aggregates;\n for (var j = 0; j < aggregateRows.length; j++) {\n var row = aggregateRows[parseInt(j.toString(), 10)];\n for (var k = 0; k < row.columns.length; k++) {\n var aggr = {};\n var type = row.columns[parseInt(k.toString(), 10)].type.toString();\n aggr = { type: type.toLowerCase(), field: row.columns[parseInt(k.toString(), 10)].field };\n aggregates.push(aggr);\n }\n }\n var result;\n var aggrds;\n var groupedCols = this.parent.groupSettings.columns;\n for (var l = 0; l < groupedCols.length; l++) {\n aggrds = result ? result : mergeData;\n result = DataUtil.group(aggrds, groupedCols[parseInt(l.toString(), 10)], aggregates, null, null);\n }\n if (isInfiniteGroup) {\n var lastGroupKey = this.parent.currentViewData[this.parent.currentViewData.length - 1]['key'];\n if ((lastGroupKey instanceof Date && (lastGroupKey.toString() === dropRootKey.toString() ||\n lastGroupKey.toString() === dragRootKey.toString())) ||\n (lastGroupKey === dropRootKey || lastGroupKey === dragRootKey)) {\n var groups_1 = [];\n for (var i = 0; i < result.length; i++) {\n groups_1.push(result[parseInt(i.toString(), 10)]);\n }\n var predicate_1 = [];\n var addWhere = function (input) {\n for (var i = 0; i < groups_1.length; i++) {\n predicate_1.push(new Predicate('field', '==', groups_1[parseInt(i.toString(), 10)].field).\n and(_this.parent.renderModule.getPredicate('key', 'equal', groups_1[parseInt(i.toString(), 10)].key)));\n }\n input.where(Predicate.or(predicate_1));\n };\n var newQuery = this.parent.getDataModule().generateQuery(true);\n addWhere(newQuery);\n var updatedGroupData = this.parent.getDataModule().dataManager.executeLocal(newQuery);\n this.parent.renderModule.updateGroupInfo(result, updatedGroupData);\n }\n }\n return result;\n };\n Group.prototype.updateExpand = function (args) {\n var uid = args.uid;\n var isExpand = args.isExpand;\n var rows = this.parent.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n var row = rows[parseInt(i.toString(), 10)];\n if (row.uid === uid || isNullOrUndefined(uid)) {\n row.isExpand = isExpand;\n var _loop_4 = function (j) {\n var childRow = rows[parseInt(j.toString(), 10)];\n var closestParent = void 0;\n if (childRow.parentUid !== row.uid) {\n closestParent = rows.filter(function (x) { return x.uid === childRow.parentUid; })[0];\n }\n if (childRow.parentUid === row.uid) {\n childRow.visible = row.isExpand;\n }\n else if (!isNullOrUndefined(closestParent) && childRow.parentUid === closestParent.uid) {\n if (closestParent.isExpand && closestParent.visible === true) {\n childRow.visible = true;\n }\n else if (closestParent.isExpand && closestParent.visible === false) {\n childRow.visible = false;\n }\n }\n if (isNullOrUndefined(uid)) {\n return \"break\";\n }\n };\n for (var j = i + 1; j < rows.length; j++) {\n var state_2 = _loop_4(j);\n if (state_2 === \"break\")\n break;\n }\n }\n }\n this.parent.notify(events.contentReady, { rows: rows, args: { isFrozen: false, rows: rows } });\n };\n return Group;\n}());\nexport { Group };\n","import { Browser } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { closest, classList } from '@syncfusion/ej2-base';\nimport { ResponsiveDialogAction } from '../base/enum';\nimport { setCssInGridPopUp, getActualPropFromColl, isActionPrevent, iterateExtend, parentsUntil } from '../base/util';\nimport { addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\nimport { AriaService } from '../services/aria-service';\nimport * as literals from '../base/string-literals';\n/**\n *\n * The `Sort` module is used to handle sorting action.\n */\nvar Sort = /** @class */ (function () {\n /**\n * Constructor for Grid sorting module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {SortSettings} sortSettings - specifies the SortSettings\n * @param {string[]} sortedColumns - specifies the string\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function Sort(parent, sortSettings, sortedColumns, locator) {\n this.contentRefresh = true;\n this.isModelChanged = true;\n this.aria = new AriaService();\n this.currentTarget = null;\n this.parent = parent;\n this.sortSettings = sortSettings;\n this.sortedColumns = sortedColumns;\n this.serviceLocator = locator;\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.setFullScreenDialog();\n }\n /**\n * The function used to update sortSettings\n *\n * @returns {void}\n * @hidden\n */\n Sort.prototype.updateModel = function () {\n var sortedColumn = { field: this.columnName, direction: this.direction };\n var index;\n var gCols = this.parent.groupSettings.columns;\n var flag = false;\n if (!this.isMultiSort) {\n if (!gCols.length) {\n this.sortSettings.columns = [sortedColumn];\n }\n else {\n var sortedCols = [];\n for (var i = 0, len = gCols.length; i < len; i++) {\n index = this.getSortedColsIndexByField(gCols[parseInt(i.toString(), 10)], sortedCols);\n if (this.columnName === gCols[parseInt(i.toString(), 10)]) {\n flag = true;\n sortedCols.push(sortedColumn);\n }\n else {\n var sCol = this.getSortColumnFromField(gCols[parseInt(i.toString(), 10)]);\n sortedCols.push({ field: sCol.field, direction: sCol.direction, isFromGroup: sCol.isFromGroup });\n }\n }\n if (!flag) {\n sortedCols.push(sortedColumn);\n }\n this.sortSettings.columns = sortedCols;\n }\n }\n else {\n index = this.getSortedColsIndexByField(this.columnName);\n if (index > -1) {\n this.sortSettings.columns.splice(index, 1);\n }\n this.sortSettings.columns.push(sortedColumn);\n // eslint-disable-next-line no-self-assign\n this.sortSettings.columns = this.sortSettings.columns;\n }\n this.parent.dataBind();\n this.lastSortedCol = this.columnName;\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Sort.prototype.onActionComplete = function (e) {\n var args = !this.isRemove ? {\n columnName: this.columnName, direction: this.direction, requestType: 'sorting', type: events.actionComplete\n } : { requestType: 'sorting', type: events.actionComplete };\n this.isRemove = false;\n this.parent.trigger(events.actionComplete, extend(e, args));\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to sort.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previously sorted columns are to be maintained.\n * @returns {void}\n */\n Sort.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n var gObj = this.parent;\n if (this.parent.getColumnByField(columnName).allowSorting === false || this.parent.isContextMenuOpen()) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: columnName });\n return;\n }\n if (!gObj.allowMultiSorting) {\n isMultiSort = gObj.allowMultiSorting;\n }\n if (this.isActionPrevent()) {\n gObj.notify(events.preventBatch, {\n instance: this, handler: this.sortColumn,\n arg1: columnName, arg2: direction, arg3: isMultiSort\n });\n return;\n }\n this.backupSettings();\n this.columnName = columnName;\n this.direction = direction;\n this.isMultiSort = isMultiSort;\n this.removeSortIcons();\n this.updateSortedCols(columnName, isMultiSort);\n this.updateModel();\n };\n Sort.prototype.setFullScreenDialog = function () {\n if (this.serviceLocator) {\n this.serviceLocator.registerAdaptiveService(this, this.parent.enableAdaptiveUI, ResponsiveDialogAction.isSort);\n }\n };\n Sort.prototype.backupSettings = function () {\n this.lastSortedCols = iterateExtend(this.sortSettings.columns);\n this.lastCols = this.sortedColumns;\n };\n Sort.prototype.restoreSettings = function () {\n this.isModelChanged = false;\n this.isMultiSort = true;\n this.parent.setProperties({ sortSettings: { columns: this.lastSortedCols } }, true);\n //this.parent.sortSettings.columns = this.lastSortedCols;\n this.sortedColumns = this.lastCols;\n this.isModelChanged = true;\n };\n Sort.prototype.updateSortedCols = function (columnName, isMultiSort) {\n if (!isMultiSort) {\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.sortedColumns.length; i < len; i++) {\n if (this.parent.groupSettings.columns.indexOf(this.sortedColumns[parseInt(i.toString(), 10)]) < 0) {\n this.sortedColumns.splice(i, 1);\n len--;\n i--;\n }\n }\n }\n else {\n this.sortedColumns.splice(0, this.sortedColumns.length);\n }\n }\n if (this.sortedColumns.indexOf(columnName) < 0) {\n this.sortedColumns.push(columnName);\n }\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Sort.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (this.contentRefresh) {\n var args = this.sortSettings.columns.length ? {\n columnName: this.columnName, direction: this.direction, requestType: 'sorting',\n type: events.actionBegin, target: this.currentTarget, cancel: false\n } : {\n requestType: 'sorting', type: events.actionBegin, cancel: false,\n target: this.currentTarget\n };\n this.parent.notify(events.modelChanged, args);\n }\n this.refreshSortSettings();\n this.removeSortIcons();\n this.addSortIcons();\n };\n Sort.prototype.refreshSortSettings = function () {\n this.sortedColumns.length = 0;\n var sortColumns = this.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (!sortColumns[parseInt(i.toString(), 10)].isFromGroup) {\n this.sortedColumns.push(sortColumns[parseInt(i.toString(), 10)].field);\n }\n }\n };\n /**\n * Clears all the sorted columns of the Grid.\n *\n * @returns {void}\n */\n Sort.prototype.clearSorting = function () {\n var cols = getActualPropFromColl(this.sortSettings.columns);\n if (this.isActionPrevent()) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.clearSorting });\n return;\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.removeSortColumn(cols[parseInt(i.toString(), 10)].field);\n }\n };\n Sort.prototype.isActionPrevent = function () {\n return isActionPrevent(this.parent);\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n Sort.prototype.removeSortColumn = function (field) {\n var gObj = this.parent;\n var cols = this.sortSettings.columns;\n if (cols.length === 0 && this.sortedColumns.indexOf(field) < 0) {\n return;\n }\n if (this.isActionPrevent()) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.removeSortColumn, arg1: field });\n return;\n }\n this.backupSettings();\n this.removeSortIcons();\n var args = { requestType: 'sorting', type: events.actionBegin, target: this.currentTarget };\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n if (gObj.allowGrouping && gObj.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].field) > -1) {\n continue;\n }\n this.sortedColumns.splice(this.sortedColumns.indexOf(cols[parseInt(i.toString(), 10)].field), 1);\n cols.splice(i, 1);\n this.isRemove = true;\n if (this.isModelChanged) {\n this.parent.notify(events.modelChanged, args);\n }\n break;\n }\n }\n if (!args.cancel) {\n this.addSortIcons();\n }\n };\n Sort.prototype.getSortedColsIndexByField = function (field, sortedColumns) {\n var cols = sortedColumns ? sortedColumns : this.sortSettings.columns;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Sort.prototype.getModuleName = function () {\n return 'sort';\n };\n Sort.prototype.initialEnd = function () {\n this.parent.off(events.contentReady, this.initialEnd);\n if (this.parent.getColumns().length && this.sortSettings.columns.length) {\n var gObj = this.parent;\n this.contentRefresh = false;\n this.isMultiSort = this.sortSettings.columns.length > 1;\n for (var _i = 0, _a = gObj.sortSettings.columns.slice(); _i < _a.length; _i++) {\n var col = _a[_i];\n if (this.sortedColumns.indexOf(col.field) > -1) {\n this.sortColumn(col.field, col.direction, true);\n }\n }\n this.isMultiSort = false;\n this.contentRefresh = true;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Sort.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.setFullScreenDialog, handler: this.setFullScreenDialog },\n { event: events.renderResponsiveChangeAction, handler: this.renderResponsiveChangeAction },\n { event: events.contentReady, handler: this.initialEnd },\n { event: events.sortComplete, handler: this.onActionComplete },\n { event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.click, handler: this.clickHandler },\n { event: events.headerRefreshed, handler: this.refreshSortIcons },\n { event: events.keyPressed, handler: this.keyPressed },\n { event: events.cancelBegin, handler: this.cancelBeginEvent },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Sort.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * To destroy the sorting\n *\n * @returns {void}\n * @hidden\n */\n Sort.prototype.destroy = function () {\n this.isModelChanged = false;\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n if (this.parent.element.querySelector('.e-gridpopup').getElementsByClassName('e-sortdirect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.parent.refreshing && (this.parent.isDestroyed || !this.parent.allowSorting)) {\n this.clearSorting();\n }\n this.isModelChanged = true;\n this.removeEventListener();\n };\n Sort.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'sorting') {\n this.restoreSettings();\n this.refreshSortIcons();\n this.isMultiSort = true;\n }\n };\n Sort.prototype.clickHandler = function (e) {\n var gObj = this.parent;\n this.currentTarget = null;\n this.popUpClickHandler(e);\n var target = closest(e.target, '.e-headercell');\n if (target && !e.target.classList.contains('e-grptogglebtn') &&\n !(target.classList.contains('e-resized')) &&\n !e.target.classList.contains('e-rhandler') &&\n !e.target.classList.contains('e-columnmenu') &&\n !e.target.classList.contains('e-filtermenudiv') &&\n !parentsUntil(e.target, 'e-stackedheadercell') &&\n !(gObj.allowSelection && gObj.selectionSettings.allowColumnSelection &&\n e.target.classList.contains('e-headercell'))) {\n var gObj_1 = this.parent;\n var colObj = gObj_1.getColumnByUid(target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n if (colObj.type !== 'checkbox') {\n this.initiateSort(target, e, colObj);\n if (Browser.isDevice) {\n this.showPopUp(e);\n }\n }\n }\n if (target) {\n target.classList.remove('e-resized');\n }\n if (parentsUntil(e.target, 'e-excel-ascending') ||\n parentsUntil(e.target, 'e-excel-descending')) {\n var colUid = closest(e.target, '.e-filter-popup').getAttribute('uid');\n var direction = isNullOrUndefined(parentsUntil(e.target, 'e-excel-descending')) ?\n 'Ascending' : 'Descending';\n this.sortColumn(gObj.getColumnByUid(colUid).field, direction, false);\n }\n };\n Sort.prototype.keyPressed = function (e) {\n var ele = e.target;\n if (!this.parent.isEdit && (e.action === 'enter' || e.action === 'ctrlEnter' || e.action === 'shiftEnter')\n && closest(ele, '.e-headercell')) {\n var target = this.focus.getFocusedElement();\n if (isNullOrUndefined(target) || !target.classList.contains('e-headercell')\n || !target.querySelector('.e-headercelldiv')) {\n return;\n }\n var col = this.parent.getColumnByUid(target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n this.initiateSort(target, e, col);\n }\n };\n Sort.prototype.initiateSort = function (target, e, column) {\n var gObj = this.parent;\n var field = column.field;\n this.currentTarget = e.target;\n var direction = !target.getElementsByClassName('e-ascending').length ? 'Ascending' :\n 'Descending';\n this.isMultiSort = e.ctrlKey || this.enableSortMultiTouch ||\n (navigator.userAgent.indexOf('Mac OS') !== -1 && e.metaKey);\n if (e.shiftKey || (this.sortSettings.allowUnsort && target.getElementsByClassName('e-descending').length)\n && !(gObj.groupSettings.columns.indexOf(field) > -1)) {\n this.removeSortColumn(field);\n }\n else {\n this.sortColumn(field, direction, this.isMultiSort);\n }\n };\n Sort.prototype.showPopUp = function (e) {\n var target = closest(e.target, '.e-headercell');\n if (this.parent.allowMultiSorting && (!isNullOrUndefined(target) || this.parent.isContextMenuOpen())) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-sortdirect e-icons e-icon-sortdirect' + (this.sortedColumns.length > 1 ? ' e-spanclicked' : ''));\n }\n };\n Sort.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains(literals.rowCell) ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-sortdirect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSortMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSortMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Sort.prototype.addSortIcons = function () {\n var gObj = this.parent;\n var header;\n var filterElement;\n var cols = this.sortSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var i = 0, len = cols.length; i < len; i++) {\n header = gObj.getColumnHeaderByField(cols[parseInt(i.toString(), 10)].field);\n if (fieldNames.indexOf(cols[parseInt(i.toString(), 10)].field) === -1 || isNullOrUndefined(header)) {\n continue;\n }\n this.aria.setSort(header, (cols[parseInt(i.toString(), 10)].direction).toLowerCase());\n if (cols.length > 1) {\n header.querySelector('.e-headercelldiv').insertBefore(this.parent.createElement('span', { className: 'e-sortnumber', innerHTML: (i + 1).toString() }), header.querySelector('.e-headertext'));\n }\n filterElement = header.querySelector('.e-sortfilterdiv');\n if (cols[parseInt(i.toString(), 10)].direction === 'Ascending') {\n classList(filterElement, ['e-ascending', 'e-icon-ascending'], []);\n }\n else {\n classList(filterElement, ['e-descending', 'e-icon-descending'], []);\n }\n }\n };\n Sort.prototype.removeSortIcons = function (position) {\n var gObj = this.parent;\n var header;\n var cols = this.sortSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var i = position ? position : 0, len = !isNullOrUndefined(position) ? position + 1 : cols.length; i < len; i++) {\n header = gObj.getColumnHeaderByField(cols[parseInt(i.toString(), 10)].field);\n if (isNullOrUndefined(header) || (gObj.allowGrouping\n && gObj.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].field) > -1\n && !header.querySelector('.e-sortfilterdiv'))) {\n continue;\n }\n if (fieldNames.indexOf(cols[parseInt(i.toString(), 10)].field) === -1) {\n continue;\n }\n this.aria.setSort(header, 'none');\n classList(header.querySelector('.e-sortfilterdiv'), [], ['e-descending', 'e-icon-descending', 'e-ascending', 'e-icon-ascending']);\n if (header.querySelector('.e-sortnumber')) {\n header.querySelector('.e-headercelldiv').removeChild(header.querySelector('.e-sortnumber'));\n }\n }\n };\n Sort.prototype.getSortColumnFromField = function (field) {\n for (var i = 0, len = this.sortSettings.columns.length; i < len; i++) {\n if (this.sortSettings.columns[parseInt(i.toString(), 10)].field === field) {\n return this.sortSettings.columns[parseInt(i.toString(), 10)];\n }\n }\n return false;\n };\n Sort.prototype.updateAriaAttr = function () {\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var _i = 0, _a = this.sortedColumns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (fieldNames.indexOf(col) === -1) {\n continue;\n }\n var header = this.parent.getColumnHeaderByField(col);\n this.aria.setSort(header, this.getSortColumnFromField(col).direction);\n }\n };\n Sort.prototype.refreshSortIcons = function () {\n this.removeSortIcons();\n this.isMultiSort = true;\n this.removeSortIcons();\n this.addSortIcons();\n this.isMultiSort = false;\n this.updateAriaAttr();\n };\n Sort.prototype.renderResponsiveChangeAction = function (args) {\n this.responsiveDialogRenderer.action = args.action;\n };\n /**\n * To show the responsive custom sort dialog\n *\n * @param {boolean} enable - specifes dialog open\n * @returns {void}\n * @hidden\n */\n Sort.prototype.showCustomSort = function (enable) {\n this.responsiveDialogRenderer.isCustomDialog = enable;\n this.responsiveDialogRenderer.showResponsiveDialog();\n };\n return Sort;\n}());\nexport { Sort };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, getValue, closest } from '@syncfusion/ej2-base';\nimport { attributes } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { appendChildren, addStickyColumnPosition } from '../base/util';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport * as events from '../base/constant';\n/**\n * FilterCellRenderer class which responsible for building filter cell.\n *\n * @hidden\n */\nvar FilterCellRenderer = /** @class */ (function (_super) {\n __extends(FilterCellRenderer, _super);\n function FilterCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-filterbarcell', attrs: { role: 'columnheader' } });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n *\n * @returns {string} returns the gui\n */\n FilterCellRenderer.prototype.getGui = function () {\n return this.parent.createElement('div');\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell\n * @param {Object} data\n */\n /* tslint:disable-next-line:max-func-body-length */\n FilterCellRenderer.prototype.render = function (cell, data) {\n var tr = this.parent.element.querySelector('.e-filterbar');\n var node = this.element.cloneNode();\n var innerDIV = this.getGui();\n var input;\n var column = cell.column;\n tr.appendChild(node);\n node.setAttribute('e-mappinguid', column.uid);\n if (column.filterTemplate) {\n var fltrData = {};\n if (data) {\n fltrData[column.field] = data[column.field];\n }\n var col = 'column';\n fltrData[\"\" + col] = column;\n if (column.visible) {\n var isReactCompiler = this.parent.isReact && typeof (column.filterTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + column.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else {\n var element = column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID);\n appendChildren(node, element);\n }\n }\n else {\n node.classList.add('e-hide');\n }\n }\n else {\n if (column.type !== 'checkbox') {\n if ((isNullOrUndefined(column.allowFiltering) || column.allowFiltering) && !isNullOrUndefined(column.filterBarTemplate)) {\n node.classList.add('e-fltrtemp');\n attributes(innerDIV, {\n 'class': 'e-fltrtempdiv'\n });\n if (isNullOrUndefined(column.filterBarTemplate.create)) {\n input = this.parent.createElement('input', {\n id: column.field + '_filterBarcell', className: 'e-filterUi_input e-filtertext e-fltrTemp',\n attrs: { type: 'search', title: column.headerText }\n });\n innerDIV.appendChild(input);\n }\n else {\n var args = { column: column, node: Element };\n var temp = column.filterBarTemplate.create;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n input = temp(args);\n if (typeof input === 'string') {\n var div = this.parent.createElement('div');\n div.innerHTML = input;\n input = div.firstChild;\n }\n attributes(innerDIV, {\n class: 'e-filterUi_input e-filtertext e-fltrTemp',\n title: column.headerText,\n id: column.field + '_filterBarcell'\n });\n innerDIV.appendChild(input);\n }\n }\n else {\n attributes(innerDIV, {\n 'class': 'e-filterdiv e-fltrinputdiv'\n });\n input = this.parent.createElement('input', {\n id: column.field + '_filterBarcell', className: 'e-filtertext',\n attrs: {\n type: 'search', title: column.headerText + cell.attributes.title,\n value: data[cell.column.field] ? data[cell.column.field] : ''\n }\n });\n innerDIV.appendChild(input);\n var args = {\n element: input, floatLabelType: 'Never',\n properties: {\n enableRtl: this.parent.enableRtl, showClearButton: true, cssClass: this.parent.cssClass\n }\n };\n Input.createInput(args, this.parent.createElement);\n }\n //TODO: apply intial filtering\n if (column.allowFiltering === false || column.field === '' || isNullOrUndefined(column.field)) {\n input.setAttribute('disabled', 'true');\n input.classList.add('e-disable');\n }\n var clearIconElem = innerDIV.querySelector('.e-clear-icon');\n if (clearIconElem) {\n clearIconElem.setAttribute('title', this.parent.localeObj.getConstant('ClearButton'));\n }\n if (!column.visible) {\n node.classList.add('e-hide');\n }\n this.appendHtml(node, innerDIV);\n // render's the dropdownlist component if showFilterBarOperator sets to true\n if (this.parent.filterSettings.showFilterBarOperator && this.parent.filterSettings.type === 'FilterBar' &&\n !this.parent.isPrinting && isNullOrUndefined(column.filterTemplate) && isNullOrUndefined(column.filterBarTemplate)) {\n this.operatorIconRender(innerDIV, column, cell);\n }\n if ((isNullOrUndefined(column.allowFiltering) || column.allowFiltering) && !isNullOrUndefined(column.filterBarTemplate)) {\n var templateWrite = column.filterBarTemplate.write;\n var args = { element: input, column: column };\n if (typeof templateWrite === 'string') {\n templateWrite = getValue(templateWrite, window);\n }\n templateWrite.call(this, args);\n }\n }\n }\n if (this.parent.isFrozenGrid()) {\n addStickyColumnPosition(this.parent, column, node);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHTML\n * @returns {Element} retruns the element\n */\n FilterCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n FilterCellRenderer.prototype.operatorIconRender = function (innerDIV, column, cell) {\n var gObj = this.parent;\n var operators;\n var fbicon = this.parent.createElement('input', {\n className: ' e-filterbaroperator e-icons e-icon-filter',\n id: cell.column.uid\n });\n innerDIV.querySelector('span').appendChild(fbicon);\n if (column.filter && column.filter.operator) {\n operators = column.filter.operator;\n }\n else if (gObj.filterSettings.columns.length) {\n for (var i = 0, a = gObj.filterSettings.columns; i < a.length; i++) {\n var col = a[parseInt(i.toString(), 10)];\n if (col.field === column.field) {\n operators = col.operator;\n break;\n }\n else {\n operators = 'equal';\n }\n }\n }\n else {\n operators = 'equal';\n }\n if (!isNullOrUndefined(gObj.filterModule.operators[column.field])) {\n operators = gObj.filterModule.operators[column.field];\n }\n this.dropOptr = new DropDownList({\n fields: { text: 'text', value: 'value' },\n popupHeight: 'auto',\n value: operators,\n width: '0px',\n enabled: column.allowFiltering,\n popupWidth: 'auto',\n enableRtl: this.parent.enableRtl,\n change: this.internalEvent.bind(this),\n beforeOpen: function () {\n var operator = gObj.filterModule.customOperators;\n this.dataSource = operator[gObj.getColumnByUid(this.element.id).type + 'Operator'];\n for (var i = 0; i < this.dataSource.length; i++) {\n if (column.filter && column.filter.operator && isNullOrUndefined(gObj.filterModule.operators[column.field]) &&\n this.dataSource[parseInt(i.toString(), 10)].value === column.filter.operator) {\n this.value = column.filter.operator;\n }\n }\n },\n cssClass: this.parent.cssClass ? 'e-popup-flbar' + ' ' + this.parent.cssClass : 'e-popup-flbar'\n });\n this.dropOptr.appendTo(fbicon);\n var spanElmt = closest(this.dropOptr.element, 'span');\n spanElmt.classList.add('e-filterbardropdown');\n spanElmt.removeAttribute('tabindex');\n };\n FilterCellRenderer.prototype.internalEvent = function (e) {\n var gObj = this.parent;\n var col = gObj.getColumnByUid(e.element.getAttribute('id'));\n e.column = col;\n gObj.filterModule.operators[col.field] = e.value;\n gObj.notify(events.getFilterBarOperator, e);\n };\n return FilterCellRenderer;\n}(CellRenderer));\nexport { FilterCellRenderer };\n","import { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `filter operators` render boolean column.\n *\n * @hidden\n */\nvar FlMenuOptrUI = /** @class */ (function () {\n function FlMenuOptrUI(parent, customFltrOperators, serviceLocator, filterSettings) {\n this.ddOpen = this.dropDownOpen.bind(this);\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.filterSettings = filterSettings;\n this.customFilterOperators = customFltrOperators;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroyDropDownList, this);\n this.parent.on(events.destroy, this.destroyDropDownList, this);\n }\n }\n /**\n * @param {Element} dlgConetntEle - specifies the content element\n * @param {Element} target - specifies the target\n * @param {Column} column - specifies the column\n * @param {Dialog} dlgObj - specifies the dialog\n * @param {Object[]} operator - specifies the operator list\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line max-len\n FlMenuOptrUI.prototype.renderOperatorUI = function (dlgConetntEle, target, column, dlgObj, operator) {\n this.dialogObj = dlgObj;\n var optr = column.type + 'Operator';\n this.optrData = this.customOptr = !isNullOrUndefined(operator) ? operator :\n (!isNullOrUndefined(this.parent.filterSettings.operators) && !isNullOrUndefined(this.parent.filterSettings.operators[\"\" + optr])) ?\n this.parent.filterSettings.operators[\"\" + optr] : this.customFilterOperators[\"\" + optr];\n var dropDatasource = this.customOptr;\n var selectedValue = this.dropSelectedVal(column, optr);\n var optrDiv = this.parent.createElement('div', { className: 'e-flm_optrdiv' });\n dlgConetntEle.appendChild(optrDiv);\n var optrInput = this.parent.createElement('input', { id: column.uid + '-floptr' });\n optrDiv.appendChild(optrInput);\n this.dropOptr = new DropDownList({\n dataSource: dropDatasource,\n fields: { text: 'text', value: 'value' },\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n enableRtl: this.parent.enableRtl,\n text: selectedValue,\n // eslint-disable-next-line @typescript-eslint/tslint/config\n change: function () {\n var valInput = document.querySelector('.e-flmenu-valuediv').querySelector('input');\n if (this.value === 'isempty' || this.value === 'isnotempty' ||\n this.value === 'isnull' || this.value === 'isnotnull') {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else if (!isNullOrUndefined(valInput.getAttribute('disabled'))) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n }\n });\n this.dropOptr.addEventListener(literals['open'], this.ddOpen);\n this.dropOptr.appendTo('#' + column.uid + '-floptr');\n };\n FlMenuOptrUI.prototype.renderResponsiveDropDownList = function (args) {\n args.popup.element.style.width = '100%';\n };\n FlMenuOptrUI.prototype.dropDownOpen = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n if (this.parent.enableAdaptiveUI) {\n this.renderResponsiveDropDownList(args);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FlMenuOptrUI.prototype.dropSelectedVal = function (col, optr) {\n var selValue = '';\n var columns = this.parent.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (col.field === column.field || (col.isForeignColumn() && col.foreignKeyValue === column.field)) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('value', 'equal', column.operator));\n selValue = !isNullOrUndefined(selectedField[0]) ? selectedField[0].text : '';\n }\n }\n if (selValue === '') { // rewuired or not\n if (col.filter.operator) {\n var optrLen = Object.keys(this.optrData).length;\n for (var i = 0; i < optrLen; i++) {\n if (this.optrData[parseInt(i.toString(), 10)].value === col.filter.operator) {\n selValue = this.optrData[parseInt(i.toString(), 10)].text;\n }\n }\n }\n else {\n selValue = this.optrData[0].text;\n }\n }\n return selValue;\n };\n /**\n * @returns {string} returns the operator\n * @hidden\n */\n FlMenuOptrUI.prototype.getFlOperator = function () {\n return this.dropOptr.value;\n };\n FlMenuOptrUI.prototype.destroyDropDownList = function () {\n if (this.dropOptr.isDestroyed) {\n return;\n }\n this.dropOptr.removeEventListener(literals['open'], this.ddOpen);\n this.dropOptr.destroy();\n this.parent.off(events.filterMenuClose, this.destroyDropDownList);\n this.parent.off(events.destroy, this.destroyDropDownList);\n };\n return FlMenuOptrUI;\n}());\nexport { FlMenuOptrUI };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Event, addClass, Browser, removeClass, detach } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, NotifyPropertyChanges, getValue, setValue } from '@syncfusion/ej2-base';\nimport { DropDownList, dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { Search } from '../common/incremental-search';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\nvar SPINNER_CLASS = 'e-atc-spinner-icon';\ndropDownListClasses.root = 'e-combobox';\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The ComboBox component allows the user to type a value or choose an option from the list of predefined options.\n * ```html\n * \n * ```\n * ```typescript\n * let games:ComboBox = new ComboBox();\n * games.appendTo(\"#list\");\n * ```\n */\nvar ComboBox = /** @class */ (function (_super) {\n __extends(ComboBox, _super);\n /**\n * *Constructor for creating the component\n *\n * @param {ComboBoxModel} options - Specifies the ComboBox model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function ComboBox(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n ComboBox.prototype.getLocaleName = function () {\n return 'combo-box';\n };\n ComboBox.prototype.wireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur, this);\n EventHandler.add(this.inputWrapper.container, 'blur', this.onBlurHandler, this);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick, this);\n }\n EventHandler.add(this.inputElement, 'focus', this.targetFocus, this);\n if (!this.readonly) {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n }\n this.bindCommonEvent();\n };\n ComboBox.prototype.preventBlur = function (e) {\n if ((!this.allowFiltering && document.activeElement !== this.inputElement &&\n !document.activeElement.classList.contains(dropDownListClasses.input) && Browser.isDevice || !Browser.isDevice)) {\n e.preventDefault();\n }\n };\n ComboBox.prototype.onBlurHandler = function (e) {\n var inputValue = this.inputElement && this.inputElement.value === '' ?\n null : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData) && !isNullOrUndefined(inputValue) && inputValue !== this.text) {\n this.customValue(e);\n }\n _super.prototype.onBlurHandler.call(this, e);\n };\n ComboBox.prototype.targetElement = function () {\n return this.inputElement;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldText = function (text) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n this.removeSelection();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldValue = function (value) {\n if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n this.removeSelection();\n this.setHiddenValue();\n };\n ComboBox.prototype.valueMuteChange = function (value) {\n value = this.allowObjectBinding && !isNullOrUndefined(value) ? getValue((this.fields.value) ? this.fields.value : '', value) : value;\n var inputValue = isNullOrUndefined(value) ? null : value.toString();\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n if (this.allowObjectBinding) {\n value = this.getDataByValue(value);\n }\n this.setProperties({ value: value, text: value, index: null }, true);\n this.activeIndex = this.index;\n var fields = this.fields;\n var dataItem = {};\n dataItem[fields.text] = isNullOrUndefined(value) ? null : value.toString();\n dataItem[fields.value] = isNullOrUndefined(value) ? null : value.toString();\n this.itemData = dataItem;\n this.item = null;\n if ((!this.allowObjectBinding && (this.previousValue !== this.value)) || (this.allowObjectBinding && this.previousValue && this.value && !this.isObjectInArray(this.previousValue, [this.value]))) {\n this.detachChangeEvent(null);\n }\n };\n ComboBox.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var li = this.getElementByValue(currentValue);\n var doesItemExist = !isNullOrUndefined(li) ? true : false;\n if (this.enableVirtualization && this.value) {\n var fields = (this.fields.value) ? this.fields.value : '';\n var currentValue_1 = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.dataSource instanceof DataManager && this.virtualGroupDataSource) {\n var getItem = new DataManager(this.virtualGroupDataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue_1)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n doesItemExist = true;\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': value });\n }\n }\n }\n else {\n var getItem = new DataManager(this.dataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue_1)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n doesItemExist = true;\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': value });\n }\n }\n }\n }\n if (li) {\n this.setSelection(li, null);\n }\n else if ((!this.enableVirtualization && this.allowCustom) || (this.allowCustom && this.enableVirtualization && !doesItemExist)) {\n this.valueMuteChange(this.value);\n }\n else if (!this.enableVirtualization || (this.enableVirtualization && !doesItemExist)) {\n this.valueMuteChange(null);\n }\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var li = this.getElementByText(this.text);\n if (li) {\n this.setSelection(li, null);\n }\n else {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n ComboBox.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement && this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n ComboBox.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'role': 'combobox',\n 'aria-autocomplete': 'both',\n 'aria-labelledby': this.hiddenElement.id,\n 'aria-expanded': 'false',\n 'aria-readonly': this.readonly.toString(),\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n };\n return ariaAttributes;\n };\n ComboBox.prototype.searchLists = function (e) {\n this.isTyped = true;\n if (this.isFiltering()) {\n _super.prototype.searchLists.call(this, e);\n if (this.ulElement && this.filterInput.value.trim() === '') {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n }\n else {\n if (this.ulElement && this.inputElement.value === '' && this.preventAutoFill) {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n this.incrementalSearch(e);\n }\n };\n ComboBox.prototype.getNgDirective = function () {\n return 'EJS-COMBOBOX';\n };\n ComboBox.prototype.setSearchBox = function () {\n this.filterInput = this.inputElement;\n var searchBoxContainer = (this.isFiltering() || (this.isReact && this.getModuleName() === 'combobox')) ? this.inputWrapper : inputObject;\n return searchBoxContainer;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.isSelectCustom) {\n this.removeSelection();\n }\n if (!this.preventAutoFill && this.getModuleName() === 'combobox' && this.isTyped && !this.enableVirtualization) {\n setTimeout(function () {\n _this.inlineSearch();\n });\n }\n };\n ComboBox.prototype.getFocusElement = function () {\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : this.list;\n var isSelected = dataItem.text && dataItem.text.toString() === this.inputElement.value && !isNullOrUndefined(selected);\n if (isSelected) {\n return selected;\n }\n if ((Browser.isDevice && !this.isDropDownClick || !Browser.isDevice) &&\n !isNullOrUndefined(this.liCollections) && this.liCollections.length > 0) {\n var inputValue = this.inputElement.value;\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var activeItem = Search(inputValue, this.liCollections, this.filterType, true, dataSource, this.fields, type);\n if (this.enableVirtualization && inputValue !== '' && this.getModuleName() !== 'autocomplete' && this.isTyped && !this.allowFiltering) {\n var updatingincrementalindex = false;\n if ((this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount) || this.incrementalEndIndex == 0) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = this.incrementalEndIndex;\n if (this.incrementalEndIndex == 0) {\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n }\n else {\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n }\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeItem = Search(inputValue, this.incrementalLiCollections, this.filterType, true, dataSource, this.fields, type);\n while (isNullOrUndefined(activeItem.item) && this.incrementalEndIndex < this.totalItemCount) {\n this.incrementalStartIndex = this.incrementalEndIndex;\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeItem = Search(inputValue, this.incrementalLiCollections, this.filterType, true, dataSource, this.fields, type);\n if (!isNullOrUndefined(activeItem)) {\n activeItem.index = activeItem.index + this.incrementalStartIndex;\n break;\n }\n if (isNullOrUndefined(activeItem) && this.incrementalEndIndex >= this.totalItemCount) {\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n break;\n }\n }\n if (activeItem.index) {\n if ((!(this.viewPortInfo.startIndex >= activeItem.index)) || (!(activeItem.index >= this.viewPortInfo.endIndex))) {\n var startIndex = activeItem.index - ((this.itemCount / 2) - 2) > 0 ? activeItem.index - ((this.itemCount / 2) - 2) : 0;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n if (startIndex != this.viewPortInfo.startIndex) {\n this.updateIncrementalView(startIndex, endIndex);\n }\n }\n }\n if (!isNullOrUndefined(activeItem.item)) {\n var index_1 = this.getIndexByValue(activeItem.item.getAttribute('data-value')) - this.skeletonCount;\n if (index_1 > this.itemCount / 2) {\n var startIndex = this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) < this.totalItemCount ? this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) : this.totalItemCount;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n activeItem.item = this.getElementByValue(activeItem.item.getAttribute('data-value'));\n }\n else {\n this.updateIncrementalView(0, this.itemCount);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n this.list.scrollTop = 0;\n }\n if (activeItem && activeItem.item) {\n activeItem.item = this.getElementByValue(activeItem.item.getAttribute('data-value'));\n }\n }\n var activeElement = activeItem.item;\n if (!isNullOrUndefined(activeElement)) {\n var count = this.getIndexByValue(activeElement.getAttribute('data-value')) - 1;\n var height = parseInt(getComputedStyle(this.liCollections[0], null).getPropertyValue('height'), 10);\n if (!isNaN(height) && this.getModuleName() !== 'autocomplete') {\n this.removeFocus();\n var fixedHead = this.fields.groupBy ? this.liCollections[0].offsetHeight : 0;\n if (!this.enableVirtualization) {\n this.list.scrollTop = count * height + fixedHead;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n if (this.enableVirtualization && !this.fields.groupBy) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? activeElement.offsetTop + (this.virtualListInfo.startIndex * activeElement.offsetHeight) : activeElement.offsetTop;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * activeElement.offsetHeight);\n }\n }\n addClass([activeElement], dropDownListClasses.focus);\n }\n }\n else {\n if (this.isSelectCustom && this.inputElement.value.trim() !== '') {\n this.removeFocus();\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n }\n }\n return activeElement;\n }\n else {\n return null;\n }\n };\n ComboBox.prototype.setValue = function (e) {\n if (e && e.type === 'keydown' && e.action === 'enter') {\n this.removeFillSelection();\n }\n if (this.autofill && this.getModuleName() === 'combobox' && e && e.type === 'keydown' && e.action !== 'enter') {\n this.preventAutoFill = false;\n this.inlineSearch(e);\n return false;\n }\n else {\n return _super.prototype.setValue.call(this, e);\n }\n };\n ComboBox.prototype.checkCustomValue = function () {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n this.itemData = this.getDataByValue(value);\n var dataItem = this.getItemData();\n var setValue = this.allowObjectBinding ? this.itemData : dataItem.value;\n if (!(this.allowCustom && isNullOrUndefined(dataItem.value) && isNullOrUndefined(dataItem.text))) {\n this.setProperties({ 'value': setValue }, !this.allowCustom);\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = (this.getModuleName() === 'autocomplete') ? (this.inputWrapper.buttons[0] ||\n this.inputWrapper.clearButton ||\n Input.appendSpan('e-input-group-icon ' + SPINNER_CLASS, this.inputWrapper.container, this.createElement)) :\n (this.inputWrapper.buttons[0] || this.inputWrapper.clearButton);\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n ComboBox.prototype.setAutoFill = function (activeElement, isHover) {\n if (!isHover) {\n this.setHoverList(activeElement);\n }\n if (this.autofill && !this.preventAutoFill) {\n var currentValue = this.getTextByValue(activeElement.getAttribute('data-value')).toString();\n var currentFillValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n if (this.getModuleName() === 'combobox') {\n if (!this.isSelected && ((!this.allowObjectBinding && this.previousValue !== currentFillValue)) || (this.allowObjectBinding && this.previousValue && currentFillValue && !this.isObjectInArray(this.previousValue, [this.getDataByValue(currentFillValue)]))) {\n this.updateSelectedItem(activeElement, null);\n this.isSelected = true;\n this.previousValue = this.allowObjectBinding ? this.getDataByValue(this.getFormattedValue(activeElement.getAttribute('data-value'))) : this.getFormattedValue(activeElement.getAttribute('data-value'));\n }\n else {\n this.updateSelectedItem(activeElement, null, true);\n }\n }\n if (!this.isAndroidAutoFill(currentValue)) {\n this.setAutoFillSelection(currentValue, isHover);\n }\n }\n };\n ComboBox.prototype.isAndroidAutoFill = function (value) {\n if (Browser.isAndroid) {\n var currentPoints = this.getSelectionPoints();\n var prevEnd = this.prevSelectPoints.end;\n var curEnd = currentPoints.end;\n var prevStart = this.prevSelectPoints.start;\n var curStart = currentPoints.start;\n if (prevEnd !== 0 && ((prevEnd === value.length && prevStart === value.length) ||\n (prevStart > curStart && prevEnd > curEnd) || (prevEnd === curEnd && prevStart === curStart))) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n ComboBox.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n }\n if (this.isFiltering() && !isNullOrUndefined(e) && e.target === this.inputWrapper.clearButton) {\n this.searchLists(e);\n }\n };\n ComboBox.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n ComboBox.prototype.inlineSearch = function (e) {\n var isKeyNavigate = (e && (e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown'));\n var activeElement = isKeyNavigate ? this.liCollections[this.activeIndex] : this.getFocusElement();\n if (!isNullOrUndefined(activeElement)) {\n if (!isKeyNavigate) {\n var value = this.getFormattedValue(activeElement.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.activeIndex = !isNullOrUndefined(this.activeIndex) ? this.activeIndex : null;\n }\n this.preventAutoFill = this.inputElement.value === '' ? false : this.preventAutoFill;\n this.setAutoFill(activeElement, isKeyNavigate);\n }\n else if (this.inputElement.value === '') {\n this.activeIndex = null;\n if (!isNullOrUndefined(this.list)) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n var focusItem = this.list.querySelector('.' + dropDownListClasses.li);\n this.setHoverList(focusItem);\n }\n }\n else {\n this.activeIndex = null;\n this.removeSelection();\n if (this.liCollections && this.liCollections.length > 0 && !this.isCustomFilter) {\n this.removeFocus();\n }\n }\n };\n ComboBox.prototype.incrementalSearch = function (e) {\n this.showPopup(e);\n if (!isNullOrUndefined(this.listData)) {\n this.inlineSearch(e);\n e.preventDefault();\n }\n };\n ComboBox.prototype.setAutoFillSelection = function (currentValue, isKeyNavigate) {\n if (isKeyNavigate === void 0) { isKeyNavigate = false; }\n var selection = this.getSelectionPoints();\n var value = this.inputElement.value.substr(0, selection.start);\n if (value && (value.toLowerCase() === currentValue.substr(0, selection.start).toLowerCase())) {\n var inputValue = value + currentValue.substr(value.length, currentValue.length);\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(selection.start, this.inputElement.value.length);\n }\n else if (isKeyNavigate) {\n Input.setValue(currentValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(0, this.inputElement.value.length);\n }\n };\n ComboBox.prototype.getValueByText = function (text) {\n return _super.prototype.getValueByText.call(this, text, true, this.ignoreAccent);\n };\n ComboBox.prototype.unWireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur);\n EventHandler.remove(this.inputWrapper.container, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick);\n }\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'focus', this.targetFocus);\n if (!this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n }\n this.unBindCommonEvent();\n };\n ComboBox.prototype.setSelection = function (li, e) {\n _super.prototype.setSelection.call(this, li, e);\n if (!isNullOrUndefined(li) && !this.autofill && !this.isDropDownClick) {\n this.removeFocus();\n }\n };\n ComboBox.prototype.selectCurrentItem = function (e) {\n var li;\n if (this.isPopupOpen) {\n if (this.isSelected) {\n li = this.list.querySelector('.' + dropDownListClasses.selected);\n }\n else {\n li = this.list.querySelector('.' + dropDownListClasses.focus);\n }\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n }\n if (e.action === 'enter' && this.inputElement.value.trim() === '') {\n this.clearAll(e);\n }\n else if (this.isTyped && !this.isSelected && isNullOrUndefined(li)) {\n this.customValue(e);\n }\n this.hidePopup(e);\n };\n ComboBox.prototype.setHoverList = function (li) {\n this.removeSelection();\n if (this.isValidLI(li) && !li.classList.contains(dropDownListClasses.selected)) {\n this.removeFocus();\n li.classList.add(dropDownListClasses.focus);\n }\n };\n ComboBox.prototype.targetFocus = function (e) {\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = false;\n }\n this.onFocus(e);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n };\n ComboBox.prototype.dropDownClick = function (e) {\n e.preventDefault();\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.dropDownClick.call(this, e);\n };\n ComboBox.prototype.customValue = function (e) {\n var _this = this;\n var value = this.getValueByText(this.inputElement.value);\n if (!this.allowCustom && this.inputElement.value !== '') {\n var previousValue = this.previousValue;\n var currentValue = this.value;\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n this.setProperties({ value: value });\n if (isNullOrUndefined(this.value)) {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n var newValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.autofill && ((!this.allowObjectBinding && previousValue === this.value) || (this.allowObjectBinding && previousValue && this.isObjectInArray(previousValue, [this.value]))) && ((!this.allowObjectBinding && currentValue !== this.value) || (this.allowObjectBinding && currentValue && !this.isObjectInArray(currentValue, [this.value])))) {\n this.onChangeEvent(null);\n }\n }\n else if (this.inputElement.value.trim() !== '') {\n var previousValue_1 = this.value;\n if (isNullOrUndefined(value)) {\n var value_1 = this.inputElement.value === '' ? null : this.inputElement.value;\n // eslint-disable-next-line max-len\n var eventArgs = { text: value_1, item: {} };\n this.isObjectCustomValue = true;\n if (!this.initial) {\n this.trigger('customValueSpecifier', eventArgs, function (eventArgs) {\n _this.updateCustomValueCallback(value_1, eventArgs, previousValue_1, e);\n });\n }\n else {\n this.updateCustomValueCallback(value_1, eventArgs, previousValue_1);\n }\n }\n else {\n this.isSelectCustom = false;\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n this.setProperties({ value: value });\n if ((!this.allowObjectBinding && previousValue_1 !== this.value) || (this.allowObjectBinding && previousValue_1 && this.value && !this.isObjectInArray(previousValue_1, [this.value]))) {\n this.onChangeEvent(e);\n }\n }\n }\n else if (this.allowCustom) {\n this.isSelectCustom = true;\n }\n };\n ComboBox.prototype.updateCustomValueCallback = function (value, eventArgs, previousValue, e) {\n var _this = this;\n var fields = this.fields;\n var item = eventArgs.item;\n var dataItem = {};\n if (item && getValue(fields.text, item) && getValue(fields.value, item)) {\n dataItem = item;\n }\n else {\n setValue(fields.text, value, dataItem);\n setValue(fields.value, value, dataItem);\n }\n this.itemData = dataItem;\n var emptyObject = {};\n if (this.allowObjectBinding) {\n var keys = this.listData && this.listData.length > 0 ? Object.keys(this.listData[0]) : Object.keys(this.itemData);\n if ((!(this.listData && this.listData.length > 0)) && (this.getModuleName() === 'autocomplete' || (this.getModuleName() === 'combobox' && this.allowFiltering))) {\n keys = this.firstItem ? Object.keys(this.firstItem) : Object.keys(this.itemData);\n }\n // Create an empty object with predefined keys\n keys.forEach(function (key) {\n emptyObject[key] = ((key === fields.value) || (key === fields.text)) ? getValue(fields.value, _this.itemData) : null;\n });\n }\n var changeData = {\n text: getValue(fields.text, this.itemData),\n value: this.allowObjectBinding ? emptyObject : getValue(fields.value, this.itemData),\n index: null\n };\n this.setProperties(changeData, true);\n this.setSelection(null, null);\n this.isSelectCustom = true;\n this.isObjectCustomValue = false;\n if ((!this.allowObjectBinding && (previousValue !== this.value)) || (this.allowObjectBinding && ((previousValue == null && this.value !== null) || (previousValue && !this.isObjectInArray(previousValue, [this.value]))))) {\n this.onChangeEvent(e, true);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {ComboBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {ComboBoxModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n ComboBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'combobox') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp, oldProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n if (this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n }\n else {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n }\n this.setReadOnly();\n break;\n case 'allowFiltering':\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n break;\n case 'allowCustom':\n break;\n default: {\n // eslint-disable-next-line max-len\n var comboProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, comboProps.newProperty, comboProps.oldProperty);\n if (this.isFiltering() && prop === 'dataSource' && isNullOrUndefined(this.list) && this.itemTemplate &&\n this.getModuleName() === 'combobox') {\n _super.prototype.renderList.call(this);\n }\n break;\n }\n }\n }\n };\n /**\n * To initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.render = function () {\n _super.prototype.render.call(this);\n this.setSearchBox();\n 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 var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (isNullOrUndefined(this.listData) && this.allowCustom && !isNullOrUndefined(inputValue) && inputValue !== value) {\n this.customValue();\n }\n _super.prototype.hidePopup.call(this, e);\n };\n /**\n * Sets the focus to the component for interaction.\n *\n * @returns {void}\n */\n ComboBox.prototype.focusIn = function () {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.focusIn.call(this);\n };\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.clear = function () {\n this.value = null;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.focusOut.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n\n */\n ComboBox.prototype.getItems = function () {\n return _super.prototype.getItems.call(this);\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n\n */\n ComboBox.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n ComboBox.prototype.renderHightSearch = function () {\n // update high light search\n };\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"autofill\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"allowCustom\", void 0);\n __decorate([\n Property({})\n ], ComboBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"index\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"enableRtl\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"customValueSpecifier\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property('Never')\n ], ComboBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], ComboBox.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"allowObjectBinding\", void 0);\n ComboBox = __decorate([\n NotifyPropertyChanges\n ], ComboBox);\n return ComboBox;\n}(DropDownList));\nexport { ComboBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { Property, EventHandler, isNullOrUndefined, detach, getValue } from '@syncfusion/ej2-base';\nimport { Event, Complex } from '@syncfusion/ej2-base';\nimport { removeClass, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { ComboBox } from '../combo-box/combo-box';\nimport { highlightSearch, revertHighlightSearch } from '../common/highlight-search';\nimport { Search } from '../common/incremental-search';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\ndropDownListClasses.root = 'e-autocomplete';\ndropDownListClasses.icon = 'e-input-group-icon e-ddl-icon e-search-icon';\n/**\n * The AutoComplete component provides the matched suggestion list when type into the input,\n * from which the user can select one.\n * ```html\n * \n * ```\n * ```typescript\n * let atcObj:AutoComplete = new AutoComplete();\n * atcObj.appendTo(\"#list\");\n * ```\n */\nvar AutoComplete = /** @class */ (function (_super) {\n __extends(AutoComplete, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {AutoCompleteModel} options - Specifies the AutoComplete model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function AutoComplete(options, element) {\n var _this_1 = _super.call(this, options, element) || this;\n _this_1.isFiltered = false;\n _this_1.searchList = false;\n return _this_1;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n AutoComplete.prototype.getLocaleName = function () {\n return 'auto-complete';\n };\n AutoComplete.prototype.getNgDirective = function () {\n return 'EJS-AUTOCOMPLETE';\n };\n AutoComplete.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var filterType = (this.queryString === '' && !isNullOrUndefined(value)) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(value)) ? value : this.queryString;\n if (this.isFiltered) {\n 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 if ((!this.enableVirtualization) || (this.enableVirtualization && (!(this.dataSource instanceof DataManager) || (this.dataSource instanceof DataManager && this.virtualGroupDataSource)))) {\n var mapping = !isNullOrUndefined(this.fields.value) ? this.fields.value : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount) && !this.enableVirtualization) {\n // Since defualt value of suggestioncount is 20, checked the condition\n if (this.suggestionCount !== 20) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n if (this.enableVirtualization && (!(this.dataSource instanceof DataManager) || (this.dataSource instanceof DataManager && this.virtualGroupDataSource))) {\n var queryTakeValue = 0;\n var querySkipValue = 0;\n if (this.query && this.query.queries.length > 0) {\n for (var queryElements = 0; queryElements < this.query.queries.length; queryElements++) {\n if (this.query.queries[queryElements].fn === 'onSkip') {\n querySkipValue = this.query.queries[queryElements].e.nos;\n }\n if (this.query.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= this.query.queries[queryElements].e.nos ? this.query.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n var skipExists = false;\n var takeExists = false;\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n skipExists = true;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n takeExists = true;\n filterQuery.queries[queryElements].e.nos = filterQuery.queries[queryElements].e.nos <= queryTakeValue ? queryTakeValue : filterQuery.queries[queryElements].e.nos;\n }\n }\n }\n var takeValue = this.getTakeValue();\n if (!skipExists) {\n if (querySkipValue > 0 && this.virtualItemStartIndex <= querySkipValue) {\n filterQuery.skip(querySkipValue);\n }\n else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n }\n if (!takeExists) {\n if (queryTakeValue > 0 && takeValue <= queryTakeValue) {\n filterQuery.take(queryTakeValue);\n }\n else {\n filterQuery.take(takeValue);\n }\n }\n filterQuery.requiresCount();\n }\n return filterQuery;\n };\n AutoComplete.prototype.searchLists = function (e) {\n var _this_1 = this;\n this.isTyped = true;\n this.isDataFetched = this.isSelectCustom = false;\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n this.checkAndResetCache();\n if (isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this, e, true);\n }\n this.queryString = this.filterInput.value;\n if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields, null, e);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this_1.isFiltered = true;\n _this_1.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this_1.isFiltered && !eventArgs.preventDefaultAction) {\n _this_1.searchList = true;\n _this_1.filterAction(_this_1.dataSource, null, _this_1.fields, e);\n }\n });\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n AutoComplete.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.filterAction(dataSource, query, fields);\n };\n AutoComplete.prototype.filterAction = function (dataSource, query, fields, e) {\n this.beforePopupOpen = true;\n var isNoDataElement = this.list.classList.contains('e-nodata');\n if (this.queryString !== '' && (this.queryString.length >= this.minLength)) {\n if (this.enableVirtualization && this.isFiltering() && this.isTyped) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n this.resetList(dataSource, fields, query, e);\n if (this.enableVirtualization && isNoDataElement && !this.list.classList.contains('e-nodata')) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n if ((this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount != 0)) {\n this.getFilteringSkeletonCount();\n }\n }\n else {\n this.hidePopup(e);\n this.beforePopupOpen = false;\n }\n this.renderReactTemplates();\n };\n AutoComplete.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n this.checkAndResetCache();\n }\n if (this.beforePopupOpen) {\n this.hidePopup();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n if (!this.enableVirtualization) {\n this.fixedHeaderElement = null;\n }\n if ((this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount != 0)) {\n this.getFilteringSkeletonCount();\n }\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n var item = this.list.querySelector('.' + dropDownListClasses.li);\n if (!isNullOrUndefined(item)) {\n removeClass([item], dropDownListClasses.focus);\n }\n this.postBackAction();\n };\n AutoComplete.prototype.postBackAction = function () {\n if (this.autofill && !isNullOrUndefined(this.liCollections[0]) && this.searchList) {\n var items = [this.liCollections[0]];\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, items, 'StartsWith', this.ignoreCase, dataSource, this.fields, type);\n this.searchList = false;\n if (!isNullOrUndefined(searchItem.item)) {\n _super.prototype.setAutoFill.call(this, this.liCollections[0], true);\n }\n }\n };\n AutoComplete.prototype.setSelection = function (li, e) {\n if (!this.isValidLI(li)) {\n this.selectedLI = li;\n return;\n }\n if (!isNullOrUndefined(e) && e.type === 'keydown' && e.action !== 'enter'\n && e.action !== 'tab' && this.isValidLI(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.setHoverList(li);\n this.selectedLI = li;\n this.setScrollPosition(e);\n if (this.autofill && this.isPopupOpen) {\n this.preventAutoFill = false;\n var isKeyNavigate = (e && e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown');\n _super.prototype.setAutoFill.call(this, li, isKeyNavigate);\n }\n }\n else {\n _super.prototype.setSelection.call(this, li, e);\n }\n };\n AutoComplete.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this_1 = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n if (_this_1.element.tagName === _this_1.getNgDirective() && _this_1.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }, 0);\n }\n else {\n var isHtmlElement = /<[^>]*>/g.test(e.item.innerText);\n if (isHtmlElement) {\n e.item.innerText = e.item.innerText.replace(/[\\u00A0-\\u9999<>&]/g, function (match) { return \"&#\" + match.charCodeAt(0) + \";\"; });\n }\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n itemCreated_1.apply(_this_1, [e]);\n };\n }\n return fields;\n };\n AutoComplete.prototype.isFiltering = function () {\n return true;\n };\n AutoComplete.prototype.renderPopup = function (e) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n _super.prototype.renderPopup.call(this, e);\n };\n AutoComplete.prototype.isEditTextBox = function () {\n return false;\n };\n AutoComplete.prototype.isPopupButton = function () {\n return this.showPopupButton;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.isSelectFocusItem = function (element) {\n return false;\n };\n AutoComplete.prototype.setInputValue = function (newProp, oldProp) {\n var oldValue = oldProp && oldProp.text ? oldProp.text : oldProp ? oldProp.value : oldProp;\n var value = newProp && newProp.text ? newProp.text : newProp && newProp.value ? newProp.value : this.value;\n if (this.allowObjectBinding) {\n oldValue = !isNullOrUndefined(oldValue) ? getValue((this.fields.value) ? this.fields.value : '', oldValue) : oldValue;\n value = !isNullOrUndefined(value) ? getValue((this.fields.value) ? this.fields.value : '', value) : value;\n }\n if (value && this.typedString === '' && !this.allowCustom && !(this.dataSource instanceof DataManager)) {\n var checkFields_1_1 = this.typeOfData(this.dataSource).typeof === 'string' ? '' : this.fields.value;\n var listLength_1 = this.getItems().length;\n var query = new Query();\n var _this_2 = this;\n new DataManager(this.dataSource).executeQuery(query.where(new Predicate(checkFields_1_1, 'equal', value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this_2.value = checkFields_1_1 !== '' ? _this_2.allowObjectBinding ? e.result[0] : e.result[0][_this_2.fields.value].toString() : e.result[0].toString();\n _this_2.addItem(e.result, listLength_1);\n _this_2.updateValues();\n }\n else {\n newProp && newProp.text ? _this_2.setOldText(oldValue) : newProp && newProp.value ? _this_2.setOldValue(oldValue) : _this_2.updateValues();\n }\n });\n }\n else if (newProp) {\n newProp.text ? this.setOldText(oldValue) : this.setOldValue(oldValue);\n }\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @returns {void}\n\n */\n AutoComplete.prototype.showPopup = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n this.preventAutoFill = true;\n if (isNullOrUndefined(this.list)) {\n this.renderList(e);\n }\n else {\n this.resetList(this.dataSource, this.fields, null, e);\n }\n };\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n */\n AutoComplete.prototype.hidePopup = function (e) {\n _super.prototype.hidePopup.call(this, e);\n this.activeIndex = null;\n this.virtualListInfo = this.viewPortInfo;\n this.previousStartIndex = this.viewPortInfo.startIndex;\n this.startIndex = this.viewPortInfo.startIndex;\n this.previousEndIndex = this.viewPortInfo.endIndex;\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {AutoCompleteModel} newProp - Returns the dynamic property value of the component.\n * @param {AutoCompleteModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'autocomplete') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'showPopupButton':\n if (this.showPopupButton) {\n var button = Input.appendSpan(dropDownListClasses.icon, this.inputWrapper.container, this.createElement);\n this.inputWrapper.buttons[0] = button;\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (this.inputWrapper && this.inputWrapper.buttons && this.inputWrapper.buttons[0]) {\n EventHandler.add(this.inputWrapper.buttons[0], 'click', this.dropDownClick, this);\n }\n }\n else {\n detach(this.inputWrapper.buttons[0]);\n this.inputWrapper.buttons[0] = null;\n }\n break;\n default: {\n // eslint-disable-next-line max-len\n var atcProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, atcProps.newProperty, atcProps.oldProperty);\n break;\n }\n }\n }\n };\n AutoComplete.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n }\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { EventHandler, Property, Internationalization, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Animation, Browser } from '@syncfusion/ej2-base';\nimport { cldrData, L10n, Component, getDefaultDateObject, rippleEffect, Event } from '@syncfusion/ej2-base';\nimport { remove, addClass, detach, removeClass, closest, append, attributes, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, getValue, extend, getUniqueID, ChildProperty } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { ListBase } from '@syncfusion/ej2-lists';\nvar WRAPPERCLASS = 'e-time-wrapper';\nvar POPUP = 'e-popup';\nvar ERROR = 'e-error';\nvar POPUPDIMENSION = '240px';\nvar DAY = new Date().getDate();\nvar MONTH = new Date().getMonth();\nvar YEAR = new Date().getFullYear();\nvar ROOT = 'e-timepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar CONTENT = 'e-content';\nvar SELECTED = 'e-active';\nvar HOVER = 'e-hover';\nvar NAVIGATION = 'e-navigation';\nvar DISABLED = 'e-disabled';\nvar ICONANIMATION = 'e-icon-anim';\nvar TIMEICON = 'e-time-icon';\nvar CLEARICON = 'e-clear-icon';\nvar FOCUS = 'e-input-focus';\nvar LISTCLASS = 'e-list-item';\nvar HALFPOSITION = 2;\nvar ANIMATIONDURATION = 50;\nvar OVERFLOW = 'e-time-overflow';\nvar OFFSETVAL = 4;\nvar EDITABLE = 'e-non-edit';\nvar wrapperAttributes = ['title', 'class', 'style'];\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var TimePickerBase;\n(function (TimePickerBase) {\n // eslint-disable-next-line max-len, jsdoc/require-jsdoc\n function createListItems(createdEl, min, max, globalize, timeFormat, step) {\n var formatOptions;\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: timeFormat, type: 'time' };\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatOptions = { format: timeFormat, type: 'time', calendar: 'islamic' };\n }\n var start;\n var interval = step * 60000;\n var listItems = [];\n var timeCollections = [];\n start = +(min.setMilliseconds(0));\n var end = +(max.setMilliseconds(0));\n while (end >= start) {\n timeCollections.push(start);\n listItems.push(globalize.formatDate(new Date(start), { format: timeFormat, type: 'time' }));\n start += interval;\n }\n var listTag = ListBase.createList(createdEl, listItems, null, true);\n return { collection: timeCollections, list: listTag };\n }\n TimePickerBase.createListItems = createListItems;\n})(TimePickerBase || (TimePickerBase = {}));\nvar TimeMaskPlaceholder = /** @class */ (function (_super) {\n __extends(TimeMaskPlaceholder, _super);\n function TimeMaskPlaceholder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('day')\n ], TimeMaskPlaceholder.prototype, \"day\", void 0);\n __decorate([\n Property('month')\n ], TimeMaskPlaceholder.prototype, \"month\", void 0);\n __decorate([\n Property('year')\n ], TimeMaskPlaceholder.prototype, \"year\", void 0);\n __decorate([\n Property('day of the week')\n ], TimeMaskPlaceholder.prototype, \"dayOfTheWeek\", void 0);\n __decorate([\n Property('hour')\n ], TimeMaskPlaceholder.prototype, \"hour\", void 0);\n __decorate([\n Property('minute')\n ], TimeMaskPlaceholder.prototype, \"minute\", void 0);\n __decorate([\n Property('second')\n ], TimeMaskPlaceholder.prototype, \"second\", void 0);\n return TimeMaskPlaceholder;\n}(ChildProperty));\nexport { TimeMaskPlaceholder };\n/**\n * TimePicker is an intuitive interface component which provides an options to select a time value\n * from popup list or to set a desired time value.\n * ```\n * \n * \n * ```\n */\nvar TimePicker = /** @class */ (function (_super) {\n __extends(TimePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {TimePickerModel} options - Specifies the TimePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function TimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.liCollections = [];\n _this.timeCollections = [];\n _this.disableItemCollection = [];\n _this.invalidValueString = null;\n _this.isAngular = false;\n _this.preventChange = false;\n _this.maskedDateValue = '';\n _this.moduleName = _this.getModuleName();\n _this.timeOptions = options;\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n TimePicker.prototype.preRender = function () {\n this.keyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [ROOT, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.angularTag = null;\n this.formElement = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n this.angularTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n this.openPopupEventArgs = {\n appendTo: document.body\n };\n };\n // element creation\n TimePicker.prototype.render = function () {\n this.initialize();\n this.createInputElement();\n this.updateHtmlAttributeToWrapper();\n this.setTimeAllowEdit();\n this.setEnable();\n this.validateInterval();\n this.bindEvents();\n this.validateDisable();\n this.setTimeZone();\n this.setValue(this.getFormattedValue(this.value));\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.checkErrorState(this.maskedDateValue);\n }\n this.anchor = this.inputElement;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.inputEleValue = this.getDateObject(this.inputElement.value);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n };\n TimePicker.prototype.setTimeZone = function () {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var serverTimezoneDiff = this.serverTimezoneOffset;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date((this.value).getTime() + (timeZoneDiff * 60 * 60 * 1000));\n }\n };\n TimePicker.prototype.isDayLightSaving = function () {\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n TimePicker.prototype.setTimeAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.clearIconState();\n };\n TimePicker.prototype.clearIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n else {\n addClass([this.inputWrapper.container], [EDITABLE]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n };\n TimePicker.prototype.validateDisable = function () {\n this.setMinMax(this.initMin, this.initMax);\n if (!isNullOrUndefined(this.value)) {\n this.popupCreation();\n this.popupObj.destroy();\n this.popupWrapper = this.popupObj = null;\n }\n if ((!isNaN(+this.value) && this.value !== null)) {\n if (!this.valueIsDisable(this.value)) {\n //disable value given in value property so reset the date based on current date\n if (this.strictMode) {\n this.resetState();\n }\n this.initValue = null;\n this.initMax = this.getDateObject(this.initMax);\n this.initMin = this.getDateObject(this.initMin);\n this.timeCollections = this.liCollections = [];\n this.setMinMax(this.initMin, this.initMax);\n }\n }\n };\n TimePicker.prototype.validationAttribute = function (target, input) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n input.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attributes[i]))) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n input.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n TimePicker.prototype.initialize = function () {\n this.globalize = new Internationalization(this.locale);\n this.defaultCulture = new Internationalization('en');\n this.checkTimeFormat();\n this.checkInvalidValue(this.value);\n // persist the value property.\n this.setProperties({ value: this.checkDateValue(new Date(this.checkInValue(this.value))) }, true);\n this.setProperties({ min: this.checkDateValue(new Date(this.checkInValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkInValue(this.max))) }, true);\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(this.scrollTo))) }, true);\n if (this.angularTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n this.checkAttributes(false); //check the input element attributes\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('timepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n this.initValue = this.checkDateValue(this.value);\n this.initMin = this.checkDateValue(this.min);\n this.initMax = this.checkDateValue(this.max);\n this.isNavigate = this.isPreventBlur = this.isTextSelected = false;\n this.activeIndex = this.valueWithMinutes = this.prevDate = null;\n if (!isNullOrUndefined(this.element.getAttribute('id'))) {\n if (this.angularTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n //for angular case\n this.element.id = getUniqueID('ej2_timepicker');\n if (this.angularTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n attributes(this.inputElement, { 'name': this.element.id });\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n };\n TimePicker.prototype.checkTimeFormat = function () {\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (!isNullOrUndefined(this.format.skeleton) && this.format.skeleton !== '') {\n var skeletonString = this.format.skeleton;\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: skeletonString });\n }\n else {\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: 'short' });\n }\n }\n else {\n this.formatString = null;\n }\n };\n TimePicker.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n TimePicker.prototype.createInputElement = function () {\n if (this.fullScreenMode && Browser.isDevice) {\n this.cssClass += ' ' + \"e-popup-expand\";\n }\n var updatedCssClassesValue = this.cssClass;\n var isBindClearAction = this.enableMask ? false : true;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassesValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n bindClearAction: isBindClearAction,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassesValue,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [' e-input-group-icon e-time-icon e-icons']\n }, this.createElement);\n this.inputWrapper.container.style.width = this.setWidth(this.width);\n attributes(this.inputElement, {\n 'aria-autocomplete': 'list', 'tabindex': '0',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-disabled': 'false', 'aria-invalid': 'false'\n });\n if (!this.isNullOrEmpty(this.inputStyle)) {\n Input.addAttributes({ 'style': this.inputStyle }, this.inputElement);\n }\n addClass([this.inputWrapper.container], WRAPPERCLASS);\n };\n TimePicker.prototype.getCldrDateTimeFormat = function () {\n var culture = new Internationalization(this.locale);\n var cldrTime;\n var dateFormat = culture.getDatePattern({ skeleton: 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.cldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.checkInvalidValue = function (value) {\n var isInvalid = false;\n if (typeof value !== 'object' && !isNullOrUndefined(value)) {\n var valueString = value;\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n var valueExpression = null;\n var valueExp = null;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n else if (typeof value === 'string') {\n if (!(/^[a-zA-Z0-9- ]*$/).test(value)) {\n valueExpression = this.setCurrentDate(this.getDateObject(value));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n }));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.formatString, type: 'dateTime', skeleton: 'yMd'\n }));\n }\n }\n }\n }\n valueExp = this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n });\n valueExpression = (!isNullOrUndefined(valueExp) && valueExp instanceof Date && !isNaN(+valueExp)) ? valueExp : null;\n if (isNullOrUndefined(valueExpression) && valueString.replace(/\\s/g, '').length) {\n var extISOString = null;\n var basicISOString = null;\n // eslint-disable-next-line\n extISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // eslint-disable-next-line\n basicISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || ((/^[a-zA-Z0-9- ]*$/).test(value)) || isNaN(+new Date('' + valueString))) {\n isInvalid = true;\n }\n else {\n valueExpression = new Date('' + valueString);\n }\n }\n if (isInvalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n this.initValue = null;\n }\n else {\n this.setProperties({ value: valueExpression }, true);\n this.initValue = this.value;\n }\n }\n };\n TimePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableMask) {\n modules.push({ args: [this], member: 'MaskedDateTime' });\n }\n return modules;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimePicker.prototype.cldrFormat = function (type) {\n var cldrDateTimeString;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTimeString = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTimeString = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTimeString;\n };\n // destroy function\n TimePicker.prototype.destroy = function () {\n this.hide();\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n this.unBindEvents();\n var ariaAttribute = {\n 'aria-autocomplete': 'list', 'tabindex': '0',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-disabled': 'true', 'aria-invalid': 'false'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n if (this.angularTag === null) {\n this.inputWrapper.container.parentElement.appendChild(this.inputElement);\n }\n if (!isNullOrUndefined(this.cloneElement.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n this.ensureInputAttribute();\n this.enableElement([this.inputElement]);\n this.inputElement.classList.remove('e-input');\n if (isNullOrUndefined(this.cloneElement.getAttribute('disabled'))) {\n Input.setEnabled(true, this.inputElement, this.floatLabelType);\n }\n }\n if (this.inputWrapper.container) {\n detach(this.inputWrapper.container);\n }\n this.inputWrapper = this.popupWrapper = this.cloneElement = undefined;\n this.liCollections = this.timeCollections = this.disableItemCollection = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n Input.destroy({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n _super.prototype.destroy.call(this);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n this.rippleFn = null;\n this.openPopupEventArgs = null;\n this.selectedElement = null;\n this.listTag = null;\n this.liCollections = null;\n };\n TimePicker.prototype.ensureInputAttribute = function () {\n var propertyList = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n propertyList[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < propertyList.length; i++) {\n if (!isNullOrUndefined(this.cloneElement.getAttribute(propertyList[i]))) {\n this.inputElement.setAttribute(propertyList[i], this.cloneElement.getAttribute(propertyList[i]));\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = this.cloneElement.getAttribute(propertyList[i]);\n }\n }\n else {\n this.inputElement.removeAttribute(propertyList[i]);\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n }\n }\n };\n //popup creation\n TimePicker.prototype.popupCreation = function () {\n this.popupWrapper = this.createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_popup', 'style': 'visibility:hidden' }\n });\n this.popupWrapper.setAttribute('aria-label', this.element.id);\n this.popupWrapper.setAttribute('role', 'dialog');\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.generateList();\n append([this.listWrapper], this.popupWrapper);\n }\n this.addSelection();\n this.renderPopup();\n detach(this.popupWrapper);\n };\n TimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.popupWrapper.getBoundingClientRect().height;\n return popupHeight > height ? height : popupHeight;\n };\n TimePicker.prototype.generateList = function () {\n this.createListItems();\n this.wireListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n };\n TimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.setPopupWidth(this.width),\n zIndex: this.zIndex,\n targetType: 'relative',\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n enableRtl: this.enableRtl,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n offsetY: OFFSETVAL,\n open: function () {\n _this.popupWrapper.style.visibility = 'visible';\n addClass([_this.inputWrapper.buttons[0]], SELECTED);\n }, close: function () {\n removeClass([_this.inputWrapper.buttons[0]], SELECTED);\n _this.unWireListEvents();\n _this.inputElement.removeAttribute('aria-activedescendant');\n remove(_this.popupObj.element);\n _this.popupObj.destroy();\n _this.popupWrapper.innerHTML = '';\n _this.listWrapper = _this.popupWrapper = _this.listTag = undefined;\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (!Browser.isDevice) {\n this.popupObj.collision = { X: 'none', Y: 'flip' };\n }\n if (Browser.isDevice && this.fullScreenMode) {\n this.popupObj.element.style.maxHeight = \"100%\";\n this.popupObj.element.style.width = \"100%\";\n }\n else {\n this.popupObj.element.style.maxHeight = POPUPDIMENSION;\n }\n if (Browser.isDevice && this.fullScreenMode) {\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var modelTitleSpan = this.createElement(\"span\", { className: \"e-model-title\" });\n modelTitleSpan.textContent = \"Select time\";\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.timePopupCloseHandler, this);\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n this.popupWrapper.insertBefore(modelHeader, this.popupWrapper.firstElementChild);\n }\n };\n TimePicker.prototype.timePopupCloseHandler = function (e) {\n this.hide();\n };\n //util function\n TimePicker.prototype.getFormattedValue = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { skeleton: 'medium', type: 'time' });\n }\n };\n TimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = !this.isNullOrEmpty(this.initValue);\n if (this.checkDateValue(dateValue)) {\n var date = value ? this.initValue.getDate() : DAY;\n var month = value ? this.initValue.getMonth() : MONTH;\n var year = value ? this.initValue.getFullYear() : YEAR;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds());\n }\n }\n return null;\n };\n TimePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassesValue = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassesValue !== '') {\n addClass([this.inputWrapper.container], updatedClassesValue.split(' '));\n }\n }\n else if (key === 'style') {\n var timeStyle = this.inputWrapper.container.getAttribute(key);\n timeStyle = !isNullOrUndefined(timeStyle) ? (timeStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.inputWrapper.container.setAttribute(key, timeStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n TimePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n TimePicker.prototype.updateCssClass = function (cssClassNew, cssClassOld) {\n if (!isNullOrUndefined(cssClassOld)) {\n cssClassOld = (cssClassOld.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(cssClassNew)) {\n cssClassNew = (cssClassNew.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(cssClassNew, [this.inputWrapper.container], cssClassOld);\n if (this.popupWrapper) {\n Input.setCssClass(cssClassNew, [this.popupWrapper], cssClassOld);\n }\n };\n TimePicker.prototype.removeErrorClass = function () {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n };\n TimePicker.prototype.checkErrorState = function (val) {\n var value = this.getDateObject(val);\n if ((this.validateState(value) && !this.invalidValueString) ||\n (this.enableMask && this.inputElement.value === this.maskedDateValue)) {\n this.removeErrorClass();\n }\n else {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n };\n TimePicker.prototype.validateInterval = function () {\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.enableElement([this.inputWrapper.buttons[0]]);\n }\n else {\n this.disableTimeIcon();\n }\n };\n TimePicker.prototype.disableTimeIcon = function () {\n this.disableElement([this.inputWrapper.buttons[0]]);\n this.hide();\n };\n TimePicker.prototype.disableElement = function (element) {\n addClass(element, DISABLED);\n };\n TimePicker.prototype.enableElement = function (element) {\n removeClass(element, DISABLED);\n };\n TimePicker.prototype.selectInputText = function () {\n this.inputElement.setSelectionRange(0, (this.inputElement).value.length);\n };\n TimePicker.prototype.setCursorToEnd = function () {\n this.inputElement.setSelectionRange((this.inputElement).value.length, (this.inputElement).value.length);\n };\n TimePicker.prototype.getMeridianText = function () {\n var meridian;\n if (this.locale === 'en' || this.locale === 'en-US') {\n meridian = getValue('dayPeriods.format.wide', getDefaultDateObject());\n }\n else {\n var gregorianFormat = '.dates.calendars.gregorian.dayPeriods.format.abbreviated';\n var mainVal = 'main.';\n meridian = getValue(mainVal + '' + this.locale + gregorianFormat, cldrData);\n }\n return meridian;\n };\n TimePicker.prototype.getCursorSelection = function () {\n var input = (this.inputElement);\n var start = 0;\n var end = 0;\n if (!isNaN(input.selectionStart)) {\n start = input.selectionStart;\n end = input.selectionEnd;\n }\n return { start: Math.abs(start), end: Math.abs(end) };\n };\n TimePicker.prototype.getActiveElement = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n return this.popupWrapper.querySelectorAll('.' + SELECTED);\n }\n else {\n return null;\n }\n };\n TimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n TimePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n width = (width.match(/px|%|em/)) ? width : formatUnit(width);\n }\n else {\n width = '100%';\n }\n return width;\n };\n TimePicker.prototype.setPopupWidth = function (width) {\n width = this.setWidth(width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n TimePicker.prototype.setScrollPosition = function () {\n var element = this.selectedElement;\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else if (this.popupWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n TimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextEle = element.nextElementSibling;\n var height = nextEle ? nextEle.offsetTop : element.offsetTop;\n var liHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n this.popupWrapper.scrollTop = nextEle ? (height - (listHeight / HALFPOSITION + liHeight / HALFPOSITION)) : height;\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.setScrollTo = function () {\n var element;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n var initialTime = this.timeCollections[0];\n var scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.getText = function () {\n return (isNullOrUndefined(this.checkDateValue(this.value))) ? '' : this.getValue(this.value);\n };\n TimePicker.prototype.getValue = function (value) {\n return (isNullOrUndefined(this.checkDateValue(value))) ? null : this.globalize.formatDate(value, {\n format: this.cldrTimeFormat(), type: 'time'\n });\n };\n TimePicker.prototype.cldrDateFormat = function () {\n var cldrDate;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDate = (getValue('dateFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDate = (this.getCultureDateObject(cldrData, '' + this.locale));\n }\n return cldrDate;\n };\n TimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.formatString)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.dateToNumeric = function () {\n var cldrTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.medium', getDefaultDateObject()));\n }\n else {\n cldrTime = (getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.medium', cldrData));\n }\n return cldrTime;\n };\n TimePicker.prototype.getExactDateTime = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { format: this.dateToNumeric(), type: 'time' });\n }\n };\n TimePicker.prototype.setValue = function (value) {\n var time = this.checkValue(value);\n if (!this.strictMode && !this.validateState(time)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n if (this.isNullOrEmpty(time)) {\n this.initValue = null;\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.initValue = this.compareFormatChange(time);\n }\n }\n this.updateInput(true, this.initValue);\n };\n TimePicker.prototype.compareFormatChange = function (value) {\n if (isNullOrUndefined(value)) {\n return null;\n }\n return (value !== this.getText()) ? this.getDateObject(value) : this.getDateObject(this.value);\n };\n TimePicker.prototype.updatePlaceHolder = function () {\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n };\n //event related functions\n TimePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n TimePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n this.interopAdaptor.invokeMethodAsync('OnTimeIconClick');\n };\n TimePicker.prototype.popupHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n e.preventDefault();\n if (this.isPopupOpen()) {\n this.closePopup(0, e);\n }\n else {\n this.inputElement.focus();\n this.show(e);\n }\n };\n TimePicker.prototype.mouseDownHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.readonly) {\n this.inputElement.setSelectionRange(0, 0);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n }\n };\n TimePicker.prototype.mouseUpHandler = function (event) {\n if (!this.readonly) {\n event.preventDefault();\n if (this.enableMask) {\n event.preventDefault();\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n return;\n }\n else {\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n var curPos = this.getCursorSelection();\n if (!(curPos.start === 0 && curPos.end === this.inputElement.value.length)) {\n if (this.inputElement.value.length > 0) {\n this.cursorDetails = this.focusSelection();\n }\n this.inputElement.setSelectionRange(this.cursorDetails.start, this.cursorDetails.end);\n }\n }\n }\n };\n TimePicker.prototype.focusSelection = function () {\n var regex = new RegExp('^[a-zA-Z0-9]+$');\n var split = this.inputElement.value.split('');\n split.push(' ');\n var curPos = this.getCursorSelection();\n var start = 0;\n var end = 0;\n var isSeparator = false;\n if (!this.isTextSelected) {\n for (var i = 0; i < split.length; i++) {\n if (!regex.test(split[i])) {\n end = i;\n isSeparator = true;\n }\n if (isSeparator) {\n if (curPos.start >= start && curPos.end <= end) {\n // eslint-disable-next-line no-self-assign\n end = end;\n this.isTextSelected = true;\n break;\n }\n else {\n start = i + 1;\n isSeparator = false;\n }\n }\n }\n }\n else {\n start = curPos.start;\n end = curPos.end;\n this.isTextSelected = false;\n }\n return { start: start, end: end };\n };\n TimePicker.prototype.inputHandler = function (event) {\n if (!this.readonly && this.enabled) {\n if (!((event.action == 'right' || event.action == 'left' || event.action == 'tab') || ((event.action == 'home' || event.action == 'end' || event.action == 'up' || event.action == 'down') && !this.isPopupOpen() && !this.enableMask))) {\n event.preventDefault();\n }\n switch (event.action) {\n case 'home':\n case 'end':\n case 'up':\n case 'down':\n if (!this.isPopupOpen()) {\n this.popupCreation();\n this.popupObj.destroy();\n this.popupObj = this.popupWrapper = null;\n }\n if (this.enableMask && !this.readonly && !this.isPopupOpen()) {\n event.preventDefault();\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: event\n });\n }\n if (this.isPopupOpen()) {\n this.keyHandler(event);\n }\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.updateValue(this.valueWithMinutes, event);\n }\n else {\n this.updateValue(this.inputElement.value, event);\n }\n this.hide();\n this.isNavigate = false;\n if (this.isPopupOpen()) {\n event.stopPropagation();\n }\n break;\n case 'open':\n this.show(event);\n break;\n case 'escape':\n this.updateInputValue(this.objToString(this.value));\n if (this.enableMask) {\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.createMask();\n }\n this.previousState(this.value);\n this.hide();\n break;\n case 'close':\n this.hide();\n break;\n case 'right':\n case 'left':\n case 'tab':\n case 'shiftTab':\n if (!this.isPopupOpen() && this.enableMask && !this.readonly) {\n if ((this.inputElement.selectionStart === 0 && this.inputElement.selectionEnd === this.inputElement.value.length) ||\n (this.inputElement.selectionEnd !== this.inputElement.value.length && event.action === 'tab') ||\n (this.inputElement.selectionStart !== 0 && event.action === 'shiftTab') || (event.action === 'left' || event.action === 'right')) {\n event.preventDefault();\n }\n this.notify('keyDownHandler', { module: 'MaskedDateTime',\n e: event\n });\n }\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n TimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n this.setSelection(li, event);\n if (li && li.classList.contains(LISTCLASS)) {\n this.hide();\n }\n };\n TimePicker.prototype.closePopup = function (delay, e) {\n var _this = this;\n if (this.isPopupOpen() && this.popupWrapper) {\n var args = {\n popup: this.popupObj,\n event: e || null,\n cancel: false,\n name: 'open'\n };\n removeClass([document.body], OVERFLOW);\n this.trigger('close', args, function (args) {\n if (!args.cancel) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: delay ? delay : 0\n };\n _this.popupObj.hide(new Animation(animModel));\n removeClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-controls');\n _this.inputElement.removeAttribute('aria-activedescendant');\n EventHandler.remove(document, 'mousedown touchstart', _this.documentClickHandler);\n }\n if (Browser.isDevice && _this.modal) {\n _this.modal.style.display = 'none';\n _this.modal.outerHTML = '';\n _this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(_this.mobileTimePopupWrap)) {\n _this.mobileTimePopupWrap.remove();\n _this.mobileTimePopupWrap = null;\n }\n }\n if (Browser.isDevice && _this.allowEdit && !_this.readonly) {\n _this.inputElement.removeAttribute('readonly');\n }\n });\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n TimePicker.prototype.disposeServerPopup = function () {\n if (this.popupWrapper) {\n this.popupWrapper.style.visibility = 'hidden';\n this.popupWrapper.style.top = '-9999px';\n this.popupWrapper.style.left = '-9999px';\n this.popupWrapper.style.width = '0px';\n this.popupWrapper.style.height = '0px';\n }\n };\n TimePicker.prototype.checkValueChange = function (event, isNavigation) {\n if (!this.strictMode && !this.validateState(this.valueWithMinutes)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.setProperties({ value: this.compareFormatChange(this.inputElement.value) }, true);\n this.initValue = this.valueWithMinutes = this.compareFormatChange(this.inputElement.value);\n this.prevValue = this.inputElement.value;\n if (+this.prevDate !== +this.value) {\n this.changeEvent(event);\n }\n }\n else {\n if (!isNavigation) {\n if ((this.prevValue !== this.inputElement.value) || isNullOrUndefined(this.checkDateValue(this.value))) {\n this.valueProcess(event, this.compareFormatChange(this.inputElement.value));\n }\n }\n else {\n var value = this.getDateObject(new Date(this.timeCollections[this.activeIndex]));\n if (+this.prevDate !== +value) {\n this.valueProcess(event, value);\n }\n }\n }\n };\n TimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setHover(currentLi, HOVER);\n };\n TimePicker.prototype.setHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeHover(className);\n addClass([li], className);\n if (className === NAVIGATION) {\n li.setAttribute('aria-selected', 'true');\n }\n }\n };\n TimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li)) {\n this.checkValue(li.getAttribute('data-value'));\n if (this.enableMask) {\n this.createMask();\n }\n this.selectedElement = li;\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.checkValueChange(event, true);\n }\n };\n TimePicker.prototype.onMouseLeave = function () {\n this.removeHover(HOVER);\n };\n TimePicker.prototype.scrollHandler = function () {\n if (this.getModuleName() === 'timepicker' && Browser.isDevice) {\n return;\n }\n else {\n this.hide();\n }\n };\n TimePicker.prototype.setMinMax = function (minVal, maxVal) {\n if (isNullOrUndefined(this.checkDateValue(minVal))) {\n this.initMin = this.getDateObject('12:00:00 AM');\n }\n if (isNullOrUndefined(this.checkDateValue(maxVal))) {\n this.initMax = this.getDateObject('11:59:59 PM');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimePicker.prototype.validateMinMax = function (dateVal, minVal, maxVal) {\n var value = dateVal instanceof Date ? dateVal : this.getDateObject(dateVal);\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n dateVal = this.strictOperation(this.initMin, this.initMax, dateVal, value);\n }\n else if (+(this.createDateObj(this.getFormattedValue(this.initMin))) >\n +(this.createDateObj(this.getFormattedValue(this.initMax)))) {\n this.disableTimeIcon();\n }\n if (this.strictMode) {\n dateVal = this.valueIsDisable(dateVal) ? dateVal : null;\n }\n this.checkErrorState(dateVal);\n return dateVal;\n };\n TimePicker.prototype.valueIsDisable = function (value) {\n if (this.disableItemCollection.length > 0) {\n if (this.disableItemCollection.length === this.timeCollections.length) {\n return false;\n }\n var time = value instanceof Date ? this.objToString(value) : value;\n for (var index = 0; index < this.disableItemCollection.length; index++) {\n if (time === this.disableItemCollection[index]) {\n return false;\n }\n }\n }\n return true;\n };\n TimePicker.prototype.validateState = function (val) {\n if (!this.strictMode) {\n if (this.valueIsDisable(val)) {\n var value = typeof val === 'string' ? this.setCurrentDate(this.getDateObject(val)) :\n this.setCurrentDate(this.getDateObject(val));\n var maxValue = this.setCurrentDate(this.getDateObject(this.initMax));\n var minValue = this.setCurrentDate(this.getDateObject(this.initMin));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n if ((+(value) > +(maxValue)) || (+(value) < +(minValue))) {\n return false;\n }\n }\n else {\n if ((+(maxValue) < +(minValue)) || this.inputElement.value !== '') {\n return false;\n }\n }\n }\n else {\n return false;\n }\n }\n return true;\n };\n TimePicker.prototype.strictOperation = function (minimum, maximum, dateVal, val) {\n var maxValue = this.createDateObj(this.getFormattedValue(maximum));\n var minValue = this.createDateObj(this.getFormattedValue(minimum));\n var value = this.createDateObj(this.getFormattedValue(val));\n if (this.strictMode) {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n this.initValue = this.getDateObject(maxValue);\n this.updateInputValue(this.getValue(this.initValue));\n if (this.enableMask) {\n this.createMask();\n }\n return this.inputElement.value;\n }\n else if (+minValue >= +value) {\n return this.getDateObject(minValue);\n }\n else if (+value >= +maxValue || +minValue === +maxValue) {\n return this.getDateObject(maxValue);\n }\n }\n else {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n if (!isNaN(+this.createDateObj(dateVal))) {\n return dateVal;\n }\n }\n }\n return dateVal;\n };\n TimePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.popupHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n EventHandler.add(this.inputElement, 'input', this.inputEventHandler, this);\n if (this.enableMask) {\n EventHandler.add(this.inputElement, 'keydown', this.keydownHandler, this);\n }\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyConfigure = extend(this.keyConfigure, this.keyConfigs);\n this.inputEvent = new KeyboardEvents(this.inputWrapper.container, {\n keyAction: this.inputHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n if (this.showClearButton && this.inputElement) {\n EventHandler.add(this.inputElement, 'mousedown', this.mouseDownHandler, this);\n }\n }\n };\n TimePicker.prototype.keydownHandler = function (e) {\n switch (e.code) {\n case 'Delete':\n if (this.enableMask && !this.popupObj && !this.readonly) {\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n }\n break;\n default:\n break;\n }\n };\n TimePicker.prototype.formResetHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var timeValue = this.inputElement.getAttribute('value');\n var val = this.checkDateValue(this.inputEleValue);\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n val = null;\n timeValue = '';\n this.inputElement.setAttribute('value', '');\n }\n this.setProperties({ value: val }, true);\n this.prevDate = this.value;\n this.valueWithMinutes = this.value;\n this.initValue = this.value;\n if (this.inputElement) {\n this.updateInputValue(timeValue);\n if (this.enableMask) {\n if (!timeValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.createMask();\n }\n this.checkErrorState(timeValue);\n this.prevValue = this.inputElement.value;\n }\n }\n };\n TimePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n TimePicker.prototype.inputEventHandler = function () {\n if (this.enableMask) {\n this.notify('inputHandler', {\n module: 'MaskedDateTime'\n });\n }\n };\n TimePicker.prototype.unBindEvents = function () {\n if (this.inputWrapper) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.popupHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n EventHandler.remove(this.inputElement, 'input', this.inputEventHandler);\n if (this.inputEvent) {\n this.inputEvent.destroy();\n }\n EventHandler.remove(this.inputElement, 'mousedown touchstart', this.mouseDownHandler);\n if (this.showClearButton && !isNullOrUndefined(this.inputWrapper) && !isNullOrUndefined(this.inputWrapper.clearButton)) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.clearHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n TimePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n };\n TimePicker.prototype.raiseClearedEvent = function (e) {\n var clearedArgs = {\n event: e\n };\n this.trigger('cleared', clearedArgs);\n };\n TimePicker.prototype.clearHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n if (!isNullOrUndefined(this.value)) {\n this.clear(e);\n }\n else {\n this.resetState();\n this.raiseClearedEvent(e);\n }\n if (this.popupWrapper) {\n this.popupWrapper.scrollTop = 0;\n }\n if (this.enableMask) {\n this.notify('clearHandler', {\n module: 'MaskedDateTime'\n });\n }\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n TimePicker.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.initValue = null;\n this.resetState();\n this.raiseClearedEvent(event);\n this.changeEvent(event);\n };\n TimePicker.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.zIndex = this.zIndex;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['step', 'disabled', 'readonly', 'style', 'name', 'value', 'min', 'max', 'placeholder'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'style':\n this.inputStyle = this.inputElement.getAttribute(prop);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.initValue = value;\n this.updateInput(false, this.initValue);\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n };\n TimePicker.prototype.setCurrentDate = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n return new Date(YEAR, MONTH, DAY, value.getHours(), value.getMinutes(), value.getSeconds());\n };\n TimePicker.prototype.getTextFormat = function () {\n var time = 0;\n if (this.cldrTimeFormat().split(' ')[0] === 'a' || this.cldrTimeFormat().indexOf('a') === 0) {\n time = 1;\n }\n else if (this.cldrTimeFormat().indexOf('a') < 0) {\n var strArray = this.cldrTimeFormat().split(' ');\n for (var i = 0; i < strArray.length; i++) {\n if (strArray[i].toLowerCase().indexOf('h') >= 0) {\n time = i;\n break;\n }\n }\n }\n return time;\n };\n TimePicker.prototype.updateValue = function (value, event) {\n var val;\n if (this.isNullOrEmpty(value)) {\n this.resetState();\n }\n else {\n val = this.checkValue(value);\n if (this.strictMode) {\n // this case set previous value to the text box when set invalid date\n var inputVal = (val === null && value.trim().length > 0) ?\n this.previousState(this.prevDate) : this.inputElement.value;\n this.updateInputValue(inputVal);\n if (this.enableMask) {\n if (!inputVal) {\n this.updateInputValue(this.maskedDateValue);\n }\n if (isNullOrUndefined(val) && value !== this.maskedDateValue) {\n this.createMask();\n }\n if (isNullOrUndefined(val) && value === this.maskedDateValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n }\n this.checkValueChange(event, typeof value === 'string' ? false : true);\n };\n TimePicker.prototype.previousState = function (date) {\n var value = this.getDateObject(date);\n for (var i = 0; i < this.timeCollections.length; i++) {\n if (+value === this.timeCollections[i]) {\n this.activeIndex = i;\n this.selectedElement = this.liCollections[i];\n this.valueWithMinutes = new Date(this.timeCollections[i]);\n break;\n }\n }\n return this.prevValue;\n };\n TimePicker.prototype.resetState = function () {\n this.removeSelection();\n Input.setValue('', this.inputElement, this.floatLabelType, false);\n this.valueWithMinutes = this.activeIndex = null;\n if (!this.strictMode) {\n this.checkErrorState(null);\n }\n };\n TimePicker.prototype.objToString = function (val) {\n if (isNullOrUndefined(this.checkDateValue(val))) {\n return null;\n }\n else {\n return this.globalize.formatDate(val, { format: this.cldrTimeFormat(), type: 'time' });\n }\n };\n TimePicker.prototype.checkValue = function (value) {\n if (!this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.validateValue(date, value);\n }\n this.resetState();\n return this.valueWithMinutes = null;\n };\n TimePicker.prototype.validateValue = function (date, value) {\n var time;\n var val = this.validateMinMax(value, this.min, this.max);\n var newval = this.getDateObject(val);\n if (this.getFormattedValue(newval) !== this.getFormattedValue(this.value)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = this.objToString(this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = this.objToString(this.valueWithMinutes);\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n var value_1 = val.trim().length > 0 ? val : '';\n this.updateInputValue(value_1);\n if (this.enableMask) {\n if (!value_1) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n else {\n this.updateInputValue(time);\n if (this.enableMask) {\n if (time === '') {\n this.updateInputValue(this.maskedDateValue);\n }\n if (isNullOrUndefined(time) && value !== this.maskedDateValue) {\n this.createMask();\n }\n if (isNullOrUndefined(time) && value === this.maskedDateValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n return time;\n };\n TimePicker.prototype.createMask = function () {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n };\n TimePicker.prototype.findNextElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var timeVal = null;\n var count = this.liCollections.length;\n var collections = this.timeCollections;\n if (!isNullOrUndefined(this.checkDateValue(value)) || !isNullOrUndefined(this.activeIndex)) {\n if (event.action === 'home') {\n var index = this.validLiElement(0);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(collections.length - 1, true);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < count; i++) {\n if (+value < this.timeCollections[i]) {\n var index = this.validLiElement(i);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n else if (i === count - 1) {\n var index = this.validLiElement(0);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n }\n }\n else {\n for (var i = count - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n var index = this.validLiElement(i, true);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n else if (i === 0) {\n var index = this.validLiElement(count - 1);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.elementValue(isNullOrUndefined(timeVal) ? null : new Date(timeVal));\n }\n else {\n this.selectNextItem(event);\n }\n };\n TimePicker.prototype.selectNextItem = function (event) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n this.elementValue(new Date(this.timeCollections[index]));\n };\n TimePicker.prototype.elementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.checkValue(value);\n }\n };\n TimePicker.prototype.validLiElement = function (index, backward) {\n var elementIndex = null;\n var items = isNullOrUndefined(this.popupWrapper) ? this.liCollections :\n this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n var isCheck = true;\n if (items.length) {\n if (backward) {\n for (var i = index; i >= 0; i--) {\n if (!items[i].classList.contains(DISABLED)) {\n elementIndex = i;\n break;\n }\n else if (i === 0) {\n if (isCheck) {\n index = i = items.length;\n isCheck = false;\n }\n }\n }\n }\n else {\n for (var i = index; i <= items.length - 1; i++) {\n if (!items[i].classList.contains(DISABLED)) {\n elementIndex = i;\n break;\n }\n else if (i === items.length - 1) {\n if (isCheck) {\n index = i = -1;\n isCheck = false;\n }\n }\n }\n }\n }\n return elementIndex;\n };\n TimePicker.prototype.keyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0 || !isNullOrUndefined(this.inputWrapper)\n && this.inputWrapper.buttons[0].classList.contains(DISABLED)) {\n return;\n }\n var count = this.timeCollections.length;\n if (isNullOrUndefined(this.getActiveElement()) || this.getActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n this.elementValue(new Date(this.timeCollections[index]));\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n var nextItem = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (count) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (count - 1) : this.activeIndex;\n this.activeIndex = index = this.validLiElement(this.activeIndex, (event.keyCode === 40 || event.keyCode === 39) ?\n false : true);\n nextItem = isNullOrUndefined(this.timeCollections[index]) ?\n this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n var index = this.validLiElement(0);\n this.activeIndex = index;\n nextItem = this.timeCollections[index];\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(count - 1, true);\n this.activeIndex = index;\n nextItem = this.timeCollections[index];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.elementValue(new Date(nextItem));\n }\n this.isNavigate = true;\n this.setHover(this.selectedElement, NAVIGATION);\n this.setActiveDescendant();\n if (this.enableMask) {\n this.selectInputText();\n }\n if (this.isPopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setScrollPosition();\n }\n };\n TimePicker.prototype.getCultureTimeObject = function (ld, c) {\n return getValue('main.' + c + '.dates.calendars.gregorian.timeFormats.short', ld);\n };\n TimePicker.prototype.getCultureDateObject = function (ld, c) {\n return getValue('main.' + c + '.dates.calendars.gregorian.dateFormats.short', ld);\n };\n TimePicker.prototype.wireListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n TimePicker.prototype.unWireListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n if (!Browser.isDevice) {\n EventHandler.remove(this.listWrapper, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.listWrapper, 'mouseout', this.onMouseLeave);\n }\n }\n };\n TimePicker.prototype.valueProcess = function (event, value) {\n var result = (isNullOrUndefined(this.checkDateValue(value))) ? null : value;\n if (+this.prevDate !== +result) {\n this.initValue = result;\n this.changeEvent(event);\n }\n };\n TimePicker.prototype.changeEvent = function (e) {\n this.addSelection();\n this.updateInput(true, this.initValue);\n var eventArgs = {\n event: (e || null),\n value: this.value,\n text: (this.inputElement).value,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n eventArgs.value = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n this.prevDate = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.invalidValueString = null;\n this.checkErrorState(this.value);\n };\n TimePicker.prototype.updateInput = function (isUpdate, date) {\n if (isUpdate) {\n this.prevValue = this.getValue(date);\n }\n this.prevDate = this.valueWithMinutes = date;\n if ((typeof date !== 'number') || (this.value && +new Date(+this.value).setMilliseconds(0)) !== +date) {\n this.setProperties({ value: date }, true);\n if (this.enableMask && this.value) {\n this.createMask();\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.checkErrorState(this.invalidValueString);\n this.updateInputValue(this.invalidValueString);\n }\n this.clearIconState();\n };\n TimePicker.prototype.setActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement) && this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n TimePicker.prototype.removeSelection = function () {\n this.removeHover(HOVER);\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + SELECTED);\n if (items.length) {\n removeClass(items, SELECTED);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.removeHover = function (className) {\n var hoveredItem = this.getHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n if (className === NAVIGATION) {\n hoveredItem[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.getHoverItem = function (className) {\n var hoveredItem;\n if (!isNullOrUndefined(this.popupWrapper)) {\n hoveredItem = this.popupWrapper.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n TimePicker.prototype.setActiveClass = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if ((this.timeCollections[i] === +this.getDateObject(this.valueWithMinutes))) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n };\n TimePicker.prototype.addSelection = function () {\n this.selectedElement = null;\n this.removeSelection();\n this.setActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n TimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n TimePicker.prototype.createDateObj = function (val) {\n var formatStr = null;\n var today = this.globalize.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n var value = null;\n if (typeof val === 'string') {\n if (val.toUpperCase().indexOf('AM') > -1 || val.toUpperCase().indexOf('PM') > -1) {\n today = this.defaultCulture.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n value = isNaN(+new Date(today + ' ' + val)) ? null : new Date(new Date(today + ' ' + val).setMilliseconds(0));\n if (isNullOrUndefined(value)) {\n value = this.timeParse(today, val);\n }\n }\n else {\n value = this.timeParse(today, val);\n }\n }\n else if (val instanceof Date) {\n value = val;\n }\n return value;\n };\n TimePicker.prototype.timeParse = function (today, val) {\n var value;\n value = this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.cldrTimeFormat(), type: 'datetime'\n });\n value = isNullOrUndefined(value) ? this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.dateToNumeric(), type: 'datetime'\n }) : value;\n value = isNullOrUndefined(value) ? value : new Date(value.setMilliseconds(0));\n return value;\n };\n TimePicker.prototype.createListItems = function () {\n var _this = this;\n this.listWrapper = this.createElement('div', { className: CONTENT, attrs: { 'tabindex': '-1' } });\n var start;\n var interval = this.step * 60000;\n var listItems = [];\n this.timeCollections = [];\n this.disableItemCollection = [];\n start = +(this.getDateObject(this.initMin).setMilliseconds(0));\n var end = +(this.getDateObject(this.initMax).setMilliseconds(0));\n while (end >= start) {\n this.timeCollections.push(start);\n listItems.push(this.globalize.formatDate(new Date(start), { format: this.cldrTimeFormat(), type: 'time' }));\n start += interval;\n }\n var listBaseOptions = {\n itemCreated: function (args) {\n var eventArgs = {\n element: args.item,\n text: args.text, value: _this.getDateObject(args.text), isDisabled: false\n };\n _this.trigger('itemRender', eventArgs, function (eventArgs) {\n if (eventArgs.isDisabled) {\n eventArgs.element.classList.add(DISABLED);\n }\n if (eventArgs.element.classList.contains(DISABLED)) {\n _this.disableItemCollection.push(eventArgs.element.getAttribute('data-value'));\n }\n });\n }\n };\n this.listTag = ListBase.createList(this.createElement, listItems, listBaseOptions, true);\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options', 'tabindex': '0' });\n append([this.listTag], this.listWrapper);\n };\n TimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObj) && !isNullOrUndefined(this.inputWrapper) && (this.inputWrapper.container.contains(target) && event.type !== 'mousedown' ||\n (this.popupObj.element && this.popupObj.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) && target !== this.inputElement\n && target !== (this.inputWrapper && this.inputWrapper.buttons[0]) &&\n target !== (this.inputWrapper && this.inputWrapper.clearButton) &&\n target !== (this.inputWrapper && this.inputWrapper.container)\n && (!target.classList.contains('e-dlg-overlay'))) {\n if (this.isPopupOpen()) {\n this.hide();\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement)\n && (target === this.popupWrapper);\n }\n }\n };\n TimePicker.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement, this.floatLabelType);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], DISABLED);\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hide();\n addClass([this.inputWrapper.container], DISABLED);\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.inputElement.tabIndex = -1;\n }\n };\n TimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.initMin = this.checkDateValue(new Date(this.checkInValue(date.min)));\n this.setProperties({ min: this.initMin }, true);\n }\n else {\n this.initMax = this.checkDateValue(new Date(this.checkInValue(date.max)));\n this.setProperties({ max: this.initMax }, true);\n }\n if (this.inputElement.value === '') {\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.checkValue(this.inputElement.value);\n }\n this.checkValueChange(null, false);\n };\n TimePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isPreventBlur && this.isPopupOpen()) {\n this.inputElement.focus();\n return;\n }\n this.closePopup(0, e);\n if (this.enableMask && this.maskedDateValue && this.placeholder && this.floatLabelType !== 'Always') {\n if (this.inputElement.value === this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue('');\n }\n }\n removeClass([this.inputWrapper.container], [FOCUS]);\n if (this.getText() !== this.inputElement.value) {\n this.updateValue((this.inputElement).value, e);\n }\n else if (this.inputElement.value.trim().length === 0) {\n this.resetState();\n }\n this.cursorDetails = null;\n this.isNavigate = false;\n if (this.inputElement.value === '') {\n this.invalidValueString = null;\n }\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n };\n /**\n * Focuses out the TimePicker textbox element.\n *\n * @returns {void}\n */\n TimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [FOCUS]);\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n };\n TimePicker.prototype.isPopupOpen = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + ROOT)) {\n return true;\n }\n return false;\n };\n TimePicker.prototype.inputFocusHandler = function () {\n if (!this.enabled) {\n return;\n }\n var focusArguments = {\n model: this\n };\n if (!this.readonly && !Browser.isDevice && !this.enableMask) {\n this.selectInputText();\n }\n if (this.enableMask && !this.inputElement.value && this.placeholder) {\n if (this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.inputElement.selectionStart = 0;\n this.inputElement.selectionEnd = this.inputElement.value.length;\n }\n }\n this.trigger('focus', focusArguments);\n this.clearIconState();\n if (this.openOnFocus) {\n this.show();\n }\n };\n /**\n * Focused the TimePicker textbox element.\n *\n * @returns {void}\n */\n TimePicker.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Hides the TimePicker popup.\n *\n * @returns {void}\n\n */\n TimePicker.prototype.hide = function () {\n this.closePopup(100, null);\n this.clearIconState();\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup to show the list items.\n *\n * @returns {void}\n\n */\n TimePicker.prototype.show = function (event) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupWrapper) {\n return;\n }\n else {\n this.popupCreation();\n if (Browser.isDevice && this.listWrapper) {\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n document.body.appendChild(this.modal);\n }\n if (Browser.isDevice) {\n this.mobileTimePopupWrap = this.createElement('div', { className: 'e-timepicker-mob-popup-wrap' });\n document.body.appendChild(this.mobileTimePopupWrap);\n }\n this.openPopupEventArgs = {\n popup: this.popupObj || null,\n cancel: false,\n event: event || null,\n name: 'open',\n appendTo: Browser.isDevice ? this.mobileTimePopupWrap : document.body\n };\n var eventArgs = this.openPopupEventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.openPopupEventArgs = eventArgs;\n if (!_this.openPopupEventArgs.cancel && !_this.inputWrapper.buttons[0].classList.contains(DISABLED)) {\n _this.openPopupEventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupAlignment(_this.openPopupEventArgs);\n _this.setScrollPosition();\n if (!Browser.isDevice) {\n _this.inputElement.focus();\n }\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION\n };\n _this.popupObj.refreshPosition(_this.anchor);\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n _this.setActiveDescendant();\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options' });\n attributes(_this.inputElement, { 'aria-controls': _this.inputElement.id });\n addClass([_this.inputWrapper.container], FOCUS);\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n _this.setOverlayIndex(_this.mobileTimePopupWrap, _this.popupObj.element, _this.modal, Browser.isDevice);\n }\n else {\n _this.popupObj.destroy();\n _this.popupWrapper = _this.listTag = undefined;\n _this.liCollections = _this.timeCollections = _this.disableItemCollection = [];\n _this.popupObj = null;\n }\n });\n if (Browser.isDevice) {\n var dlgOverlay = this.createElement('div', { className: 'e-dlg-overlay' });\n dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.mobileTimePopupWrap.appendChild(dlgOverlay);\n }\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n TimePicker.prototype.setOverlayIndex = function (popupWrapper, timePopupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(timePopupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(timePopupElement.style.zIndex, 10) ? parseInt(timePopupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n TimePicker.prototype.formatValues = function (type) {\n var value;\n if (typeof type === 'number') {\n value = formatUnit(type);\n }\n else if (typeof type === 'string') {\n value = (type.match(/px|%|em/)) ? type : isNaN(parseInt(type, 10)) ? type : formatUnit(type);\n }\n return value;\n };\n TimePicker.prototype.popupAlignment = function (args) {\n args.popup.position.X = this.formatValues(args.popup.position.X);\n args.popup.position.Y = this.formatValues(args.popup.position.Y);\n if (!isNaN(parseFloat(args.popup.position.X)) || !isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.targetType = 'container';\n }\n if (!isNaN(parseFloat(args.popup.position.X))) {\n this.popupObj.offsetX = parseFloat(args.popup.position.X);\n }\n if (!isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.offsetY = parseFloat(args.popup.position.Y);\n }\n if (!Browser.isDevice) {\n switch (args.popup.position.X) {\n case 'left':\n break;\n case 'right':\n args.popup.offsetX = this.containerStyle.width;\n break;\n case 'center':\n args.popup.offsetX = -(this.containerStyle.width / 2);\n break;\n }\n switch (args.popup.position.Y) {\n case 'top':\n break;\n case 'bottom':\n break;\n case 'center':\n args.popup.offsetY = -(this.containerStyle.height / 2);\n break;\n }\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.inputWrapper.container;\n this.anchor = this.inputElement;\n this.popupObj.targetType = 'relative';\n }\n }\n else {\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.offsetY = 0;\n this.popupObj.targetType = 'container';\n this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n TimePicker.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TimePicker.prototype.getModuleName = function () {\n return 'timepicker';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {TimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement, this.floatLabelType);\n if (this.readonly) {\n this.hide();\n }\n this.setTimeAllowEdit();\n break;\n case 'enabled':\n this.setProperties({ enabled: newProp.enabled }, true);\n this.setEnable();\n break;\n case 'allowEdit':\n this.setTimeAllowEdit();\n break;\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n break;\n case 'locale':\n this.setProperties({ locale: newProp.locale }, true);\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n if (this.timeOptions && this.timeOptions.placeholder == null) {\n this.updatePlaceHolder();\n }\n this.setValue(this.value);\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'width':\n setStyleAttribute(this.inputWrapper.container, { 'width': this.setWidth(newProp.width) });\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkTimeFormat();\n this.setValue(this.value);\n if (this.enableMask) {\n this.createMask();\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n break;\n case 'value':\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n if (!this.invalidValueString) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(newProp.value)) }, true);\n newProp.value = this.value;\n }\n else {\n if ((newProp.value && +new Date(+newProp.value).setMilliseconds(0)) !== +this.value) {\n newProp.value = this.checkDateValue(new Date('' + newProp.value));\n }\n }\n this.initValue = newProp.value;\n newProp.value = this.compareFormatChange(this.checkValue(newProp.value));\n }\n else {\n this.updateInputValue(this.invalidValueString);\n this.checkErrorState(this.invalidValueString);\n }\n if (this.enableMask && isNullOrUndefined(newProp.value)) {\n this.updateInputValue(this.maskedDateValue);\n this.checkErrorState(this.maskedDateValue);\n }\n this.checkValueChange(null, false);\n if (this.isPopupOpen()) {\n this.setScrollPosition();\n }\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'strictMode':\n this.invalidValueString = null;\n if (newProp.strictMode) {\n this.checkErrorState(null);\n }\n this.setProperties({ strictMode: newProp.strictMode }, true);\n this.checkValue((this.inputElement).value);\n this.checkValueChange(null, false);\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo)))) {\n if (this.popupWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n this.updateInputValue(this.maskedDateValue);\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.updateInputValue('');\n }\n }\n break;\n }\n }\n };\n TimePicker.prototype.checkInValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property({})\n ], TimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('Never')\n ], TimePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(1000)\n ], TimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(30)\n ], TimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], TimePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"itemRender\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"focus\", void 0);\n TimePicker = __decorate([\n NotifyPropertyChanges\n ], TimePicker);\n return TimePicker;\n}(Component));\nexport { TimePicker };\n/* eslint-enable @typescript-eslint/no-explicit-any */\n","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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, Property, Event, Browser, L10n, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, detach, closest } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getValue, formatUnit, setValue, merge } from '@syncfusion/ej2-base';\nimport { Internationalization, getNumericObject } from '@syncfusion/ej2-base';\nimport { Input } from '../input/input';\nvar ROOT = 'e-control-wrapper e-numeric';\nvar SPINICON = 'e-input-group-icon';\nvar SPINUP = 'e-spin-up';\nvar SPINDOWN = 'e-spin-down';\nvar ERROR = 'e-error';\nvar INCREMENT = 'increment';\nvar DECREMENT = 'decrement';\nvar INTREGEXP = new RegExp('^(-)?(\\\\d*)$');\nvar DECIMALSEPARATOR = '.';\nvar COMPONENT = 'e-numerictextbox';\nvar CONTROL = 'e-control';\nvar NUMERIC_FOCUS = 'e-input-focus';\nvar HIDDENELEMENT = 'e-numeric-hidden';\nvar wrapperAttributes = ['title', 'style', 'class'];\nvar selectionTimeOut = 0;\n/**\n * Represents the NumericTextBox component that allows the user to enter only numeric values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar NumericTextBox = /** @class */ (function (_super) {\n __extends(NumericTextBox, _super);\n /**\n *\n * @param {NumericTextBoxModel} options - Specifies the NumericTextBox model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function NumericTextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isVue = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isDynamicChange = false;\n _this.numericOptions = options;\n return _this;\n }\n NumericTextBox.prototype.preRender = function () {\n this.isPrevFocused = false;\n this.decimalSeparator = '.';\n // eslint-disable-next-line no-useless-escape\n this.intRegExp = new RegExp('/^(-)?(\\d*)$/');\n this.isCalled = false;\n var ejInstance = getValue('ej2_instances', this.element);\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [CONTROL, COMPONENT, 'e-lib']);\n this.angularTagName = null;\n this.formEle = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.angularTagName = this.element.tagName;\n var input = this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id' && attributeName !== 'class') {\n input.setAttribute(this.element.attributes[index].nodeName, this.element.attributes[index].nodeValue);\n input.innerHTML = this.element.innerHTML;\n }\n else if (attributeName === 'class') {\n input.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) { return item.indexOf('ng-') !== 0; }).join(' '));\n }\n }\n if (this.element.hasAttribute('name')) {\n this.element.removeAttribute('name');\n }\n this.element.classList.remove('e-control', 'e-numerictextbox');\n this.element.appendChild(input);\n this.element = input;\n setValue('ej2_instances', ejInstance, this.element);\n }\n attributes(this.element, { 'role': 'spinbutton', 'tabindex': '0', 'autocomplete': 'off' });\n var localeText = {\n incrementTitle: 'Increment value', decrementTitle: 'Decrement value', placeholder: this.placeholder\n };\n this.l10n = new L10n('numerictextbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('numerictextbox'));\n }\n this.isValidState = true;\n this.inputStyle = null;\n this.inputName = null;\n this.cultureInfo = {};\n this.initCultureInfo();\n this.initCultureFunc();\n this.prevValue = this.value;\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if (this.formEle) {\n this.inputEleValue = this.value;\n }\n this.validateMinMax();\n this.validateStep();\n if (this.placeholder === null) {\n this.updatePlaceholder();\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.render = function () {\n if (this.element.tagName.toLowerCase() === 'input') {\n this.createWrapper();\n if (this.showSpinButton) {\n this.spinBtnCreation();\n }\n this.setElementWidth(this.width);\n if (!this.container.classList.contains('e-input-group')) {\n this.container.classList.add('e-input-group');\n }\n this.changeValue(this.value === null || isNaN(this.value) ?\n null : this.strictMode ? this.trimValue(this.value) : this.value);\n this.wireEvents();\n if (this.value !== null && !isNaN(this.value)) {\n if (this.decimals) {\n this.setProperties({ value: this.roundNumber(this.value, this.decimals) }, true);\n }\n }\n if (this.element.getAttribute('value') || this.value) {\n this.element.setAttribute('value', this.element.value);\n this.hiddenInput.setAttribute('value', this.hiddenInput.value);\n }\n this.elementPrevValue = this.element.value;\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n }\n };\n NumericTextBox.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'step', 'disabled', 'readonly', 'style', 'name', 'placeholder'];\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(prop) === 'disabled' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(prop) === 'readonly' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['value'] === undefined)) || isDynamic) {\n var setNumber = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n this.setProperties(setValue(prop, setNumber, {}), !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['min'] === undefined)) || isDynamic) {\n var minValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (minValue !== null && !isNaN(minValue)) {\n this.setProperties(setValue(prop, minValue, {}), !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['max'] === undefined)) || isDynamic) {\n var maxValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (maxValue !== null && !isNaN(maxValue)) {\n this.setProperties(setValue(prop, maxValue, {}), !isDynamic);\n }\n }\n break;\n case 'step':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['step'] === undefined)) || isDynamic) {\n var stepValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (stepValue !== null && !isNaN(stepValue)) {\n this.setProperties(setValue(prop, stepValue, {}), !isDynamic);\n }\n }\n break;\n case 'style':\n this.inputStyle = this.element.getAttribute(prop);\n break;\n case 'name':\n this.inputName = this.element.getAttribute(prop);\n break;\n default:\n {\n var value = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if ((value !== null && !isNaN(value)) || (prop === 'value')) {\n this.setProperties(setValue(prop, value, {}), true);\n }\n }\n break;\n }\n }\n }\n };\n NumericTextBox.prototype.updatePlaceholder = function () {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n };\n NumericTextBox.prototype.initCultureFunc = function () {\n this.instance = new Internationalization(this.locale);\n };\n NumericTextBox.prototype.initCultureInfo = function () {\n this.cultureInfo.format = this.format;\n if (getValue('currency', this) !== null) {\n setValue('currency', this.currency, this.cultureInfo);\n this.setProperties({ currencyCode: this.currency }, true);\n }\n };\n /* Wrapper creation */\n NumericTextBox.prototype.createWrapper = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getNumericValidClassList(this.cssClass);\n }\n var inputObj = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValue,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton,\n enabled: this.enabled\n }\n }, this.createElement);\n this.inputWrapper = inputObj;\n this.container = inputObj.container;\n this.container.setAttribute('class', ROOT + ' ' + this.container.getAttribute('class'));\n this.updateHTMLAttrToWrapper();\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n this.hiddenInput = (this.createElement('input', { attrs: { type: 'text',\n 'validateHidden': 'true', 'aria-label': 'hidden', 'class': HIDDENELEMENT } }));\n this.inputName = this.inputName !== null ? this.inputName : this.element.id;\n this.element.removeAttribute('name');\n if (this.isAngular && this.angularTagName === 'EJS-NUMERICTEXTBOX' && this.cloneElement.id.length > 0) {\n attributes(this.hiddenInput, { 'name': this.cloneElement.id });\n }\n else {\n attributes(this.hiddenInput, { 'name': this.inputName });\n }\n this.container.insertBefore(this.hiddenInput, this.container.childNodes[1]);\n this.updateDataAttribute(false);\n if (this.inputStyle !== null) {\n attributes(this.container, { 'style': this.inputStyle });\n }\n };\n NumericTextBox.prototype.updateDataAttribute = function (isDynamic) {\n var attr = {};\n if (!isDynamic) {\n for (var a = 0; a < this.element.attributes.length; a++) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n else {\n attr = this.htmlAttributes;\n }\n for (var _i = 0, _a = Object.keys(attr); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key.indexOf('data') === 0) {\n this.hiddenInput.setAttribute(key, attr[\"\" + key]);\n }\n }\n };\n NumericTextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) < 0) {\n this.element.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n };\n NumericTextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getNumericValidClassList(newClass), [this.container], this.getNumericValidClassList(oldClass));\n };\n NumericTextBox.prototype.getNumericValidClassList = function (numericClassName) {\n var result = numericClassName;\n if (!isNullOrUndefined(numericClassName) && numericClassName !== '') {\n result = (numericClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n NumericTextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) > -1) {\n if (pro === 'class') {\n var updatedClassValue = this.getNumericValidClassList(this.htmlAttributes[\"\" + pro]);\n if (updatedClassValue !== '') {\n addClass([this.container], updatedClassValue.split(' '));\n }\n }\n else if (pro === 'style') {\n var numericStyle = this.container.getAttribute(pro);\n numericStyle = !isNullOrUndefined(numericStyle) ? (numericStyle + this.htmlAttributes[\"\" + pro]) :\n this.htmlAttributes[\"\" + pro];\n this.container.setAttribute(pro, numericStyle);\n }\n else {\n this.container.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n }\n };\n NumericTextBox.prototype.setElementWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n /* Spinner creation */\n NumericTextBox.prototype.spinBtnCreation = function () {\n this.spinDown = Input.appendSpan(SPINICON + ' ' + SPINDOWN, this.container, this.createElement);\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle')\n });\n this.spinUp = Input.appendSpan(SPINICON + ' ' + SPINUP, this.container, this.createElement);\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle')\n });\n this.wireSpinBtnEvents();\n };\n NumericTextBox.prototype.validateMinMax = function () {\n if (!(typeof (this.min) === 'number' && !isNaN(this.min))) {\n this.setProperties({ min: -(Number.MAX_VALUE) }, true);\n }\n if (!(typeof (this.max) === 'number' && !isNaN(this.max))) {\n this.setProperties({ max: Number.MAX_VALUE }, true);\n }\n if (this.decimals !== null) {\n if (this.min !== -(Number.MAX_VALUE)) {\n this.setProperties({ min: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.min)) }, true);\n }\n if (this.max !== (Number.MAX_VALUE)) {\n this.setProperties({ max: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.max)) }, true);\n }\n }\n this.setProperties({ min: this.min > this.max ? this.max : this.min }, true);\n if (this.min !== -(Number.MAX_VALUE)) {\n attributes(this.element, { 'aria-valuemin': this.min.toString() });\n }\n if (this.max !== (Number.MAX_VALUE)) {\n attributes(this.element, { 'aria-valuemax': this.max.toString() });\n }\n };\n NumericTextBox.prototype.formattedValue = function (decimals, value) {\n return this.instance.getNumberFormat({\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals, useGrouping: false\n })(value);\n };\n NumericTextBox.prototype.validateStep = function () {\n if (this.decimals !== null) {\n this.setProperties({ step: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.step)) }, true);\n }\n };\n NumericTextBox.prototype.action = function (operation, event) {\n this.isInteract = true;\n var value = this.isFocused ? this.instance.getNumberParser({ format: 'n' })(this.element.value) : this.value;\n this.changeValue(this.performAction(value, this.step, operation));\n this.raiseChangeEvent(event);\n };\n NumericTextBox.prototype.checkErrorClass = function () {\n if (this.isValidState) {\n removeClass([this.container], ERROR);\n }\n else {\n addClass([this.container], ERROR);\n }\n attributes(this.element, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n NumericTextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n NumericTextBox.prototype.resetHandler = function (e) {\n e.preventDefault();\n if (!(this.inputWrapper.clearButton.classList.contains('e-clear-icon-hide')) || this.inputWrapper.container.classList.contains('e-static-clear')) {\n this.clear(e);\n }\n this.isInteract = true;\n this.raiseChangeEvent(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NumericTextBox.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.setElementValue('');\n this.hiddenInput.value = '';\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.resetFormHandler = function () {\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.updateValue(null);\n }\n else {\n this.updateValue(this.inputEleValue);\n }\n };\n NumericTextBox.prototype.setSpinButton = function () {\n if (!isNullOrUndefined(this.spinDown)) {\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle'),\n 'aria-label': this.l10n.getConstant('decrementTitle')\n });\n }\n if (!isNullOrUndefined(this.spinUp)) {\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle'),\n 'aria-label': this.l10n.getConstant('incrementTitle')\n });\n }\n };\n NumericTextBox.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'input', this.inputHandler, this);\n EventHandler.add(this.element, 'keypress', this.keyPressHandler, this);\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'paste', this.pasteHandler, this);\n if (this.enabled) {\n this.bindClearEvent();\n if (this.formEle) {\n EventHandler.add(this.formEle, 'reset', this.resetFormHandler, this);\n }\n }\n };\n NumericTextBox.prototype.wireSpinBtnEvents = function () {\n /* bind spin button events */\n EventHandler.add(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n };\n NumericTextBox.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'blur', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'input', this.inputHandler);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.element, 'keypress', this.keyPressHandler);\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'paste', this.pasteHandler);\n if (this.formEle) {\n EventHandler.remove(this.formEle, 'reset', this.resetFormHandler);\n }\n };\n NumericTextBox.prototype.unwireSpinBtnEvents = function () {\n /* unbind spin button events */\n EventHandler.remove(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n };\n NumericTextBox.prototype.changeHandler = function (event) {\n event.stopPropagation();\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n };\n NumericTextBox.prototype.raiseChangeEvent = function (event) {\n this.inputValue = (isNullOrUndefined(this.inputValue) || isNaN(this.inputValue)) ? null : this.inputValue;\n if (this.prevValue !== this.value || this.prevValue !== this.inputValue) {\n var eventArgs = {};\n this.changeEventArgs = { value: this.value, previousValue: this.prevValue, isInteracted: this.isInteract,\n isInteraction: this.isInteract, event: event };\n if (event) {\n this.changeEventArgs.event = event;\n }\n if (this.changeEventArgs.event === undefined) {\n this.changeEventArgs.isInteracted = false;\n this.changeEventArgs.isInteraction = false;\n }\n merge(eventArgs, this.changeEventArgs);\n this.prevValue = this.value;\n this.isInteract = false;\n this.elementPrevValue = this.element.value;\n this.preventChange = false;\n this.trigger('change', eventArgs);\n }\n };\n NumericTextBox.prototype.pasteHandler = function () {\n var _this = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var beforeUpdate = this.element.value;\n setTimeout(function () {\n if (!_this.numericRegex().test(_this.element.value)) {\n _this.setElementValue(beforeUpdate);\n }\n });\n };\n NumericTextBox.prototype.preventHandler = function () {\n var _this = this;\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n setTimeout(function () {\n if (_this.element.selectionStart > 0) {\n var currentPos = _this.element.selectionStart;\n var prevPos = _this.element.selectionStart - 1;\n var start = 0;\n var valArray = _this.element.value.split('');\n var numericObject = getNumericObject(_this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var ignoreKeyCode = decimalSeparator.charCodeAt(0);\n if (_this.element.value[prevPos] === ' ' && _this.element.selectionStart > 0 && !iOS) {\n if (isNullOrUndefined(_this.prevVal)) {\n _this.element.value = _this.element.value.trim();\n }\n else if (prevPos !== 0) {\n _this.element.value = _this.prevVal;\n }\n else if (prevPos === 0) {\n _this.element.value = _this.element.value.trim();\n }\n _this.element.setSelectionRange(prevPos, prevPos);\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 1]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 1]) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n _this.element.setSelectionRange(prevPos, prevPos);\n if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) && _this.element.selectionStart > 0\n && _this.element.value.length) {\n _this.preventHandler();\n }\n }\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 2])) && _this.element.selectionStart > 1 &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 2]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 2]) &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.setSelectionRange(prevPos, prevPos);\n _this.nextEle = _this.element.value[_this.element.selectionStart];\n _this.cursorPosChanged = true;\n _this.preventHandler();\n }\n }\n if (_this.cursorPosChanged === true && _this.element.value[_this.element.selectionStart] === _this.nextEle &&\n isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1]))) {\n _this.element.setSelectionRange(_this.element.selectionStart + 1, _this.element.selectionStart + 1);\n _this.cursorPosChanged = false;\n _this.nextEle = null;\n }\n if (_this.element.value.trim() === '') {\n _this.element.setSelectionRange(start, start);\n }\n if (_this.element.selectionStart > 0) {\n if ((_this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === 45) && _this.element.selectionStart > 1) {\n if (isNullOrUndefined(_this.prevVal)) {\n // eslint-disable-next-line no-self-assign\n _this.element.value = _this.element.value;\n }\n else {\n _this.element.value = _this.prevVal;\n }\n _this.element.setSelectionRange(_this.element.selectionStart, _this.element.selectionStart);\n }\n if (_this.element.value[_this.element.selectionStart - 1] === decimalSeparator && _this.decimals === 0 && _this.validateDecimalOnType) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n }\n }\n _this.prevVal = _this.element.value;\n }\n });\n };\n NumericTextBox.prototype.keyUpHandler = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n if (!iOS && Browser.isDevice) {\n this.preventHandler();\n }\n var parseValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parseValue = parseValue === null || isNaN(parseValue) ? null : parseValue;\n this.hiddenInput.value = parseValue || parseValue === 0 ? parseValue.toString() : null;\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.inputHandler = function (event) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias\n var numerictextboxObj = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n var fireFox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n if ((fireFox || iOS) && Browser.isDevice) {\n this.preventHandler();\n }\n /* istanbul ignore next */\n if (this.isAngular\n && this.element.value !== getValue('decimal', getNumericObject(this.locale))\n && this.element.value !== getValue('minusSign', getNumericObject(this.locale))) {\n var parsedValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parsedValue = isNaN(parsedValue) ? null : parsedValue;\n numerictextboxObj.localChange({ value: parsedValue });\n this.preventChange = true;\n }\n if (this.isVue) {\n var current = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n var previous = this.instance.getNumberParser({ format: 'n' })(this.elementPrevValue);\n //EJ2-54963-if type \".\" or \".0\" or \"-.0\" it converts to \"0\" automatically when binding v-model\n var nonZeroRegex = new RegExp('[^0-9]+$');\n if (nonZeroRegex.test(this.element.value) || ((this.elementPrevValue.indexOf('.') !== -1 || this.elementPrevValue.indexOf('-') !== -1) && this.element.value[this.element.value.length - 1] === '0')) {\n current = this.value;\n }\n var eventArgs = {\n event: event,\n value: (current === null || isNaN(current) ? null : current),\n previousValue: (previous === null || isNaN(previous) ? null : previous)\n };\n this.preventChange = true;\n this.elementPrevValue = this.element.value;\n this.trigger('input', eventArgs);\n }\n };\n NumericTextBox.prototype.keyDownHandler = function (event) {\n if (!this.readonly) {\n switch (event.keyCode) {\n case 38:\n event.preventDefault();\n this.action(INCREMENT, event);\n break;\n case 40:\n event.preventDefault();\n this.action(DECREMENT, event);\n break;\n default: break;\n }\n }\n };\n NumericTextBox.prototype.performAction = function (value, step, operation) {\n if (value === null || isNaN(value)) {\n value = 0;\n }\n var updatedValue = operation === INCREMENT ? value + step : value - step;\n updatedValue = this.correctRounding(value, step, updatedValue);\n return this.strictMode ? this.trimValue(updatedValue) : updatedValue;\n };\n NumericTextBox.prototype.correctRounding = function (value, step, result) {\n var floatExp = new RegExp('[,.](.*)');\n var floatValue = floatExp.test(value.toString());\n var floatStep = floatExp.test(step.toString());\n if (floatValue || floatStep) {\n var valueCount = floatValue ? floatExp.exec(value.toString())[0].length : 0;\n var stepCount = floatStep ? floatExp.exec(step.toString())[0].length : 0;\n var max = Math.max(valueCount, stepCount);\n return value = this.roundValue(result, max);\n }\n return result;\n };\n NumericTextBox.prototype.roundValue = function (result, precision) {\n precision = precision || 0;\n var divide = Math.pow(10, precision);\n return result *= divide, result = Math.round(result) / divide;\n };\n NumericTextBox.prototype.updateValue = function (value, event) {\n if (event) {\n this.isInteract = true;\n }\n if (value !== null && !isNaN(value)) {\n if (this.decimals) {\n value = this.roundNumber(value, this.decimals);\n }\n }\n this.inputValue = value;\n this.changeValue(value === null || isNaN(value) ? null : this.strictMode ? this.trimValue(value) : value);\n /* istanbul ignore next */\n if (!this.isDynamicChange) {\n this.raiseChangeEvent(event);\n }\n };\n NumericTextBox.prototype.updateCurrency = function (prop, propVal) {\n setValue(prop, propVal, this.cultureInfo);\n this.updateValue(this.value);\n };\n NumericTextBox.prototype.changeValue = function (value) {\n if (!(value || value === 0)) {\n value = null;\n this.setProperties({ value: value }, true);\n }\n else {\n var numberOfDecimals = this.getNumberOfDecimals(value);\n this.setProperties({ value: this.roundNumber(value, numberOfDecimals) }, true);\n }\n this.modifyText();\n if (!this.strictMode) {\n this.validateState();\n }\n };\n NumericTextBox.prototype.modifyText = function () {\n if (this.value || this.value === 0) {\n var value = this.formatNumber();\n var elementValue = this.isFocused ? value : this.instance.getNumberFormat(this.cultureInfo)(this.value);\n this.setElementValue(elementValue);\n attributes(this.element, { 'aria-valuenow': value });\n this.hiddenInput.value = this.value.toString();\n if (this.value !== null && this.serverDecimalSeparator) {\n this.hiddenInput.value = this.hiddenInput.value.replace('.', this.serverDecimalSeparator);\n }\n }\n else {\n this.setElementValue('');\n this.element.removeAttribute('aria-valuenow');\n this.hiddenInput.value = null;\n }\n };\n NumericTextBox.prototype.setElementValue = function (val, element) {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, this.showClearButton);\n };\n NumericTextBox.prototype.validateState = function () {\n this.isValidState = true;\n if (this.value || this.value === 0) {\n this.isValidState = !(this.value > this.max || this.value < this.min);\n }\n this.checkErrorClass();\n };\n NumericTextBox.prototype.getNumberOfDecimals = function (value) {\n var numberOfDecimals;\n // eslint-disable-next-line no-useless-escape\n var EXPREGEXP = new RegExp('[eE][\\-+]?([0-9]+)');\n var valueString = value.toString();\n if (EXPREGEXP.test(valueString)) {\n var result = EXPREGEXP.exec(valueString);\n if (!isNullOrUndefined(result)) {\n valueString = value.toFixed(Math.min(parseInt(result[1], 10), 20));\n }\n }\n var decimalPart = valueString.split('.')[1];\n numberOfDecimals = !decimalPart || !decimalPart.length ? 0 : decimalPart.length;\n if (this.decimals !== null) {\n numberOfDecimals = numberOfDecimals < this.decimals ? numberOfDecimals : this.decimals;\n }\n return numberOfDecimals;\n };\n NumericTextBox.prototype.formatNumber = function () {\n var numberOfDecimals = this.getNumberOfDecimals(this.value);\n return this.instance.getNumberFormat({\n maximumFractionDigits: numberOfDecimals,\n minimumFractionDigits: numberOfDecimals, useGrouping: false\n })(this.value);\n };\n NumericTextBox.prototype.trimValue = function (value) {\n if (value > this.max) {\n return this.max;\n }\n if (value < this.min) {\n return this.min;\n }\n return value;\n };\n NumericTextBox.prototype.roundNumber = function (value, precision) {\n var result = value;\n var decimals = precision || 0;\n var result1 = result.toString().split('e');\n result = Math.round(Number(result1[0] + 'e' + (result1[1] ? (Number(result1[1]) + decimals) : decimals)));\n var result2 = result.toString().split('e');\n result = Number(result2[0] + 'e' + (result2[1] ? (Number(result2[1]) - decimals) : -decimals));\n return Number(result.toFixed(decimals));\n };\n NumericTextBox.prototype.cancelEvent = function (event) {\n event.preventDefault();\n return false;\n };\n NumericTextBox.prototype.keyPressHandler = function (event) {\n if (!this.enabled || this.readonly) {\n return true;\n }\n if (!Browser.isDevice && Browser.info.version === '11.0' && event.keyCode === 13) {\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n return true;\n }\n if (event.which === 0 || event.metaKey || event.ctrlKey || event.keyCode === 8 || event.keyCode === 13) {\n return true;\n }\n var currentChar = String.fromCharCode(event.which);\n var decimalSeparator = getValue('decimal', getNumericObject(this.locale));\n var isAlterNumPadDecimalChar = event.code === 'NumpadDecimal' && currentChar !== decimalSeparator;\n //EJ2-59813-replace the culture decimal separator value with numberpad decimal separator value when culture decimal separator and numberpad decimal separator are different\n if (isAlterNumPadDecimalChar) {\n currentChar = decimalSeparator;\n }\n var text = this.element.value;\n text = text.substring(0, this.element.selectionStart) + currentChar + text.substring(this.element.selectionEnd);\n if (!this.numericRegex().test(text)) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n else {\n //EJ2-59813-update the numberpad decimal separator and update the cursor position\n if (isAlterNumPadDecimalChar) {\n var start = this.element.selectionStart + 1;\n this.element.value = text;\n this.element.setSelectionRange(start, start);\n event.preventDefault();\n event.stopPropagation();\n }\n return true;\n }\n };\n NumericTextBox.prototype.numericRegex = function () {\n var numericObject = getNumericObject(this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var fractionRule = '*';\n if (decimalSeparator === DECIMALSEPARATOR) {\n decimalSeparator = '\\\\' + decimalSeparator;\n }\n if (this.decimals === 0 && this.validateDecimalOnType) {\n return INTREGEXP;\n }\n if (this.decimals && this.validateDecimalOnType) {\n fractionRule = '{0,' + this.decimals + '}';\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n return new RegExp('^(-)?(((\\\\d+(' + decimalSeparator + '\\\\d' + fractionRule +\n ')?)|(' + decimalSeparator + '\\\\d' + fractionRule + ')))?$');\n };\n NumericTextBox.prototype.mouseWheel = function (event) {\n event.preventDefault();\n var delta;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var rawEvent = event;\n if (rawEvent.wheelDelta) {\n delta = rawEvent.wheelDelta / 120;\n }\n else if (rawEvent.detail) {\n delta = -rawEvent.detail / 3;\n }\n if (delta > 0) {\n this.action(INCREMENT, event);\n }\n else if (delta < 0) {\n this.action(DECREMENT, event);\n }\n this.cancelEvent(event);\n };\n NumericTextBox.prototype.focusHandler = function (event) {\n var _this = this;\n clearTimeout(selectionTimeOut);\n this.focusEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('focus', this.focusEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n this.isFocused = true;\n removeClass([this.container], ERROR);\n this.prevValue = this.value;\n if ((this.value || this.value === 0)) {\n var formatValue_1 = this.formatNumber();\n this.setElementValue(formatValue_1);\n if (!this.isPrevFocused) {\n if (!Browser.isDevice && Browser.info.version === '11.0') {\n this.element.setSelectionRange(0, formatValue_1.length);\n }\n else {\n var delay = (Browser.isDevice && Browser.isIos) ? 600 : 0;\n selectionTimeOut = setTimeout(function () {\n _this.element.setSelectionRange(0, formatValue_1.length);\n }, delay);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.add(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel, this);\n }\n };\n NumericTextBox.prototype.focusOutHandler = function (event) {\n var _this = this;\n this.blurEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('blur', this.blurEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isPrevFocused) {\n event.preventDefault();\n if (Browser.isDevice) {\n var value_1 = this.element.value;\n this.element.focus();\n this.isPrevFocused = false;\n var ele_1 = this.element;\n setTimeout(function () {\n _this.setElementValue(value_1, ele_1);\n }, 200);\n }\n }\n else {\n this.isFocused = false;\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput);\n if (!Browser.isDevice) {\n EventHandler.remove(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel);\n }\n }\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var focusEvent = document.createEvent('FocusEvent');\n focusEvent.initEvent('focusout', false, true);\n element.dispatchEvent(focusEvent);\n }\n };\n NumericTextBox.prototype.mouseDownOnSpinner = function (event) {\n var _this = this;\n if (this.isFocused) {\n this.isPrevFocused = true;\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var result = this.getElementData(event);\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.add(target, 'mouseleave', this.mouseUpClick, this);\n this.timeOut = setInterval(function () {\n _this.isCalled = true;\n _this.action(action, event);\n }, 150);\n EventHandler.add(document, 'mouseup', this.mouseUpClick, this);\n };\n NumericTextBox.prototype.touchMoveOnSpinner = function (event) {\n var target;\n if (event.type === 'touchmove') {\n var touchEvent = event.touches;\n target = touchEvent.length && document.elementFromPoint(touchEvent[0].pageX, touchEvent[0].pageY);\n }\n else {\n target = document.elementFromPoint(event.clientX, event.clientY);\n }\n if (!(target.classList.contains(SPINICON))) {\n clearInterval(this.timeOut);\n }\n };\n NumericTextBox.prototype.mouseUpOnSpinner = function (event) {\n this.prevValue = this.value;\n if (this.isPrevFocused) {\n this.element.focus();\n if (!Browser.isDevice) {\n this.isPrevFocused = false;\n }\n }\n if (!Browser.isDevice) {\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.remove(target, 'mouseleave', this.mouseUpClick);\n if (!this.isCalled) {\n this.action(action, event);\n }\n this.isCalled = false;\n EventHandler.remove(document, 'mouseup', this.mouseUpClick);\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.getElementData = function (event) {\n if ((event.which && event.which === 3) || (event.button && event.button === 2)\n || !this.enabled || this.readonly) {\n return false;\n }\n clearInterval(this.timeOut);\n return true;\n };\n NumericTextBox.prototype.floatLabelTypeUpdate = function () {\n Input.removeFloating(this.inputWrapper);\n var hiddenInput = this.hiddenInput;\n this.hiddenInput.remove();\n Input.addFloating(this.element, this.floatLabelType, this.placeholder, this.createElement);\n this.container.insertBefore(hiddenInput, this.container.childNodes[1]);\n };\n NumericTextBox.prototype.mouseUpClick = function (event) {\n event.stopPropagation();\n clearInterval(this.timeOut);\n this.isCalled = false;\n if (this.spinUp) {\n EventHandler.remove(this.spinUp, 'mouseleave', this.mouseUpClick);\n }\n if (this.spinDown) {\n EventHandler.remove(this.spinDown, 'mouseleave', this.mouseUpClick);\n }\n };\n /**\n * Increments the NumericTextBox value with the specified step value.\n *\n * @param {number} step - Specifies the value used to increment the NumericTextBox value.\n * if its not given then numeric value will be incremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.increment = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, INCREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Decrements the NumericTextBox value with specified step value.\n *\n * @param {number} step - Specifies the value used to decrement the NumericTextBox value.\n * if its not given then numeric value will be decremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.decrement = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, DECREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n NumericTextBox.prototype.destroy = function () {\n this.unwireEvents();\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n detach(this.hiddenInput);\n if (this.showSpinButton) {\n this.unwireSpinBtnEvents();\n detach(this.spinUp);\n detach(this.spinDown);\n }\n var attrArray = ['aria-labelledby', 'role', 'autocomplete', 'aria-readonly',\n 'aria-disabled', 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'tabindex',\n 'aria-valuemin', 'aria-valuemax', 'aria-valuenow', 'aria-invalid'];\n for (var i = 0; i < attrArray.length; i++) {\n this.element.removeAttribute(attrArray[i]);\n }\n this.element.classList.remove('e-input');\n this.container.insertAdjacentElement('afterend', this.element);\n detach(this.container);\n this.spinUp = null;\n this.spinDown = null;\n this.container = null;\n this.hiddenInput = null;\n this.changeEventArgs = null;\n this.blurEventArgs = null;\n this.focusEventArgs = null;\n this.inputWrapper = null;\n Input.destroy({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Returns the value of NumericTextBox with the format applied to the NumericTextBox.\n *\n */\n NumericTextBox.prototype.getText = function () {\n return this.element.value;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.element.focus();\n addClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.element.blur();\n removeClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string}\n */\n NumericTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {NumericTextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {NumericTextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.container]);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n else {\n this.element.removeAttribute('aria-readonly');\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.updateDataAttribute(true);\n this.checkAttributes(true);\n Input.validateInputType(this.container, this.element);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.element);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'step':\n this.step = newProp.step;\n this.validateStep();\n break;\n case 'showSpinButton':\n this.updateSpinButton(newProp);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n this.floatLabelTypeUpdate();\n break;\n case 'value':\n this.isDynamicChange = (this.isAngular || this.isVue) && this.preventChange;\n this.updateValue(newProp.value);\n if (this.isDynamicChange) {\n this.preventChange = false;\n this.isDynamicChange = false;\n }\n break;\n case 'min':\n case 'max':\n setValue(prop, getValue(prop, newProp), this);\n this.validateMinMax();\n this.updateValue(this.value);\n break;\n case 'strictMode':\n this.strictMode = newProp.strictMode;\n this.updateValue(this.value);\n this.validateState();\n break;\n case 'locale':\n this.initCultureFunc();\n this.l10n.setLocale(this.locale);\n this.setSpinButton();\n this.updatePlaceholder();\n Input.setPlaceholder(this.placeholder, this.element);\n this.updateValue(this.value);\n break;\n case 'currency':\n {\n var propVal = getValue(prop, newProp);\n this.setProperties({ currencyCode: propVal }, true);\n this.updateCurrency(prop, propVal);\n }\n break;\n case 'currencyCode':\n {\n var propValue = getValue(prop, newProp);\n this.setProperties({ currency: propValue }, true);\n this.updateCurrency('currency', propValue);\n }\n break;\n case 'format':\n setValue(prop, getValue(prop, newProp), this);\n this.initCultureInfo();\n this.updateValue(this.value);\n break;\n case 'decimals':\n this.decimals = newProp.decimals;\n this.updateValue(this.value);\n }\n }\n };\n NumericTextBox.prototype.updateClearButton = function (newProp) {\n Input.setClearButton(newProp.showClearButton, this.element, this.inputWrapper, undefined, this.createElement);\n this.bindClearEvent();\n };\n NumericTextBox.prototype.updateSpinButton = function (newProp) {\n if (newProp.showSpinButton) {\n this.spinBtnCreation();\n }\n else {\n detach(this.spinUp);\n detach(this.spinDown);\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n NumericTextBox.prototype.getModuleName = function () {\n return 'numerictextbox';\n };\n __decorate([\n Property('')\n ], NumericTextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"value\", void 0);\n __decorate([\n Property(-(Number.MAX_VALUE))\n ], NumericTextBox.prototype, \"min\", void 0);\n __decorate([\n Property(Number.MAX_VALUE)\n ], NumericTextBox.prototype, \"max\", void 0);\n __decorate([\n Property(1)\n ], NumericTextBox.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property({})\n ], NumericTextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"showSpinButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('n2')\n ], NumericTextBox.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"decimals\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currency\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currencyCode\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"validateDecimalOnType\", void 0);\n __decorate([\n Property('Never')\n ], NumericTextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"blur\", void 0);\n NumericTextBox = __decorate([\n NotifyPropertyChanges\n ], NumericTextBox);\n return NumericTextBox;\n}(Component));\nexport { NumericTextBox };\n","import { 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n///\nimport { EventHandler, Internationalization, Property, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { Animation, Event, cldrData, getDefaultDateObject, detach } from '@syncfusion/ej2-base';\nimport { createElement, remove, addClass, L10n, removeClass, closest, append, attributes } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, isNullOrUndefined, formatUnit, getValue, rippleEffect } from '@syncfusion/ej2-base';\nimport { extend } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DatePicker } from '../datepicker/datepicker';\nimport { TimePickerBase } from '../timepicker/timepicker';\n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar DATEPICKERROOT = 'e-datepicker';\nvar DATETIMEWRAPPER = 'e-datetime-wrapper';\nvar DAY = new Date().getDate();\nvar MONTH = new Date().getMonth();\nvar YEAR = new Date().getFullYear();\nvar HOUR = new Date().getHours();\nvar MINUTE = new Date().getMinutes();\nvar SECOND = new Date().getSeconds();\nvar MILLISECOND = new Date().getMilliseconds();\nvar ROOT = 'e-datetimepicker';\nvar DATETIMEPOPUPWRAPPER = 'e-datetimepopup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar TIMEICON = 'e-time-icon';\nvar INPUTFOCUS = 'e-input-focus';\nvar POPUPDIMENSION = '250px';\nvar ICONANIMATION = 'e-icon-anim';\nvar DISABLED = 'e-disabled';\nvar ERROR = 'e-error';\nvar CONTENT = 'e-content';\nvar NAVIGATION = 'e-navigation';\nvar ACTIVE = 'e-active';\nvar HOVER = 'e-hover';\nvar ICONS = 'e-icons';\nvar HALFPOSITION = 2;\nvar LISTCLASS = 'e-list-item';\nvar ANIMATIONDURATION = 100;\nvar OVERFLOW = 'e-time-overflow';\n/**\n * Represents the DateTimePicker component that allows user to select\n * or enter a date time value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DateTimePicker = /** @class */ (function (_super) {\n __extends(DateTimePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DateTimePickerModel} options - Specifies the DateTimePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DateTimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.valueWithMinutes = null;\n _this.scrollInvoked = false;\n _this.moduleName = _this.getModuleName();\n _this.formatRegex = /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yyy|yy|y|'[^']*'|'[^']*'/g;\n _this.dateFormatString = '';\n _this.dateTimeOptions = options;\n return _this;\n }\n DateTimePicker.prototype.focusHandler = function () {\n if (!this.enabled) {\n return;\n }\n addClass([this.inputWrapper.container], INPUTFOCUS);\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusIn = function () {\n _super.prototype.focusIn.call(this);\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n DateTimePicker.prototype.blurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isTimePopupOpen() && this.isPreventBlur) {\n this.inputElement.focus();\n return;\n }\n removeClass([this.inputWrapper.container], INPUTFOCUS);\n var blurArguments = {\n model: this\n };\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n this.trigger('blur', blurArguments);\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.destroy = function () {\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n if (this.popupObject && this.popupObject.element.classList.contains(POPUP)) {\n this.popupObject.destroy();\n detach(this.dateTimeWrapper);\n this.dateTimeWrapper = undefined;\n this.liCollections = this.timeCollections = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n }\n var ariaAttribute = {\n 'aria-live': 'assertive', 'aria-atomic': 'true', 'aria-invalid': 'false',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObject = this.popupWrapper = null;\n this.keyboardHandler.destroy();\n }\n this.unBindInputEvents();\n this.liCollections = null;\n this.rippleFn = null;\n this.selectedElement = null;\n this.listTag = null;\n this.timeIcon = null;\n this.popupObject = null;\n this.preventArgs = null;\n this.keyboardModule = null;\n Input.destroy({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DateTimePicker.prototype.render = function () {\n this.timekeyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.valueWithMinutes = null;\n this.previousDateTime = null;\n this.isPreventBlur = false;\n this.cloneElement = this.element.cloneNode(true);\n this.dateTimeFormat = this.cldrDateTimeFormat();\n this.initValue = this.value;\n if (typeof (this.min) === 'string') {\n this.min = this.checkDateValue(new Date(this.min));\n }\n if (typeof (this.max) === 'string') {\n this.max = this.checkDateValue(new Date(this.max));\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n _super.prototype.updateHtmlAttributeToElement.call(this);\n this.checkAttributes(false);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('datetimepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n _super.prototype.render.call(this);\n this.createInputElement();\n _super.prototype.updateHtmlAttributeToWrapper.call(this);\n this.bindInputEvents();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n this.setValue(true);\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(this.scrollTo))) }, true);\n this.previousDateTime = this.value && new Date(+this.value);\n if (this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n if (!this.enabled) {\n this.inputElement.tabIndex = -1;\n }\n }\n if (this.floatLabelType === '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 this.cldrDateTimeFormat().replace(this.formatRegex, this.TimePopupFormat());\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.dateFormatString, type: 'datetime'\n });\n }\n else {\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.cldrDateTimeFormat(), type: 'datetime', calendar: 'islamic'\n });\n }\n var value = isNullOrUndefined(this.value) ? this.inputElement.value !== '' ?\n dateObject : new Date() : this.value;\n this.valueWithMinutes = value;\n this.listWrapper = createElement('div', { className: CONTENT, attrs: { 'tabindex': '0' } });\n var min = this.startTime(value);\n var max = this.endTime(value);\n var listDetails = TimePickerBase.createListItems(this.createElement, min, max, this.globalize, this.cldrTimeFormat(), this.step);\n this.timeCollections = listDetails.collection;\n this.listTag = listDetails.list;\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options' });\n append([listDetails.list], this.listWrapper);\n this.wireTimeListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n };\n DateTimePicker.prototype.popupCreation = function (type, e) {\n if (Browser.isDevice) {\n this.element.setAttribute('readonly', 'readonly');\n }\n if (type === 'date') {\n if (!this.readonly && this.popupWrapper) {\n addClass([this.popupWrapper], DATETIMEPOPUPWRAPPER);\n attributes(this.popupWrapper, { 'id': this.element.id + '_options' });\n }\n }\n else {\n if (!this.readonly) {\n this.dateTimeWrapper = createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_timepopup', 'style': 'visibility:hidden ; display:block' }\n });\n if (!isNullOrUndefined(this.cssClass)) {\n this.dateTimeWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.listCreation();\n append([this.listWrapper], this.dateTimeWrapper);\n }\n document.body.appendChild(this.dateTimeWrapper);\n this.addTimeSelection();\n this.renderPopup();\n this.setTimeScrollPosition();\n this.openPopup(e);\n if (!Browser.isDevice || (Browser.isDevice && !this.fullScreenMode)) {\n this.popupObject.refreshPosition(this.inputElement);\n }\n if (Browser.isDevice && this.fullScreenMode) {\n this.dateTimeWrapper.style.left = '0px';\n }\n if (Browser.isDevice) {\n var dlgOverlay = this.createElement('div', { className: 'e-dlg-overlay' });\n dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.timeModal.appendChild(dlgOverlay);\n }\n }\n }\n };\n DateTimePicker.prototype.openPopup = function (e) {\n var _this = this;\n this.preventArgs = {\n cancel: false,\n popup: this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (!_this.preventArgs.cancel && !_this.readonly) {\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION,\n };\n if (_this.zIndex === 1000) {\n _this.popupObject.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObject.show(new Animation(openAnimation), null);\n }\n addClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options' });\n attributes(_this.inputElement, { 'aria-controls': _this.inputElement.id });\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n }\n });\n };\n DateTimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObject) && (this.inputWrapper.container.contains(target) && event.type !== 'mousedown' ||\n (this.popupObject.element && this.popupObject.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + (this.popupObject && this.popupObject.element.id + '\"]'))) && target !== this.inputElement\n && target !== this.timeIcon && !isNullOrUndefined(this.inputWrapper) && target !== this.inputWrapper.container && !target.classList.contains('e-dlg-overlay')) {\n if (this.isTimePopupOpen()) {\n this.hide(event);\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = ((document.activeElement === this.inputElement) && (Browser.isIE || Browser.info.name === 'edge')\n && target === this.popupObject.element);\n }\n }\n };\n DateTimePicker.prototype.isTimePopupOpen = function () {\n return (this.dateTimeWrapper && this.dateTimeWrapper.classList.contains('' + ROOT)) ? true : false;\n };\n DateTimePicker.prototype.isDatePopupOpen = function () {\n return (this.popupWrapper && this.popupWrapper.classList.contains('' + DATETIMEPOPUPWRAPPER)) ? true : false;\n };\n DateTimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n if (Browser.isDevice) {\n this.timeModal = createElement('div');\n this.timeModal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n this.timeModal.style.display = 'block';\n document.body.appendChild(this.timeModal);\n }\n var offset = 4;\n this.popupObject = new Popup(this.dateTimeWrapper, {\n width: this.setPopupWidth(),\n zIndex: this.zIndex,\n targetType: 'container',\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n enableRtl: this.enableRtl,\n offsetY: offset,\n open: function () {\n _this.dateTimeWrapper.style.visibility = 'visible';\n addClass([_this.timeIcon], ACTIVE);\n if (!Browser.isDevice) {\n _this.timekeyConfigure = extend(_this.timekeyConfigure, _this.keyConfigs);\n _this.inputEvent = new KeyboardEvents(_this.inputWrapper.container, {\n keyAction: _this.timeKeyActionHandle.bind(_this),\n keyConfigs: _this.timekeyConfigure,\n eventName: 'keydown'\n });\n }\n }, close: function () {\n removeClass([_this.timeIcon], ACTIVE);\n _this.unWireTimeListEvents();\n _this.inputElement.removeAttribute('aria-activedescendant');\n remove(_this.popupObject.element);\n _this.popupObject.destroy();\n _this.dateTimeWrapper.innerHTML = '';\n _this.listWrapper = _this.dateTimeWrapper = undefined;\n if (_this.inputEvent) {\n _this.inputEvent.destroy();\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (Browser.isDevice && this.fullScreenMode) {\n this.popupObject.element.style.display = \"flex\";\n this.popupObject.element.style.maxHeight = \"100%\";\n this.popupObject.element.style.width = \"100%\";\n }\n else {\n this.popupObject.element.style.maxHeight = POPUPDIMENSION;\n }\n if (Browser.isDevice && this.fullScreenMode) {\n var modelWrapper = createElement('div', { className: 'e-datetime-mob-popup-wrap' });\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var modelTitleSpan = this.createElement(\"span\", { className: \"e-model-title\" });\n modelTitleSpan.textContent = \"Select time\";\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.dateTimeCloseHandler, this);\n var timeContent = this.dateTimeWrapper.querySelector(\".e-content\");\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n modelWrapper.appendChild(modelHeader);\n modelWrapper.appendChild(timeContent);\n this.dateTimeWrapper.insertBefore(modelWrapper, this.dateTimeWrapper.firstElementChild);\n }\n };\n DateTimePicker.prototype.dateTimeCloseHandler = function (e) {\n this.hide();\n };\n DateTimePicker.prototype.setDimension = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n // eslint-disable-next-line no-self-assign\n width = width;\n }\n else {\n width = '100%';\n }\n return width;\n };\n DateTimePicker.prototype.setPopupWidth = function () {\n var width = this.setDimension(this.width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n DateTimePicker.prototype.wireTimeListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n DateTimePicker.prototype.unWireTimeListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n }\n };\n DateTimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setTimeHover(currentLi, HOVER);\n };\n DateTimePicker.prototype.onMouseLeave = function () {\n this.removeTimeHover(HOVER);\n };\n DateTimePicker.prototype.setTimeHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeTimeHover(className);\n addClass([li], className);\n }\n };\n DateTimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.dateTimeWrapper.getBoundingClientRect().height;\n if (Browser.isDevice && this.fullScreenMode) {\n return popupHeight;\n }\n else {\n return popupHeight > height ? height : popupHeight;\n }\n };\n DateTimePicker.prototype.changeEvent = function (e) {\n _super.prototype.changeEvent.call(this, e);\n if ((this.value && this.value.valueOf()) !== (this.previousDateTime && +this.previousDateTime.valueOf())) {\n this.valueWithMinutes = this.value;\n this.setInputValue('date');\n this.previousDateTime = this.value && new Date(+this.value);\n }\n };\n DateTimePicker.prototype.updateValue = function (e) {\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs = {\n value: this.value, event: e || null,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n this.addTimeSelection();\n this.trigger('change', this.changedArgs);\n this.previousDateTime = this.previousDate = this.value;\n }\n };\n DateTimePicker.prototype.setTimeScrollPosition = function () {\n var popupElement = this.selectedElement;\n if (!isNullOrUndefined(popupElement)) {\n this.findScrollTop(popupElement);\n }\n else if (this.dateTimeWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n DateTimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextElement = element.nextElementSibling;\n var height = nextElement ? nextElement.offsetTop : element.offsetTop;\n var lineHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n if (Browser.isDevice && this.fullScreenMode) {\n var listContent = this.dateTimeWrapper.querySelector('.e-content');\n listContent.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION + lineHeight / HALFPOSITION)) : height;\n }\n else {\n this.dateTimeWrapper.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION + lineHeight / HALFPOSITION)) : height;\n }\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setScrollTo = function () {\n var element;\n var items = this.dateTimeWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length >= 0) {\n this.scrollInvoked = true;\n var initialTime = this.timeCollections[0];\n var scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setInputValue = function (type) {\n if (type === 'date') {\n this.inputElement.value = this.previousElementValue = this.getFormattedValue(this.getFullDateTime());\n this.setProperties({ value: this.getFullDateTime() }, true);\n }\n else {\n var tempVal = this.getFormattedValue(new Date(this.timeCollections[this.activeIndex]));\n Input.setValue(tempVal, this.inputElement, this.floatLabelType, this.showClearButton);\n this.previousElementValue = this.inputElement.value;\n this.setProperties({ value: new Date(this.timeCollections[this.activeIndex]) }, true);\n if (this.enableMask) {\n this.createMask();\n }\n }\n this.updateIconState();\n };\n DateTimePicker.prototype.getFullDateTime = function () {\n var value = null;\n if (this.isDateObject(this.valueWithMinutes)) {\n value = this.combineDateTime(this.valueWithMinutes);\n }\n else {\n value = this.previousDate;\n }\n return this.validateMinMaxRange(value);\n };\n DateTimePicker.prototype.createMask = function () {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n };\n DateTimePicker.prototype.combineDateTime = function (value) {\n if (this.isDateObject(value)) {\n var day = this.previousDate.getDate();\n var month = this.previousDate.getMonth();\n var year = this.previousDate.getFullYear();\n var hour = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n return new Date(year, month, day, hour, minutes, seconds);\n }\n else {\n return this.previousDate;\n }\n };\n DateTimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n if (li && li.classList.contains(LISTCLASS)) {\n this.timeValue = li.getAttribute('data-value');\n this.hide(event);\n }\n this.setSelection(li, event);\n };\n DateTimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li) && !li.classList.contains(ACTIVE)) {\n this.selectedElement = li;\n var index = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.activeIndex = index;\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.updateValue(event);\n }\n };\n DateTimePicker.prototype.setTimeActiveClass = function () {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n if (!isNullOrUndefined(collections)) {\n var items = collections.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if (this.timeCollections[i] === +(this.valueWithMinutes)) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n this.setTimeActiveDescendant();\n break;\n }\n }\n }\n }\n };\n DateTimePicker.prototype.setTimeActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement) && this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n DateTimePicker.prototype.addTimeSelection = function () {\n this.selectedElement = null;\n this.removeTimeSelection();\n this.setTimeActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n DateTimePicker.prototype.removeTimeSelection = function () {\n this.removeTimeHover(HOVER);\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n var items = this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n if (items.length) {\n removeClass(items, ACTIVE);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n DateTimePicker.prototype.removeTimeHover = function (className) {\n var hoveredItem = this.getTimeHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n }\n };\n DateTimePicker.prototype.getTimeHoverItem = function (className) {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n var hoveredItem;\n if (!isNullOrUndefined(collections)) {\n hoveredItem = collections.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n DateTimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n DateTimePicker.prototype.calculateStartEnd = function (value, range, method) {\n var day = value.getDate();\n var month = value.getMonth();\n var year = value.getFullYear();\n var hours = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n var milliseconds = value.getMilliseconds();\n if (range) {\n if (method === 'starttime') {\n return new Date(year, month, day, 0, 0, 0);\n }\n else {\n return new Date(year, month, day, 23, 59, 59);\n }\n }\n else {\n return new Date(year, month, day, hours, minutes, seconds, milliseconds);\n }\n };\n DateTimePicker.prototype.startTime = function (date) {\n var tempStartValue;\n var start;\n var tempMin = this.min;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMin.getDate() && +value.getMonth() === +tempMin.getMonth() &&\n +value.getFullYear() === +tempMin.getFullYear()) || ((+new Date(value.getFullYear(), value.getMonth(), value.getDate())) <=\n +new Date(tempMin.getFullYear(), tempMin.getMonth(), tempMin.getDate()))) {\n start = false;\n tempStartValue = this.min;\n }\n else if (+value < +this.max && +value > +this.min) {\n start = true;\n tempStartValue = value;\n }\n else if (+value >= +this.max) {\n start = true;\n tempStartValue = this.max;\n }\n return this.calculateStartEnd(tempStartValue, start, 'starttime');\n };\n DateTimePicker.prototype.TimePopupFormat = function () {\n var format = '';\n var formatCount = 0;\n var proxy = this;\n function formatValueSpecifier(formattext) {\n switch (formattext) {\n case 'd':\n case 'dd':\n case 'ddd':\n case 'dddd':\n case 'M':\n case 'MM':\n case 'MMM':\n case 'MMMM':\n case 'y':\n case 'yy':\n case 'yyy':\n case 'yyyy':\n if (format == '') {\n format = format + formattext;\n }\n else {\n format = format + \"/\" + formattext;\n }\n formatCount = formatCount + 1;\n break;\n }\n if (formatCount > 2) {\n proxy.dateFormatString = format;\n }\n return format;\n }\n return formatValueSpecifier;\n };\n DateTimePicker.prototype.endTime = function (date) {\n var tempEndValue;\n var end;\n var tempMax = this.max;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMax.getDate() && +value.getMonth() === +tempMax.getMonth() &&\n +value.getFullYear() === +tempMax.getFullYear()) || (+new Date(value.getUTCFullYear(), value.getMonth(), value.getDate()) >=\n +new Date(tempMax.getFullYear(), tempMax.getMonth(), tempMax.getDate()))) {\n end = false;\n tempEndValue = this.max;\n }\n else if (+value < +this.max && +value > +this.min) {\n end = true;\n tempEndValue = value;\n }\n else if (+value <= +this.min) {\n end = true;\n tempEndValue = this.min;\n }\n return this.calculateStartEnd(tempEndValue, end, 'endtime');\n };\n DateTimePicker.prototype.hide = function (e) {\n var _this = this;\n if (this.popupObj || this.dateTimeWrapper) {\n this.preventArgs = {\n cancel: false,\n popup: this.popupObj || this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n if (isNullOrUndefined(this.popupObj)) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.dateTimeCloseEventCallback(e, eventArgs);\n });\n }\n else {\n this.dateTimeCloseEventCallback(e, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n DateTimePicker.prototype.dateTimeCloseEventCallback = function (e, eventArgs) {\n this.preventArgs = eventArgs;\n if (!this.preventArgs.cancel) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n else if (this.isTimePopupOpen()) {\n this.closePopup(e);\n removeClass([document.body], OVERFLOW);\n if (Browser.isDevice && this.timeModal) {\n this.timeModal.style.display = 'none';\n this.timeModal.outerHTML = '';\n this.timeModal = null;\n }\n this.setTimeActiveDescendant();\n }\n }\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateTimePicker.prototype.closePopup = function (e) {\n if (this.isTimePopupOpen() && this.popupObject) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: 0\n };\n this.popupObject.hide(new Animation(animModel));\n this.inputWrapper.container.classList.remove(ICONANIMATION);\n attributes(this.inputElement, { 'aria-expanded': 'false' });\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-controls');\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n }\n };\n DateTimePicker.prototype.preRender = function () {\n this.checkFormat();\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.preRender.call(this);\n removeClass([this.inputElementCopy], [ROOT]);\n };\n DateTimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.setProperties({ min: this.validateValue(date.min) }, true);\n }\n else {\n this.setProperties({ max: this.validateValue(date.max) }, true);\n }\n };\n DateTimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['style', 'name', 'step', 'disabled', 'readonly', 'value', 'min', 'max', 'placeholder', 'type'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'disabled':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === 'true' ||\n this.inputElement.getAttribute(prop) === '' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n };\n DateTimePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this.calendarMode === 'Islamic') {\n modules.push({ args: [this], member: 'islamic', name: 'Islamic' });\n }\n if (this.enableMask) {\n modules.push(this.maskedDateModule());\n }\n return modules;\n };\n DateTimePicker.prototype.maskedDateModule = function () {\n var modules = { args: [this], member: 'MaskedDateTime' };\n return modules;\n };\n DateTimePicker.prototype.getTimeActiveElement = function () {\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n return this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.createDateObj = function (val) {\n return val instanceof Date ? val : null;\n };\n DateTimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = this.valueWithMinutes;\n var status_1 = !isNullOrUndefined(value);\n if (this.checkDateValue(dateValue)) {\n var date = status_1 ? value.getDate() : DAY;\n var month = status_1 ? value.getMonth() : MONTH;\n var year = status_1 ? value.getFullYear() : YEAR;\n var hour = status_1 ? value.getHours() : HOUR;\n var minute = status_1 ? value.getMinutes() : MINUTE;\n var second = status_1 ? value.getSeconds() : SECOND;\n var millisecond = status_1 ? value.getMilliseconds() : MILLISECOND;\n if (!this.scrollInvoked) {\n return new Date(year, month, date, hour, minute, second, millisecond);\n }\n else {\n this.scrollInvoked = false;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds(), dateValue.getMilliseconds());\n }\n }\n }\n return null;\n };\n DateTimePicker.prototype.findNextTimeElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var dateTimeVal = null;\n var listCount = this.liCollections.length;\n if (!isNullOrUndefined(this.activeIndex) || !isNullOrUndefined(this.checkDateValue(value))) {\n if (event.action === 'home') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[0])));\n this.activeIndex = 0;\n }\n else if (event.action === 'end') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[this.timeCollections.length - 1])));\n this.activeIndex = this.timeCollections.length - 1;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < listCount; i++) {\n if (+value < this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n else {\n for (var i = listCount - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(isNullOrUndefined(dateTimeVal) ? null : new Date(dateTimeVal));\n }\n };\n DateTimePicker.prototype.setTimeValue = function (date, value) {\n var dateString;\n var time;\n var val = this.validateMinMaxRange(value);\n var newval = this.createDateObj(val);\n if (this.getFormattedValue(newval) !== (!isNullOrUndefined(this.value) ? this.getFormattedValue(this.value) : null)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = new Date(+this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = new Date(+this.valueWithMinutes);\n }\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n return time;\n };\n DateTimePicker.prototype.timeElementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value)) && !this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.setTimeValue(date, value);\n }\n return null;\n };\n DateTimePicker.prototype.timeKeyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0) {\n return;\n }\n var listCount = this.timeCollections.length;\n if (isNullOrUndefined(this.getTimeActiveElement()) || this.getTimeActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n this.activeIndex = 0;\n this.selectedElement = this.liCollections[0];\n this.timeElementValue(new Date(this.timeCollections[0]));\n }\n else {\n this.findNextTimeElement(event);\n }\n }\n }\n else {\n var nextItemValue = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (listCount) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (listCount - 1) : this.activeIndex;\n nextItemValue = isNullOrUndefined(this.timeCollections[index]) ?\n this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n this.activeIndex = 0;\n nextItemValue = this.timeCollections[0];\n }\n else if (event.action === 'end') {\n this.activeIndex = listCount - 1;\n nextItemValue = this.timeCollections[listCount - 1];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(new Date(nextItemValue));\n }\n this.isNavigate = true;\n this.setTimeHover(this.selectedElement, NAVIGATION);\n this.setTimeActiveDescendant();\n if (this.isTimePopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setTimeScrollPosition();\n }\n };\n DateTimePicker.prototype.timeKeyActionHandle = function (event) {\n if (this.enabled) {\n if (event.action !== 'right' && event.action !== 'left' && event.action !== 'tab') {\n event.preventDefault();\n }\n switch (event.action) {\n case 'up':\n case 'down':\n case 'home':\n case 'end':\n this.timeKeyHandler(event);\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs.value = this.value;\n this.addTimeSelection();\n this.previousDateTime = this.value;\n }\n }\n else {\n this.updateValue(event);\n }\n this.hide(event);\n addClass([this.inputWrapper.container], INPUTFOCUS);\n this.isNavigate = false;\n event.stopPropagation();\n break;\n case 'escape':\n this.hide(event);\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n DateTimePicker.prototype.inputKeyAction = function (event) {\n switch (event.action) {\n case 'altDownArrow':\n this.strictModeUpdate();\n this.updateInput();\n this.toggle(event);\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DateTimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DateTimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n\n */\n DateTimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n newProp.value = this.validateValue(newProp.value);\n if (this.enableMask) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(this.getFormattedValue(newProp.value), this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.valueWithMinutes = newProp.value;\n this.setProperties({ value: newProp.value }, true);\n if (this.popupObj) {\n this.popupUpdate();\n }\n this.previousDateTime = new Date(this.inputElement.value);\n this.updateInput();\n this.changeTrigger(null);\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n if (this.enableMask && this.value) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n this.updateInput();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'cssClass':\n if (!isNullOrUndefined(oldProp.cssClass)) {\n oldProp.cssClass = (oldProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newProp.cssClass)) {\n newProp.cssClass = (newProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newProp.cssClass, [this.inputWrapper.container], oldProp.cssClass);\n if (this.dateTimeWrapper) {\n Input.setCssClass(newProp.cssClass, [this.dateTimeWrapper], oldProp.cssClass);\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n if (this.dateTimeOptions && this.dateTimeOptions.placeholder == null) {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n }\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.updateInput.call(this);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkFormat();\n this.dateTimeFormat = this.formatString;\n this.setValue();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n if (!this.value) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.tabIndex = -1;\n }\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkValue(newProp.scrollTo)))) {\n if (this.dateTimeWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.maskedDateValue = '';\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DateTimePicker.prototype.getModuleName = function () {\n return 'datetimepicker';\n };\n DateTimePicker.prototype.restoreValue = function () {\n this.previousDateTime = this.previousDate;\n this.currentDate = this.value ? this.value : new Date();\n this.valueWithMinutes = this.value;\n this.previousDate = this.value;\n this.previousElementValue = this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.getFormattedValue(this.inputValueCopy);\n };\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"timeFormat\", void 0);\n __decorate([\n Property(30)\n ], DateTimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(1000)\n ], DateTimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property({})\n ], DateTimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"values\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(new Date(1900, 0, 1))\n ], DateTimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], DateTimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], DateTimePicker.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"weekNumber\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], DateTimePicker.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], DateTimePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"destroyed\", void 0);\n DateTimePicker = __decorate([\n NotifyPropertyChanges\n ], DateTimePicker);\n return DateTimePicker;\n}(DatePicker));\nexport { DateTimePicker };\n","import { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { getCustomDateFormat } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `datefilterui` render date column.\n *\n * @hidden\n */\nvar DateFilterUI = /** @class */ (function () {\n function DateFilterUI(parent, serviceLocator, filterSettings) {\n this.dpOpen = this.openPopup.bind(this);\n this.parent = parent;\n this.locator = serviceLocator;\n this.fltrSettings = filterSettings;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n DateFilterUI.prototype.create = function (args) {\n var format = getCustomDateFormat(args.column.format, args.column.type);\n this.dialogObj = args.dialogObj;\n this.inputElem = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'dateui-' + args.column.uid });\n args.target.appendChild(this.inputElem);\n if (args.column.type === 'date' || args.column.type === 'dateonly') {\n this.datePickerObj = new DatePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('ChooseDate'),\n width: '100%',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n }\n else if (args.column.type === 'datetime') {\n this.datePickerObj = new DateTimePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('ChooseDate'),\n width: '100%',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n }\n this.datePickerObj.addEventListener(literals['open'], this.dpOpen);\n this.datePickerObj.appendTo(this.inputElem);\n };\n DateFilterUI.prototype.write = function (args) {\n var dateuiObj = document.querySelector('#dateui-' + args.column.uid).ej2_instances[0];\n dateuiObj.value = !isNullOrUndefined(args.filteredValue) ? new Date(args.filteredValue) : null;\n };\n DateFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var dateuiObj = document.querySelector('#dateui-' + column.uid).ej2_instances[0];\n var filterValue = dateuiObj.value;\n filterValue = isNullOrUndefined(filterValue) ? null : filterValue;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', true);\n };\n DateFilterUI.prototype.openPopup = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n };\n DateFilterUI.prototype.destroy = function () {\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n if (isNullOrUndefined(this.datePickerObj) || this.datePickerObj.isDestroyed) {\n return;\n }\n this.datePickerObj.removeEventListener(literals['open'], this.dpOpen);\n this.datePickerObj.destroy();\n };\n return DateFilterUI;\n}());\nexport { DateFilterUI };\n","import { isNullOrUndefined, getValue, remove } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { FlMenuOptrUI } from './filter-menu-operator';\nimport { StringFilterUI } from './string-filter-ui';\nimport { NumberFilterUI } from './number-filter-ui';\nimport { BooleanFilterUI } from './boolean-filter-ui';\nimport { DateFilterUI } from './date-filter-ui';\nimport { getFilterMenuPostion, parentsUntil, appendChildren, clearReactVueTemplates } from '../base/util';\nimport * as events from '../base/constant';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * `filter menu` render boolean column.\n *\n * @hidden\n */\nvar FilterMenuRenderer = /** @class */ (function () {\n function FilterMenuRenderer(parent, filterSettings, serviceLocator, customFltrOperators, fltrObj) {\n this.isDialogOpen = false;\n this.maxHeight = '350px';\n this.isMenuCheck = false;\n this.colTypes = {\n 'string': StringFilterUI, 'number': NumberFilterUI, 'date': DateFilterUI, 'dateonly': DateFilterUI, 'boolean': BooleanFilterUI, 'datetime': DateFilterUI\n };\n this.parent = parent;\n this.filterSettings = filterSettings;\n this.serviceLocator = serviceLocator;\n this.customFilterOperators = customFltrOperators;\n this.filterObj = fltrObj;\n this.flMuiObj = new FlMenuOptrUI(this.parent, this.customFilterOperators, this.serviceLocator);\n this.l10n = this.serviceLocator.getService('localization');\n this.menuFilterBase = new CheckBoxFilterBase(parent);\n }\n FilterMenuRenderer.prototype.clearCustomFilter = function (col) {\n this.clearBtnClick(col);\n };\n FilterMenuRenderer.prototype.applyCustomFilter = function (args) {\n this.filterBtnClick(args.col);\n };\n FilterMenuRenderer.prototype.openDialog = function (args) {\n this.options = args;\n this.col = this.parent.getColumnByField(args.field);\n if (isNullOrUndefined(this.col.filter) || (isNullOrUndefined(this.col.filter.type) || this.col.filter.type === 'Menu')) { ///\n this.renderDlgContent(args.target, this.col);\n }\n };\n FilterMenuRenderer.prototype.closeDialog = function (target) {\n if (!this.dlgObj) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n clearReactVueTemplates(this.parent, ['filterTemplate']);\n }\n var elem = document.getElementById(this.dlgObj.element.id);\n if (this.dlgObj && !this.dlgObj.isDestroyed && elem) {\n var argument = { cancel: false, column: this.col, target: target, element: elem };\n this.parent.notify(events.filterMenuClose, argument);\n if (argument.cancel) {\n return;\n }\n this.isDialogOpen = false;\n if (this.isMenuCheck) {\n this.menuFilterBase.unWireEvents();\n this.parent.off(events.cBoxFltrComplete, this.actionComplete);\n this.isMenuCheck = false;\n }\n this.dlgObj.destroy();\n remove(elem);\n }\n this.parent.notify(events.filterDialogClose, {});\n };\n FilterMenuRenderer.prototype.renderDlgContent = function (target, column) {\n var args = {\n requestType: events.filterBeforeOpen,\n columnName: column.field, columnType: column.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.trigger(events.actionBegin, args);\n var mainDiv = this.parent.createElement('div', { className: 'e-flmenu-maindiv', id: column.uid + '-flmenu' });\n this.dlgDiv = this.parent.createElement('div', { className: 'e-flmenu', id: column.uid + '-flmdlg' });\n this.dlgDiv.setAttribute('aria-label', this.l10n.getConstant('FilterMenuDialogARIA'));\n if (this.parent.enableAdaptiveUI) {\n var responsiveCnt = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlgDiv);\n }\n else {\n this.parent.element.appendChild(this.dlgDiv);\n }\n this.dlgObj = new Dialog({\n showCloseIcon: false,\n closeOnEscape: false,\n locale: this.parent.locale,\n visible: false,\n enableRtl: this.parent.enableRtl,\n created: this.dialogCreated.bind(this, target, column),\n position: this.parent.element.classList.contains('e-device') ? { X: 'center', Y: 'center' } : { X: '', Y: '' },\n target: this.parent.element.classList.contains('e-device') ? document.body : this.parent.element,\n buttons: [{\n click: this.filterBtnClick.bind(this, column),\n buttonModel: {\n content: this.l10n.getConstant('FilterButton'), isPrimary: true,\n cssClass: this.parent.cssClass ? 'e-flmenu-okbtn' + ' ' + this.parent.cssClass : 'e-flmenu-okbtn'\n }\n },\n {\n click: this.clearBtnClick.bind(this, column),\n buttonModel: { content: this.l10n.getConstant('ClearButton'),\n cssClass: this.parent.cssClass ? 'e-flmenu-cancelbtn' + ' ' + this.parent.cssClass : 'e-flmenu-cancelbtn' }\n }],\n content: mainDiv,\n width: (!isNullOrUndefined(parentsUntil(target, 'e-bigger'))) || this.parent.element.classList.contains('e-device') ? 260 : 250,\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? 'e-filter-popup' + ' ' + this.parent.cssClass : 'e-filter-popup'\n });\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dlgObj.appendTo(this.dlgDiv);\n };\n FilterMenuRenderer.prototype.renderResponsiveDialog = function () {\n var gObj = this.parent;\n if (gObj.enableAdaptiveUI) {\n this.dlgObj.position = { X: '', Y: '' };\n this.dlgObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dlgObj.width = '100%';\n this.dlgObj.isModal = false;\n this.dlgObj.buttons = [{}];\n }\n };\n FilterMenuRenderer.prototype.dialogCreated = function (target, column) {\n if (!Browser.isDevice && target) {\n getFilterMenuPostion(target, this.dlgObj);\n }\n this.currentDialogCreatedColumn = column;\n this.renderFilterUI(target, column);\n if (!(column.isForeignColumn() && !(!isNullOrUndefined(column.filter) && !isNullOrUndefined(column.filter.ui)\n && !isNullOrUndefined(column.filter.ui.create)))) {\n this.afterRenderFilterUI();\n }\n if (!isNullOrUndefined(column.filterTemplate)) {\n this.dlgDiv.querySelector('.e-flmenu-valuediv').firstElementChild.focus();\n this.dlgDiv.querySelector('.e-flmenu-valuediv').firstElementChild.classList.add('e-input-focus');\n }\n else if (!isNullOrUndefined(this.dlgDiv.querySelector('.e-flmenu-input'))) {\n this.dlgDiv.querySelector('.e-flmenu-input').focus();\n this.dlgDiv.querySelector('.e-flmenu-input').parentElement.classList.add('e-input-focus');\n }\n };\n /**\n * Function to notify filterDialogCreated and trigger actionComplete\n *\n * @returns {void}\n * @hidden\n */\n FilterMenuRenderer.prototype.afterRenderFilterUI = function () {\n var column = this.currentDialogCreatedColumn;\n if (column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, {});\n }\n if (this.parent.enableAdaptiveUI) {\n this.dlgObj.element.style.left = '0px';\n this.dlgObj.element.style.maxHeight = 'none';\n }\n else {\n this.dlgObj.element.style.maxHeight = this.maxHeight;\n }\n this.dlgObj.show();\n var optrInput = this.dlgObj.element.querySelector('.e-flm_optrdiv').querySelector('input');\n var valInput = this.dlgObj.element.querySelector('.e-flmenu-valuediv').querySelector('input');\n if (optrInput.value === 'Empty' || optrInput.value === 'Not Empty' ||\n optrInput.value === 'Null' || optrInput.value === 'Not Null') {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else if (!isNullOrUndefined(valInput && valInput.getAttribute('disabled'))) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n if (!column.filterTemplate) {\n this.writeMethod(column, this.dlgObj.element.querySelector('#' + column.uid + '-flmenu'));\n }\n var args = {\n requestType: events.filterAfterOpen,\n columnName: column.field, columnType: column.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.isDialogOpen = true;\n if (!this.isMenuCheck) {\n this.parent.trigger(events.actionComplete, args);\n }\n };\n FilterMenuRenderer.prototype.renderFilterUI = function (target, col) {\n var dlgConetntEle = this.dlgObj.element.querySelector('.e-flmenu-maindiv');\n this.parent.log('column_type_missing', { column: col });\n this.renderOperatorUI(dlgConetntEle, target, col);\n this.renderFlValueUI(dlgConetntEle, target, col);\n };\n FilterMenuRenderer.prototype.renderOperatorUI = function (dlgConetntEle, target, column) {\n this.flMuiObj.renderOperatorUI(dlgConetntEle, target, column, this.dlgObj, this.filterObj.menuOperator);\n };\n FilterMenuRenderer.prototype.renderFlValueUI = function (dlgConetntEle, target, column) {\n var valueDiv = this.parent.createElement('div', { className: 'e-flmenu-valuediv' });\n var fObj = this.filterObj;\n dlgConetntEle.appendChild(valueDiv);\n var instanceofFilterUI = new this.colTypes[column.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n if (column.filterTemplate) {\n var fltrData = {};\n var valueInString = 'value';\n fltrData[column.field] = fltrData[\"\" + valueInString] = fObj.values[column.field];\n if (column.foreignKeyValue) {\n fltrData[column.foreignKeyValue] = fObj.values[column.field];\n fltrData[column.field] = undefined;\n }\n var col = 'column';\n fltrData[\"\" + col] = column;\n var isReactCompiler = this.parent.isReact && typeof (column.filterTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + column.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID, null, null, valueDiv);\n this.parent.renderTemplates();\n }\n else {\n var compElement = column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID);\n appendChildren(valueDiv, compElement);\n }\n if (this.isMenuCheck) {\n this.menuFilterBase.cBox = this.dlgObj.element.querySelector('.e-checkboxlist.e-fields');\n this.menuFilterBase.wireEvents();\n this.parent.on(events.cBoxFltrComplete, this.actionComplete, this);\n this.menuFilterBase.getAllData();\n }\n }\n else {\n if (!isNullOrUndefined(column.filter) && !isNullOrUndefined(column.filter.ui)\n && !isNullOrUndefined(column.filter.ui.create)) {\n var temp = column.filter.ui.create;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n temp({\n column: column, target: valueDiv,\n getOptrInstance: this.flMuiObj, dialogObj: this.dlgObj\n });\n }\n else {\n instanceofFilterUI.create({\n column: column, target: valueDiv,\n getOptrInstance: this.flMuiObj, localizeText: this.l10n, dialogObj: this.dlgObj\n });\n }\n }\n };\n FilterMenuRenderer.prototype.writeMethod = function (col, dlgContentEle) {\n var flValue;\n var target = dlgContentEle.querySelector('.e-flmenu-valinput');\n var instanceofFilterUI = new this.colTypes[col.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n var columns = this.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (col.uid === column.uid) {\n flValue = column.value;\n }\n }\n if (!isNullOrUndefined(col.filter) && !isNullOrUndefined(col.filter.ui)\n && !isNullOrUndefined(col.filter.ui.write)) {\n var temp = col.filter.ui.write;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n temp({ column: col, target: target, parent: this.parent, filteredValue: flValue });\n }\n else {\n instanceofFilterUI.write({ column: col, target: target, parent: this.parent, filteredValue: flValue });\n }\n };\n FilterMenuRenderer.prototype.filterBtnClick = function (col) {\n var flValue;\n var targ = this.dlgObj.element.querySelector('.e-flmenu-valuediv input');\n var flOptrValue = this.flMuiObj.getFlOperator();\n var instanceofFilterUI = new this.colTypes[col.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n if (col.filterTemplate) {\n var element = this.dlgDiv.querySelector('.e-flmenu-valuediv');\n var fltrValue = void 0;\n if (element.children[0].value) {\n fltrValue = element.children[0].value;\n }\n else {\n if (!isNullOrUndefined(element.children[0].ej2_instances)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fltrValue = (this.parent.isAngular ? element.children[0] :\n element.querySelector('input')).ej2_instances[0].value;\n }\n else {\n var eControl = element.querySelector('.e-control');\n if (!isNullOrUndefined(eControl)) {\n fltrValue = col.type === 'boolean' ? eControl.checked :\n !isNullOrUndefined(eControl.ej2_instances) ?\n eControl.ej2_instances[0].value :\n eControl.value;\n }\n }\n }\n this.filterObj.filterByColumn(col.field, flOptrValue, fltrValue);\n }\n else {\n if (!isNullOrUndefined(col.filter) &&\n !isNullOrUndefined(col.filter.ui) && !isNullOrUndefined(col.filter.ui.read)) {\n var temp = col.filter.ui.read;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n // eslint-disable-next-line\n flValue = temp({ element: targ, column: col, operator: flOptrValue, fltrObj: this.filterObj });\n }\n else {\n instanceofFilterUI.read(targ, col, flOptrValue, this.filterObj);\n }\n }\n this.closeDialog();\n if (this.parent.showColumnMenu) {\n this.parent.notify(events.afterFilterColumnMenuClose, {});\n }\n };\n FilterMenuRenderer.prototype.closeResponsiveDialog = function () {\n this.closeDialog();\n };\n FilterMenuRenderer.prototype.clearBtnClick = function (column) {\n this.filterObj.removeFilteredColsByField(column.field);\n this.closeDialog();\n };\n FilterMenuRenderer.prototype.destroy = function () {\n this.closeDialog();\n };\n /**\n * @returns {FilterUI} returns the filterUI\n * @hidden\n */\n FilterMenuRenderer.prototype.getFilterUIInfo = function () {\n return { field: this.col.field, operator: this.flMuiObj.getFlOperator() };\n };\n FilterMenuRenderer.prototype.renderCheckBoxMenu = function () {\n this.isMenuCheck = true;\n this.menuFilterBase.updateModel(this.options);\n this.menuFilterBase.getAndSetChkElem(this.options);\n this.dlgObj.buttons = [{\n click: this.menuFilterBase.btnClick.bind(this.menuFilterBase),\n buttonModel: {\n content: this.menuFilterBase.getLocalizedLabel('FilterButton'),\n cssClass: 'e-primary', isPrimary: true\n }\n },\n {\n click: this.menuFilterBase.btnClick.bind(this.menuFilterBase),\n buttonModel: { cssClass: 'e-flat', content: this.menuFilterBase.getLocalizedLabel('ClearButton') }\n }];\n this.menuFilterBase.dialogObj = this.dlgObj;\n this.menuFilterBase.dlg = this.dlgObj.element;\n this.menuFilterBase.dlg.classList.add('e-menucheckbox');\n this.menuFilterBase.dlg.classList.remove('e-checkboxfilter');\n this.maxHeight = '800px';\n return this.menuFilterBase.sBox.innerHTML;\n };\n FilterMenuRenderer.prototype.actionComplete = function (args) {\n if (this.isMenuCheck) {\n this.parent.trigger(events.actionComplete, args);\n }\n };\n return FilterMenuRenderer;\n}());\nexport { FilterMenuRenderer };\n","import * as events from '../base/constant';\nimport { isActionPrevent } from '../base/util';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * @hidden\n * `CheckBoxFilter` module is used to handle filtering action.\n */\nvar CheckBoxFilter = /** @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the filtersettings\n * @param {ServiceLocator} serviceLocator - specifies the ServiceLocator\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function CheckBoxFilter(parent, filterSettings, serviceLocator) {\n this.parent = parent;\n this.isresetFocus = true;\n this.checkBoxBase = new CheckBoxFilterBase(parent);\n this.addEventListener();\n }\n /**\n * To destroy the check box filter.\n *\n * @returns {void}\n * @hidden\n */\n CheckBoxFilter.prototype.destroy = function () {\n this.removeEventListener();\n this.checkBoxBase.closeDialog();\n };\n CheckBoxFilter.prototype.openDialog = function (options) {\n this.checkBoxBase.openDialog(options);\n this.parent.log('column_type_missing', { column: options.column });\n };\n CheckBoxFilter.prototype.closeDialog = function () {\n this.destroy();\n if (this.isresetFocus) {\n this.parent.notify(events.restoreFocus, {});\n }\n };\n CheckBoxFilter.prototype.closeResponsiveDialog = function () {\n this.checkBoxBase.closeDialog();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name\n * @private\n */\n CheckBoxFilter.prototype.getModuleName = function () {\n return 'checkboxFilter';\n };\n CheckBoxFilter.prototype.actionBegin = function (args) {\n this.parent.trigger(events.actionBegin, args);\n };\n CheckBoxFilter.prototype.actionComplete = function (args) {\n this.parent.trigger(events.actionComplete, args);\n };\n CheckBoxFilter.prototype.actionPrevent = function (args) {\n if (isActionPrevent(this.parent)) {\n this.parent.notify(events.preventBatch, args);\n args.cancel = true;\n }\n };\n CheckBoxFilter.prototype.clearCustomFilter = function (col) {\n this.checkBoxBase.clearFilter(col);\n };\n CheckBoxFilter.prototype.applyCustomFilter = function () {\n this.checkBoxBase.fltrBtnHandler();\n this.checkBoxBase.closeDialog();\n };\n CheckBoxFilter.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.cBoxFltrBegin, this.actionBegin, this);\n this.parent.on(events.cBoxFltrComplete, this.actionComplete, this);\n this.parent.on(events.fltrPrevent, this.actionPrevent, this);\n };\n CheckBoxFilter.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.cBoxFltrBegin, this.actionBegin);\n this.parent.off(events.cBoxFltrComplete, this.actionComplete);\n this.parent.off(events.fltrPrevent, this.actionPrevent);\n };\n return CheckBoxFilter;\n}());\nexport { CheckBoxFilter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, rippleEffect, NotifyPropertyChanges, Property, closest, setValue } from '@syncfusion/ej2-base';\nimport { addClass, getInstance, getUniqueID, isRippleEnabled, removeClass, attributes, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { detach, Event, EventHandler, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler } from './../common/common';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-radio-wrapper';\nvar ATTRIBUTES = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value', 'id'];\n/**\n * The RadioButton is a graphical user interface element that allows you to select one option from the choices.\n * It contains checked and unchecked states.\n * ```html\n * \n * \n * ```\n */\nvar RadioButton = /** @class */ (function (_super) {\n __extends(RadioButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {RadioButtonModel} options - Specifies Radio button model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function RadioButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n return _this;\n }\n RadioButton_1 = RadioButton;\n RadioButton.prototype.changeHandler = function (event) {\n this.checked = true;\n this.dataBind();\n var value = this.element.getAttribute('value');\n value = this.isVue && value ? this.element.value : this.value;\n var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\n this.trigger('change', { value: value, event: event });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n event.stopPropagation();\n }\n };\n RadioButton.prototype.updateChange = function () {\n var input;\n var instance;\n var radioGrp = this.getRadioGroup();\n for (var i = 0; i < radioGrp.length; i++) {\n input = radioGrp[i];\n if (input !== this.element) {\n instance = getInstance(input, RadioButton_1);\n instance.checked = false;\n if (this.tagName === 'EJS-RADIOBUTTON') {\n instance.angularValue = this.value;\n }\n }\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n RadioButton.prototype.destroy = function () {\n var _this = this;\n var radioWrap = this.wrapper;\n _super.prototype.destroy.call(this);\n if (radioWrap) {\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (radioWrap.parentNode) {\n radioWrap.parentNode.insertBefore(this.element, radioWrap);\n }\n detach(radioWrap);\n this.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n radioWrap.removeAttribute(key);\n });\n radioWrap.innerHTML = '';\n this.element = this.wrapper;\n if (this.refreshing) {\n ['e-control', 'e-radio', 'e-lib'].forEach(function (key) {\n _this.element.classList.add(key);\n });\n setValue('ej2_instances', [this], this.element);\n }\n }\n }\n };\n RadioButton.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n RadioButton.prototype.focusOutHandler = function () {\n var label = this.getLabel();\n if (label) {\n label.classList.remove('e-focus');\n }\n };\n RadioButton.prototype.getModuleName = function () {\n return 'radio';\n };\n /**\n * To get the value of selected radio button in a group.\n *\n * @method getSelectedValue\n * @returns {string} - Selected Value\n */\n RadioButton.prototype.getSelectedValue = function () {\n var input;\n var radioGrp = this.getRadioGroup();\n for (var i = 0, len = radioGrp.length; i < len; i++) {\n input = radioGrp[i];\n if (input.checked) {\n return input.value;\n }\n }\n return '';\n };\n RadioButton.prototype.getRadioGroup = function () {\n return document.querySelectorAll('input.e-radio[name=\"' + this.element.getAttribute('name') + '\"]');\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n RadioButton.prototype.getPersistData = function () {\n return this.addOnPersist(['checked']);\n };\n RadioButton.prototype.getWrapper = function () {\n if (this.element.parentElement) {\n return this.element.parentElement;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.getLabel = function () {\n if (this.element.nextElementSibling) {\n return this.element.nextElementSibling;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n this.initWrapper();\n this.updateHtmlAttribute();\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n var value = this.element.getAttribute('value');\n var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\n if (this.isVue ? this.value && type !== 'boolean' && !value : this.value) {\n this.element.setAttribute('value', this.value);\n }\n if (this.checked) {\n this.element.checked = true;\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n RadioButton.prototype.initWrapper = function () {\n var rippleSpan;\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', { className: WRAPPER });\n if (this.element.parentNode) {\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n wrapper.appendChild(this.element);\n wrapper.appendChild(label);\n if (isRippleEnabled) {\n rippleSpan = this.createElement('span', { className: (RIPPLE) });\n label.appendChild(rippleSpan);\n rippleEffect(rippleSpan, {\n duration: 400,\n isCenterRipple: true\n });\n }\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n label.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n RadioButton.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getLabel().classList.add('e-focus');\n }\n };\n RadioButton.prototype.labelMouseDownHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n RadioButton.prototype.labelMouseLeaveHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n RadioButton.prototype.labelMouseUpHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n RadioButton.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n if (this.initialCheckedValue) {\n attributes(this.element, { 'checked': 'true' });\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {RadioButtonModel} newProp - Specifies New Properties\n * @param {RadioButtonModel} oldProp - Specifies Old Properties\n * @returns {void}\n */\n RadioButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrap = this.getWrapper();\n var label = this.getLabel();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n if (newProp.checked) {\n this.updateChange();\n }\n this.element.checked = newProp.checked;\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrap], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrap], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n label.classList.add(RTL);\n }\n else {\n label.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition':\n if (newProp.labelPosition === 'Before') {\n label.classList.add('e-right');\n }\n else {\n label.classList.remove('e-right');\n }\n break;\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n var type = typeof this.htmlAttributes.value;\n if (!isNullOrUndefined(this.htmlAttributes) && (this.htmlAttributes.value || type === 'boolean' && !this.htmlAttributes.value)) {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttribute();\n break;\n }\n }\n };\n /**\n * Initialize checked Property, Angular and React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.preRender = function () {\n var element = this.element;\n this.formElement = closest(this.element, 'form');\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-RADIOBUTTON', 'radio', element, WRAPPER, 'radio');\n this.element = element;\n if (this.element.getAttribute('type') !== 'radio') {\n this.element.setAttribute('type', 'radio');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.tagName === 'EJS-RADIOBUTTON') {\n var formControlName = this.element.getAttribute('formcontrolname');\n if (formControlName) {\n this.setProperties({ 'name': formControlName }, true);\n this.element.setAttribute('name', formControlName);\n }\n }\n };\n /**\n * Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.render = function () {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n RadioButton.prototype.setDisabled = function () {\n this.element.disabled = true;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RadioButton.prototype.setText = function (text) {\n var label = this.getLabel();\n var textLabel = label.getElementsByClassName(LABEL)[0];\n if (textLabel) {\n textLabel.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n textLabel = this.createElement('span', { className: LABEL, innerHTML: text });\n label.appendChild(textLabel);\n }\n if (this.labelPosition === 'Before') {\n this.getLabel().classList.add('e-right');\n }\n else {\n this.getLabel().classList.remove('e-right');\n }\n };\n RadioButton.prototype.updateHtmlAttribute = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n var wrapper = this.element.parentElement;\n if (ATTRIBUTES.indexOf(key) > -1) {\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ').trim().split(' '));\n }\n else if (key === 'title' || key === 'style') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n else {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n RadioButton.prototype.unWireEvents = function () {\n var label = this.wrapper;\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n var rippleLabel = label.getElementsByTagName('label')[0];\n if (rippleLabel) {\n EventHandler.remove(rippleLabel, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(rippleLabel, 'mouseup', this.labelMouseUpHandler);\n EventHandler.remove(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n RadioButton.prototype.wireEvents = function () {\n var label = this.getLabel();\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var rippleLabel = label.getElementsByClassName(LABEL)[0];\n if (rippleLabel) {\n EventHandler.add(rippleLabel, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(rippleLabel, 'mouseup', this.labelMouseUpHandler, this);\n EventHandler.add(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n };\n /**\n * Click the RadioButton element\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to RadioButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.focusIn = function () {\n this.element.focus();\n };\n var RadioButton_1;\n __decorate([\n Event()\n ], RadioButton.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RadioButton.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RadioButton.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"value\", void 0);\n __decorate([\n Property(true)\n ], RadioButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], RadioButton.prototype, \"htmlAttributes\", void 0);\n RadioButton = RadioButton_1 = __decorate([\n NotifyPropertyChanges\n ], RadioButton);\n return RadioButton;\n}(Component));\nexport { RadioButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { EventHandler, remove, Browser } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { DropDownList, AutoComplete } from '@syncfusion/ej2-dropdowns';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { RadioButton, CheckBox } from '@syncfusion/ej2-buttons';\nimport { distinctStringValues, isComplexField, getComplexFieldID, getCustomDateFormat, applyBiggerTheme, performComplexDataOperation, registerEventHandlers, removeEventHandlers, clearReactVueTemplates } from '../base/util';\nimport { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { parentsUntil, appendChildren, extend, eventPromise } from '../base/util';\nimport * as events from '../base/constant';\nimport { ContextMenu } from '@syncfusion/ej2-navigations';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\nimport * as literals from '../base/string-literals';\n/**\n * @hidden\n * `ExcelFilter` module is used to handle filtering action.\n */\nvar ExcelFilterBase = /** @class */ (function (_super) {\n __extends(ExcelFilterBase, _super);\n /**\n * Constructor for excel filtering module\n *\n * @param {IXLFilter} parent - parent details\n * @param {Object} customFltrOperators - operator details\n * @hidden\n */\n function ExcelFilterBase(parent, customFltrOperators) {\n var _this = _super.call(this, parent) || this;\n _this.childRefs = [];\n _this.eventHandlers = {};\n _this.isDevice = false;\n _this.focusedMenuItem = null;\n _this.customFilterOperators = customFltrOperators;\n _this.isExcel = true;\n return _this;\n }\n ExcelFilterBase.prototype.getCMenuDS = function (type, operator) {\n var options = {\n number: ['Equal', 'NotEqual', '', 'LessThan', 'LessThanOrEqual', 'GreaterThan',\n 'GreaterThanOrEqual', 'Between', '', 'CustomFilter'],\n string: ['Equal', 'NotEqual', '', 'StartsWith', 'EndsWith', '', 'Contains', 'NotContains', '', 'CustomFilter']\n };\n options.date = options.number;\n options.datetime = options.number;\n options.dateonly = options.number;\n var model = [];\n for (var i = 0; i < options[\"\" + type].length; i++) {\n if (options[\"\" + type][parseInt(i.toString(), 10)].length) {\n if (operator) {\n model.push({\n text: this.getLocalizedLabel(options[\"\" + type][parseInt(i.toString(), 10)]) + '...',\n iconCss: 'e-icons e-icon-check ' + (operator === options[\"\" + type][parseInt(i.toString(), 10)].toLowerCase() ? '' : 'e-emptyicon')\n });\n }\n else {\n model.push({\n text: this.getLocalizedLabel(options[\"\" + type][parseInt(i.toString(), 10)]) + '...'\n });\n }\n }\n else {\n model.push({ separator: true });\n }\n }\n return model;\n };\n /**\n * To destroy the filter bar.\n *\n * @returns {void}\n * @hidden\n */\n ExcelFilterBase.prototype.destroy = function () {\n if (this.dlg) {\n this.unwireExEvents();\n _super.prototype.closeDialog.call(this);\n }\n if (!this.isDevice && this.menuObj) {\n var li = this.menuObj.element.querySelector('li.e-focused');\n if (!(li && parentsUntil(li, 'e-excel-menu'))) {\n this.destroyCMenu();\n }\n }\n if (this.dlgObj && !this.dlgObj.isDestroyed) {\n this.removeDialog();\n }\n };\n ExcelFilterBase.prototype.createMenu = function (type, isFiltered, isCheckIcon, eleOptions) {\n var options = { string: 'TextFilter', date: 'DateFilter', dateonly: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n this.menu = this.parent.createElement('div', { className: 'e-contextmenu-wrapper' });\n if (this.parent.enableRtl) {\n this.menu.classList.add('e-rtl');\n }\n else {\n this.menu.classList.remove('e-rtl');\n }\n if (this.parent.cssClass) {\n this.menu.classList.add(this.parent.cssClass);\n }\n var ul = this.parent.createElement('ul');\n var icon = isFiltered ? 'e-excl-filter-icon e-filtered' : 'e-excl-filter-icon';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.allowSorting && this.parent.getModuleName() === 'grid'\n && !this.options.isResponsiveFilter) {\n var hdrele = this.parent.getColumnHeaderByUid(eleOptions.uid).getAttribute('aria-sort');\n var colIsSort = this.parent.getColumnByField(eleOptions.field).allowSorting;\n var isAsc = (!colIsSort || hdrele === 'ascending') ? 'e-disabled e-excel-ascending' : 'e-excel-ascending';\n var isDesc = (!colIsSort || hdrele === 'descending') ? 'e-disabled e-excel-descending' : 'e-excel-descending';\n var ascName = (type === 'string') ? this.getLocalizedLabel('SortAtoZ') : (type === 'datetime' || type === 'date') ?\n this.getLocalizedLabel('SortByOldest') : this.getLocalizedLabel('SortSmallestToLargest');\n var descName = (type === 'string') ? this.getLocalizedLabel('SortZtoA') : (type === 'datetime' || type === 'date') ?\n this.getLocalizedLabel('SortByNewest') : this.getLocalizedLabel('SortLargestToSmallest');\n ul.appendChild(this.createMenuElem(ascName, isAsc, 'e-sortascending'));\n ul.appendChild(this.createMenuElem(descName, isDesc, 'e-sortdescending'));\n var separator = this.parent.createElement('li', { className: 'e-separator e-menu-item e-excel-separator' });\n ul.appendChild(separator);\n }\n if (!this.options.isResponsiveFilter) {\n ul.appendChild(this.createMenuElem(this.getLocalizedLabel('ClearFilter'), isFiltered ? '' : 'e-disabled', icon));\n }\n if (type !== 'boolean') {\n ul.appendChild(this.createMenuElem(this.getLocalizedLabel(options[\"\" + type]), 'e-submenu', isCheckIcon && this.ensureTextFilter() ? 'e-icon-check' : icon + ' e-emptyicon', true));\n }\n this.menu.appendChild(ul);\n this.parent.notify(events.beforeFltrcMenuOpen, { element: this.menu });\n this.parent.notify(events.refreshCustomFilterClearBtn, { isFiltered: isFiltered });\n };\n ExcelFilterBase.prototype.createMenuElem = function (val, className, iconName, isSubMenu) {\n var li = this.parent.createElement('li', { className: className + ' e-menu-item' });\n li.innerHTML = val;\n li.tabIndex = li.classList.contains('e-disabled') ? -1 : 0;\n li.insertBefore(this.parent.createElement('span', { className: 'e-menu-icon e-icons ' + iconName, attrs: { 'aria-hidden': 'true' } }), li.firstChild);\n if (isSubMenu) {\n li.appendChild(this.parent.createElement('span', { className: 'e-icons e-caret' }));\n }\n return li;\n };\n ExcelFilterBase.prototype.wireExEvents = function () {\n if (!Browser.isDevice) {\n EventHandler.add(this.dlg, 'mouseover', this.hoverHandler, this);\n }\n EventHandler.add(this.dlg, 'click', this.clickExHandler, this);\n EventHandler.add(this.dlg, 'keyup', this.keyUp, this);\n EventHandler.add(this.dlg, 'keydown', this.keyDown, this);\n };\n ExcelFilterBase.prototype.unwireExEvents = function () {\n if (!Browser.isDevice) {\n EventHandler.remove(this.dlg, 'mouseover', this.hoverHandler);\n }\n EventHandler.remove(this.dlg, 'click', this.clickExHandler);\n EventHandler.remove(this.dlg, 'keyup', this.keyUp);\n EventHandler.remove(this.dlg, 'keydown', this.keyDown);\n };\n ExcelFilterBase.prototype.clickExHandler = function (e) {\n var options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n var menuItem = parentsUntil(e.target, 'e-menu-item');\n if (menuItem) {\n if (this.getLocalizedLabel('ClearFilter') === menuItem.innerText.trim()) {\n this.clearFilter();\n this.closeDialog();\n }\n else if ((this.options.isResponsiveFilter || Browser.isDevice)\n && this.getLocalizedLabel(options[this.options.type]) === menuItem.innerText.trim()) {\n this.hoverHandler(e);\n }\n }\n };\n ExcelFilterBase.prototype.focusNextOrPrevElement = function (e, focusableElements, focusClassName) {\n var nextIndex = (e.key === 'ArrowUp' || (e.key === 'Tab' && e.shiftKey)) ? focusableElements.indexOf(document.activeElement) - 1\n : focusableElements.indexOf(document.activeElement) + 1;\n var nextElement = focusableElements[((nextIndex + focusableElements.length) % focusableElements.length)];\n // Set focus on the next / previous element\n if (nextElement) {\n nextElement.focus();\n var focusClass = nextElement.classList.contains('e-chk-hidden') ? 'e-chkfocus' : focusClassName;\n var target = nextElement.classList.contains('e-chk-hidden') ? parentsUntil(nextElement, 'e-ftrchk') : parentsUntil(nextElement, 'e-menu-item');\n this.excelSetFocus(target, focusClass);\n }\n };\n ExcelFilterBase.prototype.keyUp = function (e) {\n if ((e.key === 'Tab' && e.shiftKey) || e.key === 'Tab') {\n var focusClass = e.target.classList.contains('e-chk-hidden') ? 'e-chkfocus' : 'e-menufocus';\n var target = e.target.classList.contains('e-menu-item')\n ? parentsUntil(e.target, 'e-menu-item') : parentsUntil(e.target, 'e-ftrchk');\n this.excelSetFocus(target, focusClass);\n }\n else if ((e.key === 'ArrowUp' || e.key === 'ArrowDown') && !e.altKey) {\n e.preventDefault();\n var focusableElements = Array.from(this.dlg.querySelectorAll('input, button, [tabindex]:not([tabindex=\"-1\"]), .e-menu-item:not(.e-disabled):not(.e-separator)'));\n this.focusNextOrPrevElement(e, focusableElements, 'e-menufocus');\n }\n else if ((e.key === 'Enter' || e.code === 'ArrowRight') && e.target.classList.contains('e-menu-item')) {\n e.preventDefault();\n e.target.click();\n if (e.target.classList.contains('e-submenu')) {\n this.hoverHandler(e);\n this.menuObj.element.querySelector('.e-menu-item').focus();\n this.excelSetFocus(parentsUntil(this.menuObj.element.querySelector('.e-menu-item'), 'e-menu-item'), 'e-focused');\n this.focusedMenuItem = this.menuObj.element.querySelector('.e-menu-item');\n }\n }\n };\n ExcelFilterBase.prototype.keyDown = function (e) {\n //prevented up and down arrow key press default functionality to prevent the browser scroll when performing keyboard navigation in excel filter element.\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n }\n };\n ExcelFilterBase.prototype.excelSetFocus = function (elem, className) {\n var prevElem = document.querySelector('.' + className);\n if (prevElem) {\n prevElem.classList.remove(className);\n }\n if (elem) {\n elem.classList.add(className);\n }\n };\n ExcelFilterBase.prototype.destroyCMenu = function () {\n this.isCMenuOpen = false;\n if (this.menuObj && !this.menuObj.isDestroyed) {\n this.menuObj.destroy();\n EventHandler.remove(this.menuObj.element, 'keydown', this.contextKeyDownHandler);\n remove(this.cmenu);\n this.parent.notify(events.renderResponsiveCmenu, { target: null, header: '', isOpen: false, col: this.options.column });\n }\n };\n ExcelFilterBase.prototype.hoverHandler = function (e) {\n if (this.options.isResponsiveFilter && e.type === 'mouseover') {\n return;\n }\n var target = e.target.querySelector('.e-contextmenu');\n var li = parentsUntil(e.target, 'e-menu-item');\n var focused = this.menu.querySelector('.e-focused');\n var isSubMenu;\n if (focused) {\n focused.classList.remove('e-focused');\n }\n if (li) {\n li.classList.add('e-focused');\n isSubMenu = li.classList.contains('e-submenu');\n }\n if (target) {\n return;\n }\n if (!isSubMenu) {\n var submenu = this.menu.querySelector('.e-submenu');\n if (!isNullOrUndefined(submenu)) {\n submenu.classList.remove('e-selected');\n }\n this.destroyCMenu();\n }\n var selectedMenu = this.ensureTextFilter();\n if (!this.isCMenuOpen && isSubMenu) {\n li.classList.add('e-selected');\n this.isCMenuOpen = true;\n var menuOptions = {\n items: this.getCMenuDS(this.options.type, selectedMenu ? selectedMenu.replace(/\\s/g, '') : undefined),\n select: this.selectHandler.bind(this),\n onClose: this.destroyCMenu.bind(this),\n enableRtl: this.parent.enableRtl,\n animationSettings: { effect: 'None' },\n beforeClose: this.preventClose.bind(this),\n cssClass: this.options.isResponsiveFilter && this.parent.cssClass ?\n 'e-res-contextmenu-wrapper' + ' ' + this.parent.cssClass : this.options.isResponsiveFilter ?\n 'e-res-contextmenu-wrapper' : this.parent.cssClass ? this.parent.cssClass : ''\n };\n this.parent.element.appendChild(this.cmenu);\n this.menuObj = new ContextMenu(menuOptions, this.cmenu);\n EventHandler.add(this.menuObj.element, 'keydown', this.contextKeyDownHandler, this);\n var client = this.menu.querySelector('.e-submenu').getBoundingClientRect();\n var pos = { top: 0, left: 0 };\n if (this.options.isResponsiveFilter) {\n var options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n var content = document.querySelector('.e-responsive-dialog > .e-dlg-header-content');\n var height = content.offsetHeight + 4;\n this.menuObj.element.style.height = 'calc(100% - ' + height + 'px)';\n this.menuObj['open'](height, 0, document.body);\n var header = this.getLocalizedLabel(options[this.options.type]);\n this.parent.notify(events.renderResponsiveCmenu, {\n target: this.menuObj.element.parentElement, header: header, isOpen: true\n });\n }\n else {\n if (Browser.isDevice) {\n this.isDevice = true;\n var contextRect = this.getContextBounds();\n pos.top = (window.innerHeight - contextRect.height) / 2;\n pos.left = (window.innerWidth - contextRect.width) / 2;\n this.closeDialog();\n this.isDevice = false;\n }\n else {\n pos.top = Browser.isIE ? window.pageYOffset + client.top : window.scrollY + client.top;\n pos.left = this.getCMenuYPosition(this.dlg);\n }\n this.menuObj['open'](pos.top, pos.left, e.target);\n }\n applyBiggerTheme(this.parent.element, this.menuObj.element.parentElement);\n }\n };\n ExcelFilterBase.prototype.contextKeyDownHandler = function (e) {\n if ((e.key === 'Tab' && e.shiftKey) || e.key === 'Tab') {\n e.preventDefault();\n var focusableElements = Array.from(this.menuObj.element.querySelectorAll('[tabindex]:not([tabindex=\"-1\"]), .e-menu-item:not(.e-disabled):not(.e-separator)'));\n // Focus the next / previous context menu item\n this.focusNextOrPrevElement(e, focusableElements, 'e-focused');\n }\n else if (e.key === 'ArrowLeft' || e.key === 'Escape') {\n e.preventDefault();\n this.menuObj.close();\n this.focusedMenuItem = null;\n document.querySelector('.e-submenu.e-menu-item').classList.remove('e-selected');\n document.querySelector('.e-submenu.e-menu-item').focus();\n }\n };\n ExcelFilterBase.prototype.ensureTextFilter = function () {\n var selectedMenu;\n var predicates = this.existingPredicate[this.options.field];\n if (predicates && predicates.length === 2) {\n if (predicates[0].operator === 'greaterthanorequal' && predicates[1].operator === 'lessthanorequal') {\n selectedMenu = 'between';\n }\n else {\n selectedMenu = 'customfilter';\n }\n }\n else {\n if (predicates && predicates.length === 1) {\n this.optrData = this.customFilterOperators[this.options.type + 'Operator'];\n selectedMenu = predicates[0].operator;\n }\n }\n return selectedMenu;\n };\n ExcelFilterBase.prototype.preventClose = function (args) {\n if (this.options && this.options.isResponsiveFilter && args.event) {\n var target = args.event.target;\n var isFilterBack = target.classList.contains('e-resfilterback')\n || target.classList.contains('e-res-back-btn') || target.classList.contains('e-menu-item');\n args.cancel = !isFilterBack;\n }\n else {\n if (args.event instanceof MouseEvent && args.event.target.classList.contains('e-submenu')) {\n args.cancel = true;\n }\n }\n };\n ExcelFilterBase.prototype.getContextBounds = function () {\n this.menuObj.element.style.display = 'block';\n return this.menuObj.element.getBoundingClientRect();\n };\n ExcelFilterBase.prototype.getCMenuYPosition = function (target) {\n var contextWidth = this.getContextBounds().width;\n var targetPosition = target.getBoundingClientRect();\n var leftPos = targetPosition.right + contextWidth - this.parent.element.clientWidth;\n var targetBorder = target.offsetWidth - target.clientWidth;\n targetBorder = targetBorder ? targetBorder + 1 : 0;\n return (leftPos < 1) ? (targetPosition.right + 1 - targetBorder) : (targetPosition.left - contextWidth - 1 + targetBorder);\n };\n ExcelFilterBase.prototype.openDialog = function (options) {\n var _this = this;\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n if (options.cancel) {\n return;\n }\n this.dialogObj.dataBind();\n var filterLength = (this.existingPredicate[options.field] && this.existingPredicate[options.field].length) ||\n this.options.filteredColumns.filter(function (col) {\n return _this.options.field === col.field;\n }).length;\n this.createMenu(options.type, filterLength > 0, (filterLength === 1 || filterLength === 2), options);\n this.dlg.insertBefore(this.menu, this.dlg.firstChild);\n this.dlg.classList.add('e-excelfilter');\n if (this.parent.enableRtl) {\n this.dlg.classList.add('e-rtl');\n }\n this.dlg.classList.remove('e-checkboxfilter');\n this.cmenu = this.parent.createElement('ul', { className: 'e-excel-menu' });\n if (options.column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, {});\n }\n this.wireExEvents();\n };\n ExcelFilterBase.prototype.closeDialog = function () {\n this.destroy();\n };\n ExcelFilterBase.prototype.selectHandler = function (e) {\n if (e.item) {\n this.parent.notify(events.filterCmenuSelect, {});\n this.menuItem = e.item;\n this.closeDialog();\n this.renderDialogue(e);\n }\n };\n /**\n * @hidden\n * @param {MenuEventArgs} e - event args\n * @returns {void}\n */\n ExcelFilterBase.prototype.renderDialogue = function (e) {\n var _this = this;\n var target = e ? e.element : undefined;\n var column = this.options.field;\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var mainDiv = this.parent.createElement('div', {\n className: 'e-xlfl-maindiv',\n id: isComplex ? complexFieldName + '-xlflmenu' : column + '-xlflmenu'\n });\n this.dlgDiv = this.parent.createElement('div', {\n className: 'e-xlflmenu',\n id: isComplex ? complexFieldName + '-xlfldlg' : column + '-xlfldlg'\n });\n if (this.options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-resfilter > .e-dlg-content > .e-xl-customfilterdiv');\n responsiveCnt.appendChild(this.dlgDiv);\n }\n else {\n this.parent.element.appendChild(this.dlgDiv);\n }\n this.dlgObj = new Dialog({\n header: this.getLocalizedLabel('CustomFilter'),\n isModal: true,\n overlayClick: this.removeDialog.bind(this),\n showCloseIcon: true,\n locale: this.parent.locale,\n closeOnEscape: true,\n target: document.body,\n // target: this.parent.element,\n visible: false,\n enableRtl: this.parent.enableRtl,\n open: function () {\n var rows = [].slice.call(_this.dlgObj.element.querySelectorAll('table.e-xlfl-table tr.e-xlfl-fields'));\n for (var i = 0; i < rows.length; i++) {\n var valInput = rows[i].children[1].querySelector('.e-control');\n var dropDownList = rows[i]\n .querySelector('.e-dropdownlist.e-control')['ej2_instances'][0];\n if (dropDownList.value === 'isempty' || dropDownList.value === 'isnotempty' ||\n dropDownList.value === 'isnull' || dropDownList.value === 'isnotnull') {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else if (valInput && !isNullOrUndefined(valInput.getAttribute('disabled'))) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n }\n var row = _this.dlgObj.element.querySelector('table.e-xlfl-table>tr');\n if (_this.options.column.filterTemplate) {\n var templateField_1 = isComplexField(_this.options.column.field) ?\n getComplexFieldID(_this.options.column.field) : _this.options.column.field;\n var isReactCompiler = _this.parent.isReact && typeof (_this.options.column.filterTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = _this.parent.parentDetails && _this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n _this.parent.renderTemplates(function () {\n row.querySelector('#' + templateField_1 + '-xlfl-frstvalue').focus();\n });\n }\n else {\n row.querySelector('#' + templateField_1 + '-xlfl-frstvalue').focus();\n }\n }\n else {\n //(row.cells[1].querySelector('input:not([type=hidden])') as HTMLElement).focus();\n }\n },\n close: this.removeDialog.bind(this),\n created: this.createdDialog.bind(this, target, column),\n buttons: [{\n click: this.filterBtnClick.bind(this, column),\n buttonModel: {\n content: this.getLocalizedLabel('OKButton'), isPrimary: true,\n cssClass: this.parent.cssClass ? 'e-xlfl-okbtn' + ' ' + this.parent.cssClass : 'e-xlfl-okbtn'\n }\n },\n {\n click: this.removeDialog.bind(this),\n buttonModel: { content: this.getLocalizedLabel('CancelButton'),\n cssClass: this.parent.cssClass ? 'e-xlfl-cancelbtn' + ' ' + this.parent.cssClass : 'e-xlfl-cancelbtn' }\n }],\n content: mainDiv,\n width: 430,\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dlgDiv.setAttribute('aria-label', this.getLocalizedLabel('CustomFilterDialogARIA'));\n this.childRefs.unshift(this.dlgObj);\n this.dlgObj.appendTo(this.dlgDiv);\n };\n ExcelFilterBase.prototype.renderResponsiveDialog = function () {\n if (this.options.isResponsiveFilter) {\n var rowResponsiveDlg = document.querySelector('.e-row-responsive-filter');\n if (rowResponsiveDlg) {\n rowResponsiveDlg.classList.remove('e-row-responsive-filter');\n }\n this.dlgObj.buttons = [{}];\n this.dlgObj.header = undefined;\n this.dlgObj.position = { X: '', Y: '' };\n this.dlgObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-xl-customfilterdiv');\n this.dlgObj.width = '100%';\n this.dlgObj.isModal = false;\n this.dlgObj.showCloseIcon = false;\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n ExcelFilterBase.prototype.removeDialog = function () {\n this.parent.notify(events.customFilterClose, {});\n if ((this.parent.isReact || this.parent.isVue) && this.parent.destroyTemplate !== undefined) {\n clearReactVueTemplates(this.parent, ['filterTemplate']);\n }\n this.removeObjects(this.childRefs);\n remove(this.dlgDiv);\n this.parent.notify(events.filterDialogClose, {});\n };\n ExcelFilterBase.prototype.createdDialog = function (target, column) {\n this.renderCustomFilter(target, column);\n this.dlgObj.element.style.left = '0px';\n if (!this.options.isResponsiveFilter) {\n this.dlgObj.element.style.top = '0px';\n }\n else {\n var content = document.querySelector('.e-responsive-dialog > .e-dlg-header-content');\n var height = content.offsetHeight + 4;\n this.dlgObj.element.style.top = height + 'px';\n }\n if (!this.options.isResponsiveFilter && Browser.isDevice && window.innerWidth < 440) {\n this.dlgObj.element.style.width = '90%';\n }\n this.parent.notify(events.beforeCustomFilterOpen, { column: column, dialog: this.dialogObj });\n this.dlgObj.show();\n applyBiggerTheme(this.parent.element, this.dlgObj.element.parentElement);\n };\n ExcelFilterBase.prototype.renderCustomFilter = function (target, column) {\n var dlgConetntEle = this.dlgObj.element.querySelector('.e-xlfl-maindiv');\n var dlgFields = this.parent.createElement('div', { innerHTML: this.getLocalizedLabel('ShowRowsWhere'), className: 'e-xlfl-dlgfields' });\n dlgConetntEle.appendChild(dlgFields);\n //column name\n var fieldSet = this.parent.createElement('div', { innerHTML: this.options.displayName, className: 'e-xlfl-fieldset' });\n dlgConetntEle.appendChild(fieldSet);\n this.renderFilterUI(column, dlgConetntEle);\n };\n /**\n * @hidden\n * @param {string} col - Defines column details\n * @returns {void}\n */\n ExcelFilterBase.prototype.filterBtnClick = function (col) {\n var isComplex = !isNullOrUndefined(col) && isComplexField(col);\n var complexFieldName = !isNullOrUndefined(col) && getComplexFieldID(col);\n var colValue = isComplex ? complexFieldName : col;\n var fValue = this.dlgDiv.querySelector('#' + colValue + '-xlfl-frstvalue').ej2_instances[0];\n var fOperator = this.dlgDiv.querySelector('#' + colValue + '-xlfl-frstoptr').ej2_instances[0];\n var sValue = this.dlgDiv.querySelector('#' + colValue + '-xlfl-secndvalue').ej2_instances[0];\n var sOperator = this.dlgDiv.querySelector('#' + colValue + '-xlfl-secndoptr').ej2_instances[0];\n var checkBoxValue;\n if (this.options.type === 'string') {\n var checkBox = this.dlgDiv.querySelector('#' + colValue + '-xlflmtcase').ej2_instances[0];\n checkBoxValue = checkBox.checked;\n }\n var andRadio = this.dlgDiv.querySelector('#' + colValue + 'e-xlfl-frstpredicate').ej2_instances[0];\n var predicate = (andRadio.checked ? 'and' : 'or');\n if (sValue.value === null) {\n predicate = 'or';\n }\n this.filterByColumn(this.options.field, fOperator.value, fValue.value, predicate, checkBoxValue, this.options.ignoreAccent, sOperator.value, sValue.value);\n this.removeDialog();\n };\n /**\n * @hidden\n * Filters grid row by column name with given options.\n *\n * @param {string} fieldName - Defines the field name of the filter column.\n * @param {string} firstOperator - Defines the first operator by how to filter records.\n * @param {string | number | Date | boolean} firstValue - Defines the first value which is used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query with another by using AND or OR predicate.\n * @param {boolean} matchCase - If ignore case set to true, then filter records with exact match or else\n * filter records with case insensitive(uppercase and lowercase letters treated as same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true, then ignores the diacritic characters or accents when filtering.\n * @param {string} secondOperator - Defines the second operator by how to filter records.\n * @param {string | number | Date | boolean} secondValue - Defines the first value which is used to filter records.\n * @returns {void}\n */\n ExcelFilterBase.prototype.filterByColumn = function (fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue) {\n var col = this.parent.getColumnByField ? this.parent.getColumnByField(fieldName) : this.options.column;\n var field = this.isForeignColumn(col) ? col.foreignKeyValue : fieldName;\n var fColl = [];\n var mPredicate;\n var arg = {\n instance: this, handler: this.filterByColumn, arg1: fieldName, arg2: firstOperator, arg3: firstValue, arg4: predicate,\n arg5: matchCase, arg6: ignoreAccent, arg7: secondOperator, arg8: secondValue, cancel: false\n };\n this.parent.notify(events.fltrPrevent, arg);\n if (arg.cancel) {\n return;\n }\n fColl.push({\n field: field,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: firstOperator,\n value: arg.arg3,\n type: this.options.type\n });\n mPredicate = new Predicate(field, firstOperator.toLowerCase(), arg.arg3, !matchCase, ignoreAccent);\n if (!isNullOrUndefined(secondValue) && !isNullOrUndefined(secondOperator)) {\n fColl.push({\n field: field,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: secondOperator,\n value: arg.arg8,\n type: this.options.type\n });\n mPredicate = mPredicate[\"\" + predicate](field, secondOperator.toLowerCase(), secondValue, !matchCase, ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: mPredicate, actualPredicate: fColl\n };\n if (this.isForeignColumn(col)) {\n this.foreignKeyFilter(args, fColl, mPredicate);\n }\n else {\n this.options.handler(args);\n }\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderOperatorUI = function (column, table, elementID, predicates, isFirst) {\n var fieldElement = this.parent.createElement('tr', { className: 'e-xlfl-fields', attrs: { role: 'row' } });\n table.appendChild(fieldElement);\n var xlfloptr = this.parent.createElement('td', { className: 'e-xlfl-optr' });\n fieldElement.appendChild(xlfloptr);\n var optrDiv = this.parent.createElement('div', { className: 'e-xlfl-optrdiv' });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var optrInput = this.parent\n .createElement('input', { id: isComplex ? complexFieldName + elementID : column + elementID });\n optrDiv.appendChild(optrInput);\n xlfloptr.appendChild(optrDiv);\n var optr = this.options.type + 'Operator';\n var dropDatasource = this.customFilterOperators[\"\" + optr];\n this.optrData = dropDatasource;\n var selectedValue = this.dropSelectedVal(this.options.column, predicates, isFirst);\n //Trailing three dots are sliced.\n var menuText = '';\n if (this.menuItem) {\n menuText = this.menuItem.text.slice(0, -3);\n if (menuText !== this.getLocalizedLabel('CustomFilter')) {\n selectedValue = isFirst ? menuText : undefined;\n }\n if (menuText === this.getLocalizedLabel('Between')) {\n selectedValue = this.getLocalizedLabel(isFirst ? 'GreaterThanOrEqual' : 'LessThanOrEqual');\n }\n }\n var col = this.options.column;\n var dropOptr = new DropDownList(extend({\n dataSource: dropDatasource,\n fields: { text: 'text', value: 'value' },\n text: selectedValue,\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, col.filter.params));\n this.childRefs.unshift(dropOptr);\n var evt = { 'open': this.dropDownOpen.bind(this), 'change': this.dropDownValueChange.bind(this) };\n registerEventHandlers(optrInput.id, [literals.open, literals.change], evt, this);\n dropOptr.addEventListener(literals['open'], this.eventHandlers[optrInput.id][literals.open]);\n dropOptr.addEventListener(literals.change, this.eventHandlers[optrInput.id][literals.change]);\n dropOptr.appendTo(optrInput);\n var operator = this.getSelectedValue(selectedValue);\n return { fieldElement: fieldElement, operator: operator };\n };\n ExcelFilterBase.prototype.removeHandlersFromComponent = function (component) {\n if (component.element.classList.contains('e-dropdownlist')) {\n removeEventHandlers(component, [literals.open, literals.change], this);\n }\n else if (component.element.classList.contains('e-autocomplete')) {\n removeEventHandlers(component, [events.actionComplete, literals.focus], this);\n }\n };\n ExcelFilterBase.prototype.dropDownOpen = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n };\n ExcelFilterBase.prototype.dropDownValueChange = function (args) {\n if (args.element.id.includes('-xlfl-frstoptr')) {\n this.firstOperator = args.value.toString();\n }\n else {\n this.secondOperator = args.value.toString();\n }\n var valInput = args.element.closest('.e-xlfl-fields').children[1].querySelector('.e-control');\n var dropDownList = args.element['ej2_instances'][0];\n if (dropDownList.value === 'isempty' || dropDownList.value === 'isnotempty' ||\n dropDownList.value === 'isnull' || dropDownList.value === 'isnotnull') {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else if (!isNullOrUndefined(valInput.getAttribute('disabled'))) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n };\n /**\n * @hidden\n * @returns {FilterUI} returns filter UI\n */\n ExcelFilterBase.prototype.getFilterUIInfo = function () {\n return { firstOperator: this.firstOperator, secondOperator: this.secondOperator, field: this.options.field };\n };\n ExcelFilterBase.prototype.getSelectedValue = function (text) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('text', 'equal', text));\n return !isNullOrUndefined(selectedField[0]) ? selectedField[0].value : '';\n };\n ExcelFilterBase.prototype.dropSelectedVal = function (col, predicates, isFirst) {\n var operator;\n if (predicates && predicates.length > 0) {\n operator = predicates.length === 2 ?\n (isFirst ? predicates[0].operator : predicates[1].operator) :\n (isFirst ? predicates[0].operator : undefined);\n }\n else if (isFirst && col.type === 'string' && !col.filter.operator) {\n operator = 'startswith';\n }\n else {\n operator = isFirst ? col.filter.operator || 'equal' : undefined;\n }\n return this.getSelectedText(operator);\n };\n ExcelFilterBase.prototype.getSelectedText = function (operator) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('value', 'equal', operator));\n return !isNullOrUndefined(selectedField[0]) ? selectedField[0].text : '';\n };\n ExcelFilterBase.prototype.renderFilterUI = function (column, dlgConetntEle) {\n var predicates = this.existingPredicate[\"\" + column];\n var table = this.parent.createElement('table', { className: 'e-xlfl-table', attrs: { role: 'grid' } });\n dlgConetntEle.appendChild(table);\n var colGroup = this.parent.createElement(literals.colGroup);\n colGroup.innerHTML = '';\n table.appendChild(colGroup);\n //Renders first dropdown\n var optr = this.renderOperatorUI(column, table, '-xlfl-frstoptr', predicates, true);\n this.firstOperator = optr.operator;\n //Renders first value\n this.renderFlValueUI(column, optr, '-xlfl-frstvalue', predicates, true);\n var predicate = this.parent.createElement('tr', { className: 'e-xlfl-predicate', attrs: { role: 'row' } });\n table.appendChild(predicate);\n //Renders first radion button\n this.renderRadioButton(column, predicate, predicates);\n //Renders second dropdown\n optr = this.renderOperatorUI(column, table, '-xlfl-secndoptr', predicates, false);\n this.secondOperator = optr.operator;\n //Renders second text box\n this.renderFlValueUI(column, optr, '-xlfl-secndvalue', predicates, false);\n };\n ExcelFilterBase.prototype.renderRadioButton = function (column, tr, predicates) {\n var td = this.parent.createElement('td', { className: 'e-xlfl-radio', attrs: { 'colSpan': '2' } });\n tr.appendChild(td);\n var radioDiv = this.parent\n .createElement('div', { className: 'e-xlfl-radiodiv', attrs: { 'style': 'display: inline-block' } });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var frstpredicate = this.parent.createElement('input', { id: isComplex ? complexFieldName + 'e-xlfl-frstpredicate' : column + 'e-xlfl-frstpredicate', attrs: { 'type': 'radio' } });\n var secndpredicate = this.parent.createElement('input', { id: isComplex ? complexFieldName + 'e-xlfl-secndpredicate' : column + 'e-xlfl-secndpredicate', attrs: { 'type': 'radio' } });\n //appends into div\n radioDiv.appendChild(frstpredicate);\n radioDiv.appendChild(secndpredicate);\n td.appendChild(radioDiv);\n if (this.options.type === 'string') {\n this.renderMatchCase(column, tr, td, '-xlflmtcase', predicates);\n }\n // Initialize AND RadioButton component.\n var andRadio = new RadioButton({\n label: this.getLocalizedLabel('AND'),\n name: 'default', checked: true,\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.unshift(andRadio);\n // Initialize OR RadioButton component.\n var orRadio = new RadioButton({\n label: this.getLocalizedLabel('OR'),\n name: 'default',\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.unshift(orRadio);\n var flValue = predicates && predicates.length === 2 ? predicates[1].predicate : 'and';\n if (flValue === 'and') {\n andRadio.checked = true;\n orRadio.checked = false;\n }\n else {\n orRadio.checked = true;\n andRadio.checked = false;\n }\n // Render initialized RadioButton.\n andRadio.appendTo(frstpredicate);\n orRadio.appendTo(secndpredicate);\n andRadio.element.nextElementSibling.classList.add('e-xlfl-radio-and');\n orRadio.element.nextElementSibling.classList.add('e-xlfl-radio-or');\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ExcelFilterBase.prototype.removeObjects = function (elements) {\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var obj = elements_1[_i];\n if (obj && !obj.isDestroyed) {\n this.removeHandlersFromComponent(obj);\n obj.destroy();\n }\n }\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderFlValueUI = function (column, optr, elementId, predicates, isFirst) {\n var value = this.parent.createElement('td', { className: 'e-xlfl-value' });\n optr.fieldElement.appendChild(value);\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var valueDiv = this.parent.createElement('div', { className: 'e-xlfl-valuediv' });\n var isFilteredCol = this.options.filteredColumns.some(function (col) { return column === col.field; });\n var fltrPredicates = this.options.filteredColumns.filter(function (col) { return col.field === column; });\n if (this.options.column.filterTemplate) {\n var data = {};\n var columnObj = this.options.column;\n if (isFilteredCol && elementId) {\n data = this.getExcelFilterData(elementId, data, columnObj, predicates, fltrPredicates);\n }\n var isReactCompiler = this.parent.isReact && typeof (this.options.column.filterTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + columnObj.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n this.options.column.getFilterTemplate()(data, this.parent, 'filterTemplate', tempID, null, null, valueDiv);\n }\n else {\n var element = this.options.column.getFilterTemplate()(data, this.parent, 'filterTemplate', tempID);\n appendChildren(valueDiv, element);\n }\n if (isReactCompiler || isReactChild) {\n this.parent.renderTemplates(function () {\n valueDiv.querySelector('input').id = isComplex ? complexFieldName + elementId : column + elementId;\n value.appendChild(valueDiv);\n });\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this.parent.isAngular ? valueDiv.children[0] : valueDiv.querySelector('input')).id = isComplex ?\n complexFieldName + elementId : column + elementId;\n value.appendChild(valueDiv);\n }\n }\n else {\n var valueInput = this.parent\n .createElement('input', { id: isComplex ? complexFieldName + elementId : column + elementId });\n valueDiv.appendChild(valueInput);\n value.appendChild(valueDiv);\n var flValue = void 0;\n var predicate = void 0;\n if (predicates && predicates.length > 0) {\n predicate = predicates.length === 2 ?\n (isFirst ? predicates[0] : predicates[1]) :\n (isFirst ? predicates[0] : undefined);\n flValue = (predicate && predicate.operator === optr.operator) ? predicate.value : undefined;\n if (isNullOrUndefined(flValue)) {\n flValue = undefined;\n }\n }\n var types = {\n 'string': this.renderAutoComplete.bind(this),\n 'number': this.renderNumericTextBox.bind(this),\n 'date': this.renderDate.bind(this),\n 'dateonly': this.renderDate.bind(this),\n 'datetime': this.renderDateTime.bind(this)\n };\n types[this.options.type](this.options, column, valueInput, flValue, this.parent.enableRtl);\n }\n };\n ExcelFilterBase.prototype.getExcelFilterData = function (elementId, data, columnObj, predicates, fltrPredicates) {\n var predIndex = elementId === '-xlfl-frstvalue' ? 0 : 1;\n if (elementId === '-xlfl-frstvalue' || fltrPredicates.length > 1) {\n data = { column: predicates instanceof Array ? predicates[parseInt(predIndex.toString(), 10)] : predicates };\n var indx = this.options.column.columnData && fltrPredicates.length > 1 ?\n (this.options.column.columnData.length === 1 ? 0 : 1) : predIndex;\n data[this.options.field] = columnObj.foreignKeyValue ?\n this.options.column.columnData[parseInt(indx.toString(), 10)][columnObj.foreignKeyValue] :\n fltrPredicates[parseInt(indx.toString(), 10)].value;\n if (this.options.foreignKeyValue) {\n data[this.options.foreignKeyValue] = this.options.column\n .columnData[parseInt(indx.toString(), 10)][columnObj.foreignKeyValue];\n }\n }\n return data;\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderMatchCase = function (column, tr, matchCase, elementId, predicates) {\n var matchCaseDiv = this.parent.createElement('div', { className: 'e-xlfl-matchcasediv', attrs: { 'style': 'display: inline-block' } });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var matchCaseInput = this.parent.createElement('input', { id: isComplex ? complexFieldName + elementId : column + elementId, attrs: { 'type': 'checkbox' } });\n matchCaseDiv.appendChild(matchCaseInput);\n matchCase.appendChild(matchCaseDiv);\n var flValue = predicates && predicates.length > 0 ?\n (predicates && predicates.length === 2 ? predicates[1].matchCase : predicates[0].matchCase) :\n false;\n // Initialize Match Case check box.\n var checkbox = new CheckBox({\n label: this.getLocalizedLabel('MatchCase'),\n enableRtl: this.parent.enableRtl, checked: flValue,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.unshift(checkbox);\n // Render initialized CheckBox.\n checkbox.appendTo(matchCaseInput);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderDate = function (options, column, inputValue, fValue, isRtl) {\n var format = getCustomDateFormat(options.format, options.type) || options.format;\n var datePicker = new DatePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: this.getLocalizedLabel('CustomFilterDatePlaceHolder'),\n width: '100%',\n enableRtl: isRtl,\n value: new Date(fValue),\n locale: this.parent.locale\n }, options.column.filter.params));\n this.childRefs.unshift(datePicker);\n datePicker.appendTo(inputValue);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderDateTime = function (options, column, inputValue, fValue, isRtl) {\n var format = getCustomDateFormat(options.format, options.type);\n var dateTimePicker = new DateTimePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: this.getLocalizedLabel('CustomFilterDatePlaceHolder'),\n width: '100%',\n enableRtl: isRtl,\n value: new Date(fValue),\n locale: this.parent.locale\n }, options.column.filter.params));\n this.childRefs.unshift(dateTimePicker);\n dateTimePicker.appendTo(inputValue);\n };\n ExcelFilterBase.prototype.completeAction = function (e) {\n e.result = distinctStringValues(e.result);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderNumericTextBox = function (options, column, inputValue, fValue, isRtl) {\n var numericTextBox = new NumericTextBox(extend({\n format: options.format,\n placeholder: this.getLocalizedLabel('CustomFilterPlaceHolder'),\n enableRtl: isRtl,\n value: fValue,\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, options.column.filter.params));\n this.childRefs.unshift(numericTextBox);\n numericTextBox.appendTo(inputValue);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderAutoComplete = function (options, column, inputValue, fValue, isRtl) {\n var colObj = this.options.column;\n var isForeignColumn = this.isForeignColumn(colObj);\n var dataSource = isForeignColumn ? colObj.dataSource : options.dataSource;\n var fields = { value: isForeignColumn ? colObj.foreignKeyValue : column };\n var actObj = new AutoComplete(extend({\n dataSource: dataSource instanceof DataManager ? dataSource : new DataManager(dataSource),\n fields: fields,\n query: this.getQuery(),\n sortOrder: 'Ascending',\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n autofill: true,\n placeholder: this.getLocalizedLabel('CustomFilterPlaceHolder'),\n enableRtl: isRtl,\n text: fValue\n }, colObj.filter.params));\n if (dataSource && 'result' in dataSource) {\n var defObj = eventPromise({ requestType: 'stringfilterrequest' }, this.getQuery());\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n actObj.dataSource = new DataManager(e);\n });\n }\n this.childRefs.unshift(actObj);\n var evt = { 'actionComplete': this.acActionComplete(actObj, column), 'focus': this.acFocus(actObj, column, options, inputValue) };\n registerEventHandlers(inputValue.id, [events.actionComplete, literals.focus], evt, this);\n actObj.addEventListener(literals.focus, this.eventHandlers[inputValue.id][literals.focus]);\n actObj.addEventListener(events.actionComplete, this.eventHandlers[inputValue.id][events.actionComplete]);\n actObj.appendTo(inputValue);\n };\n ExcelFilterBase.prototype.acActionComplete = function (actObj, column) {\n return function (e) {\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n e.result = e.result.filter(function (obj, index, arr) {\n return arr.map(function (mapObject) {\n return isComplex ? performComplexDataOperation(actObj.fields.value, mapObject)\n : mapObject[actObj.fields.value];\n }).indexOf(isComplex ? performComplexDataOperation(actObj.fields.value, obj) :\n obj[actObj.fields.value]) === index;\n });\n };\n };\n ExcelFilterBase.prototype.acFocus = function (actObj, column, options, inputValue) {\n var _this = this;\n return function () {\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var columnvalue = isComplex ? complexFieldName : column;\n actObj.filterType = _this.dlgDiv.querySelector('#' + columnvalue +\n (inputValue.id === (columnvalue + '-xlfl-frstvalue') ?\n '-xlfl-frstoptr' :\n '-xlfl-secndoptr')).ej2_instances[0].value;\n actObj.ignoreCase = options.type === 'string' ?\n !_this.dlgDiv.querySelector('#' + columnvalue + '-xlflmtcase').ej2_instances[0].checked :\n true;\n actObj.filterType = !isNullOrUndefined(actObj.filterType) ? actObj.filterType :\n 'equal';\n };\n };\n return ExcelFilterBase;\n}(CheckBoxFilterBase));\nexport { ExcelFilterBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ExcelFilterBase } from '../common/excel-filter-base';\nimport { CheckBoxFilter } from './checkbox-filter';\nimport * as events from '../base/constant';\n/**\n * @hidden\n * `ExcelFilter` module is used to handle filtering action.\n */\nvar ExcelFilter = /** @class */ (function (_super) {\n __extends(ExcelFilter, _super);\n /**\n * Constructor for excelbox filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the Filtersettings\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @param {object} customFltrOperators - specifies the customFltrOperators\n * @hidden\n */\n function ExcelFilter(parent, filterSettings, serviceLocator, customFltrOperators) {\n var _this = _super.call(this, parent, filterSettings, serviceLocator) || this;\n _this.parent = parent;\n _this.isresetFocus = true;\n _this.excelFilterBase = new ExcelFilterBase(parent, customFltrOperators);\n return _this;\n }\n /**\n * To destroy the excel filter.\n *\n * @returns {void}\n * @hidden\n */\n ExcelFilter.prototype.destroy = function () {\n this.excelFilterBase.closeDialog();\n };\n ExcelFilter.prototype.openDialog = function (options) {\n this.excelFilterBase.openDialog(options);\n };\n ExcelFilter.prototype.closeDialog = function () {\n this.excelFilterBase.closeDialog();\n if (this.isresetFocus) {\n this.parent.notify(events.restoreFocus, {});\n }\n };\n ExcelFilter.prototype.clearCustomFilter = function (col) {\n this.excelFilterBase.clearFilter(col);\n };\n ExcelFilter.prototype.closeResponsiveDialog = function (isCustomFilter) {\n if (isCustomFilter) {\n this.excelFilterBase.removeDialog();\n }\n else {\n this.closeDialog();\n }\n };\n ExcelFilter.prototype.applyCustomFilter = function (args) {\n if (!args.isCustomFilter) {\n this.excelFilterBase.fltrBtnHandler();\n this.excelFilterBase.closeDialog();\n }\n else {\n this.excelFilterBase.filterBtnClick(args.col.field);\n }\n };\n ExcelFilter.prototype.filterByColumn = function (fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue) {\n this.excelFilterBase.filterByColumn(fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue);\n };\n /**\n * @returns {FilterUI} returns the filterUI\n * @hidden\n */\n ExcelFilter.prototype.getFilterUIInfo = function () {\n return this.excelFilterBase.getFilterUIInfo();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n ExcelFilter.prototype.getModuleName = function () {\n return 'excelFilter';\n };\n return ExcelFilter;\n}(CheckBoxFilter));\nexport { ExcelFilter };\n","import { EventHandler, isNullOrUndefined, extend, closest, getValue } from '@syncfusion/ej2-base';\nimport { getActualPropFromColl, isActionPrevent, getColumnByForeignKeyValue } from '../base/util';\nimport { remove, matches } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport { CellType, ResponsiveDialogAction } from '../base/enum';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { Cell } from '../models/cell';\nimport { Row } from '../models/row';\nimport { FilterCellRenderer } from '../renderer/filter-cell-renderer';\nimport { parentsUntil, addFixedColumnBorder, applyStickyLeftRightPosition } from '../base/util';\nimport { FilterMenuRenderer } from '../renderer/filter-menu-renderer';\nimport { CheckBoxFilter } from '../actions/checkbox-filter';\nimport { ExcelFilter } from '../actions/excel-filter';\nimport * as literals from '../base/string-literals';\nimport { Input } from '@syncfusion/ej2-inputs';\n/**\n *\n * The `Filter` module is used to handle filtering action.\n */\nvar Filter = /** @class */ (function () {\n /**\n * Constructor for Grid filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the filterSettings\n * @param {ServiceLocator} serviceLocator - specifes the serviceLocator\n * @hidden\n */\n function Filter(parent, filterSettings, serviceLocator) {\n this.predicate = 'and';\n this.contentRefresh = true;\n this.filterByMethod = true;\n this.refresh = true;\n this.values = {};\n this.operators = {};\n this.cellText = {};\n this.nextFlMenuOpen = '';\n this.type = { 'Menu': FilterMenuRenderer, 'CheckBox': CheckBoxFilter, 'Excel': ExcelFilter };\n /** @hidden */\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith', wildCard: 'wildcard',\n isNull: 'isnull', notNull: 'notnull', like: 'like'\n };\n this.fltrDlgDetails = { field: '', isOpen: false };\n /** @hidden */\n this.skipNumberInput = ['=', ' ', '!'];\n this.skipStringInput = ['>', '<', '='];\n this.actualPredicate = {};\n this.parent = parent;\n this.filterSettings = filterSettings;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n this.setFullScreenDialog();\n }\n /**\n * To render filter bar when filtering enabled.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Filter.prototype.render = function (e) {\n if (DataUtil.getObject('args.isFrozen', e)) {\n return;\n }\n var gObj = this.parent;\n this.l10n = this.serviceLocator.getService('localization');\n this.getLocalizedCustomOperators();\n if (this.parent.filterSettings.type === 'FilterBar') {\n if (gObj.columns.length) {\n var fltrElem = this.parent.element.querySelector('.e-filterbar');\n if (fltrElem) {\n remove(fltrElem);\n }\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Filter, gObj);\n var cellrender = this.serviceLocator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Filter, new FilterCellRenderer(this.parent, this.serviceLocator));\n this.valueFormatter = this.serviceLocator.getService('valueFormatter');\n rowRenderer.element = this.parent.createElement('tr', { className: 'e-filterbar', attrs: { role: 'row' } });\n var row = this.generateRow();\n row.data = this.values;\n this.parent.getHeaderContent().querySelector('thead:not(.e-masked-thead)').appendChild(rowRenderer.element);\n var rowdrag = this.parent.element.querySelector('.e-rowdragheader');\n this.element = rowRenderer.render(row, gObj.getColumns(), null, null, rowRenderer.element);\n if (this.element.querySelectorAll('.e-leftfreeze').length &&\n (this.element.querySelectorAll('.e-indentcell').length || this.element.querySelectorAll('.e-grouptopleftcell').length)) {\n var td = this.element.querySelectorAll('.e-indentcell, .e-grouptopleftcell');\n for (var i = 0; i < td.length; i++) {\n td[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td[parseInt(i.toString(), 10)], i * 30, this.parent.enableRtl, 'Left');\n }\n }\n addFixedColumnBorder(this.element);\n var detail = this.element.querySelector('.e-detailheadercell');\n if (detail) {\n detail.className = 'e-filterbarcell e-mastercell';\n }\n if (rowdrag) {\n if (rowdrag.classList.contains('e-leftfreeze')) {\n rowdrag.className = 'e-dragheadercell e-mastercell e-leftfreeze';\n }\n else {\n rowdrag.className = 'e-filterbarcell e-mastercell';\n }\n }\n var gCells = [].slice.call(this.element.getElementsByClassName('e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n this.wireEvents();\n this.parent.notify(events.freezeRender, { case: 'filter' });\n }\n }\n };\n /**\n * To show the responsive custom filter dialog\n *\n * @param {boolean} enable - specifes dialog open\n * @returns {void}\n * @hidden\n */\n Filter.prototype.showCustomFilter = function (enable) {\n this.responsiveDialogRenderer.isCustomDialog = enable;\n this.responsiveDialogRenderer.showResponsiveDialog(this.column);\n };\n Filter.prototype.renderResponsiveChangeAction = function (args) {\n this.responsiveDialogRenderer.action = args.action;\n };\n /**\n * To create the filter module.\n *\n * @param {Column} col - specifies the filtering column name\n * @returns {void}\n * @hidden\n */\n Filter.prototype.setFilterModel = function (col) {\n var type = col.filter.type || this.parent.filterSettings.type;\n this.filterModule = new this.type[\"\" + type](this.parent, this.parent.filterSettings, this.serviceLocator, this.customOperators, this);\n };\n /**\n * To destroy the filter bar.\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n if (this.filterModule) {\n this.filterModule.destroy();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.parent.refreshing && (this.parent.isDestroyed || !this.parent.allowFiltering)) {\n this.filterSettings.columns = [];\n }\n this.updateFilterMsg();\n this.removeEventListener();\n this.unWireEvents();\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n var dropdownlist = [].slice.call(this.element.getElementsByClassName('e-filterbaroperator'));\n for (var i = 0; i < dropdownlist.length; i++) {\n if (dropdownlist[parseInt(i.toString(), 10)].ej2_instances[0]) {\n dropdownlist[parseInt(i.toString(), 10)].ej2_instances[0].destroy();\n }\n }\n }\n if (this.element) {\n if (this.element.parentElement) {\n remove(this.element);\n }\n var filterBarElement = this.parent.getHeaderContent().querySelector('.e-filterbar');\n if (filterBarElement) {\n remove(filterBarElement);\n }\n }\n };\n Filter.prototype.setFullScreenDialog = function () {\n if (this.serviceLocator) {\n this.serviceLocator.registerAdaptiveService(this, this.parent.enableAdaptiveUI, ResponsiveDialogAction.isFilter);\n }\n };\n Filter.prototype.generateRow = function () {\n var options = {};\n var row = new Row(options);\n row.cells = this.generateCells();\n return row;\n };\n Filter.prototype.generateCells = function () {\n //TODO: generate dummy column for group, detail, stacked row here for filtering;\n var cells = [];\n if (this.parent.allowGrouping) {\n for (var c = 0, len = this.parent.groupSettings.columns.length; c < len; c++) {\n cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n cells.push(this.generateCell({}, CellType.DetailHeader));\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n for (var _i = 0, _a = this.parent.getColumns(); _i < _a.length; _i++) {\n var dummy = _a[_i];\n cells.push(this.generateCell(dummy));\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n return cells;\n };\n Filter.prototype.generateCell = function (column, cellType) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'rowId': '',\n 'column': column,\n 'cellType': cellType ? cellType : CellType.Filter,\n 'attributes': { title: this.l10n.getConstant('FilterbarTitle') }\n };\n return new Cell(opt);\n };\n /**\n * To update filterSettings when applying filter.\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.updateModel = function () {\n var col = this.column.isForeignColumn() ? this.parent.getColumnByUid(this.column.uid) :\n this.parent.getColumnByField(this.fieldName);\n this.filterObjIndex = this.getFilteredColsIndexByField(col);\n this.prevFilterObject = this.filterSettings.columns[this.filterObjIndex];\n var arrayVal = Array.isArray(this.value) ? this.value : [this.value];\n var moduleName = this.parent.dataSource.adaptor && this.parent.dataSource.adaptor.getModuleName ? this.parent.dataSource.adaptor.getModuleName() : undefined;\n for (var i = 0, len = arrayVal.length; i < len; i++) {\n var field = col.isForeignColumn() ? col.foreignKeyValue : this.fieldName;\n var isMenuNotEqual = this.operator === 'notequal';\n this.currentFilterObject = {\n field: field, uid: col.uid, isForeignKey: col.isForeignColumn(), operator: this.operator,\n value: arrayVal[parseInt(i.toString(), 10)], predicate: this.predicate,\n matchCase: this.matchCase, ignoreAccent: this.ignoreAccent, actualFilterValue: {}, actualOperator: {}\n };\n var index = this.getFilteredColsIndexByField(col);\n if (index > -1 && !Array.isArray(this.value)) {\n this.filterSettings.columns[parseInt(index.toString(), 10)] = this.currentFilterObject;\n }\n else {\n this.filterSettings.columns.push(this.currentFilterObject);\n }\n if (!this.column.isForeignColumn() && isNullOrUndefined(this.value) && (this.operator === 'equal' ||\n this.operator === 'notequal') && (moduleName !== 'ODataAdaptor' && moduleName !== 'ODataV4Adaptor')) {\n for (var i_1 = 0; i_1 < this.filterSettings.columns.length; i_1++) {\n if (this.filterSettings.columns[\"\" + i_1].field === field &&\n (this.filterSettings.columns[\"\" + i_1].operator === 'equal' || this.filterSettings.columns[\"\" + i_1].operator === 'notequal')\n && isNullOrUndefined(this.filterSettings.columns[\"\" + i_1].value)) {\n this.filterSettings.columns.splice(i_1, 1);\n i_1 = i_1 - 1;\n }\n }\n if (col.type === 'string') {\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: ''\n });\n }\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: undefined\n });\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: null\n });\n }\n }\n // eslint-disable-next-line no-self-assign\n this.filterSettings.columns = this.filterSettings.columns;\n this.parent.dataBind();\n };\n Filter.prototype.getFilteredColsIndexByField = function (col) {\n var cols = this.filterSettings.columns;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].uid === col.uid || (col.isForeignColumn()\n && this.parent.getColumnByUid(col.uid).field === col.foreignKeyValue)) {\n return i;\n }\n }\n return -1;\n };\n /**\n * To trigger action complete event.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Filter.prototype.onActionComplete = function (e) {\n var args = !this.isRemove ? {\n currentFilterObject: this.currentFilterObject,\n /* tslint:disable:no-string-literal */\n currentFilteringColumn: !isNullOrUndefined(this.column) ? this.column.field : undefined,\n /* tslint:enable:no-string-literal */\n columns: this.filterSettings.columns, requestType: 'filtering', type: events.actionComplete\n } : {\n requestType: 'filtering', type: events.actionComplete\n };\n this.parent.trigger(events.actionComplete, extend(e, args));\n this.isRemove = false;\n };\n Filter.prototype.wireEvents = function () {\n EventHandler.add(this.parent.getHeaderContent(), 'keyup', this.keyUpHandlerImmediate, this);\n };\n Filter.prototype.unWireEvents = function () {\n EventHandler.remove(this.parent.getHeaderContent(), 'keyup', this.keyUpHandlerImmediate);\n };\n Filter.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.parent.getHeaderTable().classList.add('e-sortfilter');\n this.render();\n }\n };\n Filter.prototype.refreshFilterValue = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!isNullOrUndefined(this.parent.modelObserver.boundedEvents)) {\n this.parent.removeEventListener(events.beforeDataBound, this.refreshFilterValueFn);\n }\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.columns.length &&\n !this.parent.getCurrentViewRecords().length) {\n this.initialEnd();\n }\n };\n Filter.prototype.initialEnd = function () {\n this.parent.off(events.contentReady, this.initialEnd);\n if (this.parent.getColumns().length && this.filterSettings.columns.length) {\n var gObj = this.parent;\n this.contentRefresh = false;\n this.initialLoad = true;\n for (var _i = 0, _a = gObj.filterSettings.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n this.filterByColumn(col.field, col.operator, col.value, col.predicate, col.matchCase, col.ignoreAccent, col.actualFilterValue, col.actualOperator, col.isForeignKey);\n }\n this.initialLoad = false;\n this.updateFilterMsg();\n this.contentRefresh = true;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Filter.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.setFullScreenDialog, this.setFullScreenDialog, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.filterComplete, this.onActionComplete, this);\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.keyPressed, this.keyUpHandler, this);\n this.parent.on(events.columnPositionChanged, this.columnPositionChanged, this);\n this.parent.on(events.headerRefreshed, this.render, this);\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.filterMenuClose, this.filterMenuClose, this);\n this.parent.on(events.renderResponsiveChangeAction, this.renderResponsiveChangeAction, this);\n this.docClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.docClickHandler, this);\n EventHandler.add(this.parent.element, 'mousedown', this.refreshClearIcon, this);\n this.parent.on(events.filterOpen, this.columnMenuFilter, this);\n this.parent.on(events.click, this.filterIconClickHandler, this);\n this.parent.on('persist-data-changed', this.initialEnd, this);\n this.parent.on(events.closeFilterDialog, this.clickHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.refreshFilterValueFn = this.refreshFilterValue.bind(this);\n this.parent.addEventListener(events.beforeDataBound, this.refreshFilterValueFn);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Filter.prototype.removeEventListener = function () {\n EventHandler.remove(document, 'click', this.docClickHandler);\n EventHandler.remove(this.parent.element, 'mousedown', this.refreshClearIcon);\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.setFullScreenDialog, this.setFullScreenDialog);\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.filterComplete, this.onActionComplete);\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.keyPressed, this.keyUpHandler);\n this.parent.off(events.columnPositionChanged, this.columnPositionChanged);\n this.parent.off(events.headerRefreshed, this.render);\n this.parent.off(events.filterOpen, this.columnMenuFilter);\n this.parent.off(events.filterMenuClose, this.filterMenuClose);\n this.parent.off(events.renderResponsiveChangeAction, this.renderResponsiveChangeAction);\n this.parent.off(events.click, this.filterIconClickHandler);\n this.parent.off(events.closeFilterDialog, this.clickHandler);\n this.parent.off(events.destroy, this.destroy);\n };\n Filter.prototype.refreshClearIcon = function (e) {\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' &&\n e.target.closest('th') && e.target.closest('th').classList.contains('e-filterbarcell') &&\n e.target.classList.contains('e-clear-icon')) {\n var targetText = e.target.previousElementSibling;\n Input.setValue(null, targetText, 'Never', true);\n if (this.filterSettings.mode === 'Immediate') {\n this.removeFilteredColsByField(targetText.id.slice(0, -14)); //Length of _filterBarcell = 14\n }\n }\n };\n Filter.prototype.filterMenuClose = function () {\n this.fltrDlgDetails.isOpen = false;\n };\n /**\n * Filters the Grid row by fieldName, filterOperator, and filterValue.\n *\n * @param {string} fieldName - Defines the field name of the filter column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value which is used to filter records.\n * @param {string} predicate - Defines the relationship of one filter query with another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, then the filter records\n * the exact match or
    filters records that are case insensitive (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true, then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n * @param {boolean} isForeignColumn - Defines whether it is a foreign key column.\n * @returns {void}\n */\n Filter.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator, isForeignColumn) {\n var _this = this;\n var gObj = this.parent;\n var filterCell;\n this.column = gObj.grabColumnByFieldFromAllCols(fieldName, isForeignColumn);\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator\n && isNullOrUndefined(this.column.filterBarTemplate) && isNullOrUndefined(this.column.filterTemplate)) {\n filterOperator = this.getOperatorName(fieldName);\n }\n if (filterOperator === 'like' && filterValue && filterValue.indexOf('%') === -1) {\n filterValue = '%' + filterValue + '%';\n }\n if (!this.column) {\n return;\n }\n if (this.filterSettings.type === 'FilterBar') {\n filterCell = gObj.getHeaderContent().querySelector('[id=\\'' + this.column.field + '_filterBarcell\\']');\n }\n if (!isNullOrUndefined(this.column.allowFiltering) && !this.column.allowFiltering) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: this.column.headerText });\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, {\n instance: this, handler: this.filterByColumn, arg1: fieldName, arg2: filterOperator, arg3: filterValue, arg4: predicate,\n arg5: matchCase, arg6: ignoreAccent, arg7: actualFilterValue, arg8: actualOperator\n });\n return;\n }\n this.predicate = predicate ? predicate : Array.isArray(filterValue) ? 'or' : 'and';\n this.value = filterValue;\n this.matchCase = matchCase || false;\n this.ignoreAccent = this.ignoreAccent = !isNullOrUndefined(ignoreAccent) ? ignoreAccent : this.parent.filterSettings.ignoreAccent;\n this.fieldName = fieldName;\n this.operator = filterOperator;\n filterValue = !isNullOrUndefined(filterValue) ? filterValue.toString() : filterValue;\n if (filterValue === '') {\n filterValue = null;\n }\n if (this.column.type === 'number' || this.column.type === 'date') {\n this.matchCase = true;\n }\n if (filterCell && this.filterSettings.type === 'FilterBar') {\n if ((filterValue && filterValue.length < 1) || (!this.filterByMethod &&\n this.checkForSkipInput(this.column, filterValue))) {\n this.filterStatusMsg = (filterValue && filterValue.length < 1) ? '' : this.l10n.getConstant('InvalidFilterMessage');\n this.updateFilterMsg();\n return;\n }\n if (filterCell.value !== filterValue) {\n filterCell.value = filterValue;\n }\n }\n if (!isNullOrUndefined(this.column.format)) {\n this.applyColumnFormat(filterValue);\n if (this.initialLoad && this.filterSettings.type === 'FilterBar') {\n filterCell.value = this.values[this.column.field];\n }\n }\n else {\n this.values[this.column.field] = filterValue; //this line should be above updateModel\n }\n var predObj = {\n field: this.fieldName,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: this.operator,\n value: this.value,\n type: this.column.type\n };\n var filterColumn = this.parent.filterSettings.columns.filter(function (fColumn) {\n return (fColumn.field === _this.fieldName);\n });\n if (filterColumn.length > 1 && !isNullOrUndefined(this.actualPredicate[this.fieldName])) {\n this.actualPredicate[this.fieldName].push(predObj);\n }\n else {\n this.actualPredicate[this.fieldName] = [predObj];\n }\n if (this.checkAlreadyColFiltered(this.column.field)) {\n return;\n }\n this.updateModel();\n };\n Filter.prototype.applyColumnFormat = function (filterValue) {\n var _this = this;\n var getFlvalue = (this.column.type === 'date' || this.column.type === 'datetime' || this.column.type === 'dateonly') ?\n new Date(filterValue) : parseFloat(filterValue);\n if ((this.column.type === 'date' || this.column.type === 'datetime' || this.column.type === 'dateonly') && filterValue &&\n Array.isArray(this.value) && filterValue.split(',').length > 1) {\n this.values[this.column.field] = ((filterValue).split(',')).map(function (val) {\n if (val === '') {\n val = null;\n }\n return _this.setFormatForFlColumn(new Date(val), _this.column);\n });\n }\n else {\n this.values[this.column.field] = this.setFormatForFlColumn(getFlvalue, this.column);\n }\n };\n // To skip the second time request to server while applying initial filtering - EJ2-44361\n Filter.prototype.skipUid = function (col) {\n var flag = true;\n var colLen = Object.keys((col));\n for (var i = 0; i < colLen.length; i++) {\n var key = Object.keys(col[colLen[parseInt(i.toString(), 10)]]);\n if (key.length === 1 && key[0] === 'uid') {\n flag = false;\n }\n }\n return flag;\n };\n Filter.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'columns':\n // eslint-disable-next-line no-case-declarations\n var col = 'columns';\n // eslint-disable-next-line no-case-declarations\n var args = {\n currentFilterObject: this.currentFilterObject, currentFilteringColumn: this.column ?\n this.column.field : undefined, action: 'filter', columns: this.filterSettings.columns,\n requestType: 'filtering', type: events.actionBegin, cancel: false\n };\n if (this.contentRefresh && this.skipUid(e.properties[\"\" + col])) {\n this.parent.notify(events.modelChanged, args);\n if (args.cancel) {\n if ((this.filterSettings.type === 'CheckBox' || this.filterSettings.type === 'Excel')) {\n this.filterSettings.columns = (this.actualData.length <= 1) ? this.checkboxPrevFilterObject :\n this.checkboxFilterObject;\n this.actualPredicate[this.column.field] = this.filterSettings.columns;\n var col_1 = this.parent.getColumnByField(this.column.field);\n var iconClass = this.parent.showColumnMenu && col_1.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var filterIconElement = this.parent.getColumnHeaderByField(this.column.field)\n .querySelector(iconClass);\n if (this.checkboxPrevFilterObject.length === 0) {\n filterIconElement.classList.remove('e-filtered');\n }\n else {\n filterIconElement.classList.add('e-filtered');\n }\n }\n else {\n if (isNullOrUndefined(this.prevFilterObject)) {\n this.filterSettings.columns.splice(this.filterSettings.columns.length - 1, 1);\n }\n else {\n this.filterSettings.columns[this.filterObjIndex] = this.prevFilterObject;\n }\n }\n return;\n }\n this.updateFilterIcon();\n this.refreshFilterSettings();\n this.updateFilterMsg();\n this.updateFilter();\n }\n break;\n case 'showFilterBarStatus':\n if (e.properties[\"\" + prop]) {\n this.updateFilterMsg();\n }\n else if (this.parent.allowPaging) {\n this.parent.updateExternalMessage('');\n }\n break;\n case 'showFilterBarOperator':\n case 'type':\n this.parent.refreshHeader();\n this.refreshFilterSettings();\n if (this.parent.height === '100%') {\n this.parent.scrollModule.refresh();\n }\n break;\n }\n }\n };\n Filter.prototype.refreshFilterSettings = function () {\n if (this.filterSettings.type === 'FilterBar') {\n for (var i = 0; i < this.filterSettings.columns.length; i++) {\n this.column = this.parent.grabColumnByUidFromAllCols(this.filterSettings.columns[parseInt(i.toString(), 10)].uid);\n var filterValue = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n filterValue = !isNullOrUndefined(filterValue) && filterValue.toString();\n if (!isNullOrUndefined(this.column.format)) {\n this.applyColumnFormat(filterValue);\n }\n else {\n var key = this.filterSettings.columns[parseInt(i.toString(), 10)].field;\n this.values[\"\" + key] = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n }\n var filterElement = this.getFilterBarElement(this.column.field);\n if (filterElement) {\n if (this.cellText[this.filterSettings.columns[parseInt(i.toString(), 10)].field] !== ''\n && !isNullOrUndefined(this.cellText[this.filterSettings.columns[parseInt(i.toString(), 10)].field])) {\n filterElement.value = this.cellText[this.column.field];\n }\n else {\n filterElement.value = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n }\n }\n }\n if (this.filterSettings.columns.length === 0) {\n var col = this.parent.getColumns();\n for (var i = 0; i < col.length; i++) {\n var filterElement = this.getFilterBarElement(col[parseInt(i.toString(), 10)].field);\n if (filterElement && filterElement.value !== '') {\n filterElement.value = '';\n delete this.values[col[parseInt(i.toString(), 10)].field];\n }\n }\n }\n }\n };\n Filter.prototype.updateFilterIcon = function () {\n if (this.filterSettings.columns.length === 0 && this.parent.element.querySelector('.e-filtered')) {\n var fltrIconElement = [].slice.call(this.parent.element.getElementsByClassName('e-filtered'));\n for (var i = 0, len = fltrIconElement.length; i < len; i++) {\n fltrIconElement[parseInt(i.toString(), 10)].classList.remove('e-filtered');\n }\n }\n };\n Filter.prototype.getFilterBarElement = function (col) {\n var selector = '[id=\\'' + col + '_filterBarcell\\']';\n var filterElement;\n if (selector && !isNullOrUndefined(this.element)) {\n filterElement = this.element.querySelector(selector);\n }\n return filterElement;\n };\n /**\n * @private\n * @returns {void}\n */\n Filter.prototype.refreshFilter = function () {\n this.refreshFilterSettings();\n this.updateFilterMsg();\n };\n /**\n * Clears all the filtered rows of the Grid.\n *\n * @param {string[]} fields - returns the fields\n * @returns {void}\n */\n Filter.prototype.clearFiltering = function (fields) {\n var _this = this;\n var cols = getActualPropFromColl(this.filterSettings.columns);\n if (!isNullOrUndefined(fields)) {\n this.refresh = false;\n fields.forEach(function (field) { _this.removeFilteredColsByField(field, false); });\n this.parent.setProperties({ filterSettings: { columns: this.filterSettings.columns } }, true);\n this.parent.renderModule.refresh();\n this.refresh = true;\n return;\n }\n if (isActionPrevent(this.parent)) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.clearFiltering });\n return;\n }\n for (var i = 0; i < cols.length; i++) {\n cols[parseInt(i.toString(), 10)].uid = cols[parseInt(i.toString(), 10)].uid\n || this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field).uid;\n }\n var colUid = cols.map(function (f) { return f.uid; });\n var filteredcols = colUid.filter(function (item, pos) { return colUid.indexOf(item) === pos; });\n this.refresh = false;\n for (var i = 0, len = filteredcols.length; i < len; i++) {\n this.removeFilteredColsByField(this.parent.getColumnByUid(filteredcols[parseInt(i.toString(), 10)]).field, false);\n }\n this.refresh = true;\n if (filteredcols.length) {\n this.parent.renderModule.refresh();\n }\n if (this.parent.filterSettings.columns.length === 0 && this.parent.element.querySelector('.e-filtered')) {\n var fltrElement = [].slice.call(this.parent.element.getElementsByClassName('e-filtered'));\n for (var i = 0, len = fltrElement.length; i < len; i++) {\n fltrElement[0].classList.remove('e-filtered');\n }\n }\n this.isRemove = true;\n this.filterStatusMsg = '';\n this.updateFilterMsg();\n };\n Filter.prototype.checkAlreadyColFiltered = function (field) {\n var columns = this.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n if (col.field === field && col.value === this.value &&\n col.operator === this.operator && col.predicate === this.predicate) {\n return true;\n }\n }\n return false;\n };\n Filter.prototype.columnMenuFilter = function (args) {\n this.column = args.col;\n var ele = closest(args.target, '#' + args.id);\n if (args.isClose && !ele) {\n this.filterModule.closeDialog();\n }\n else if (ele) {\n this.filterDialogOpen(this.column, args.target);\n }\n };\n Filter.prototype.filterDialogOpen = function (col, target, left, top) {\n if (this.filterModule) {\n this.filterModule.isresetFocus = false;\n this.filterModule.closeDialog();\n }\n this.setFilterModel(col);\n this.filterModule.openDialog(this.createOptions(col, target, left, top));\n };\n /**\n * Create filter dialog options\n *\n * @param {Column} col - Filtering column detail.\n * @param {Element} target - Filter dialog target.\n * @param {number} left - Filter dialog left position.\n * @param {number} top - Filter dialog top position.\n * @returns {Object} returns the created dialog options\n * @hidden\n */\n Filter.prototype.createOptions = function (col, target, left, top) {\n var gObj = this.parent;\n var dataSource = col.filter.dataSource || gObj.dataSource && 'result' in gObj.dataSource ? gObj.dataSource :\n gObj.getDataModule().dataManager;\n var type = col.filter.type || this.parent.filterSettings.type;\n var options = {\n type: col.type, field: col.field, displayName: col.headerText,\n dataSource: dataSource, format: col.format, height: 800, columns: gObj.getColumns(),\n filteredColumns: gObj.filterSettings.columns, target: target, dataManager: gObj.getDataModule().dataManager,\n formatFn: col.getFormatter(), ignoreAccent: gObj.filterSettings.ignoreAccent,\n parserFn: col.getParser(), query: gObj.query, template: col.getFilterItemTemplate(),\n hideSearchbox: isNullOrUndefined(col.filter.hideSearchbox) ? false : col.filter.hideSearchbox,\n handler: this.filterHandler.bind(this), localizedStrings: gObj.getLocaleConstants(),\n position: { X: left, Y: top }, column: col, foreignKeyValue: col.foreignKeyValue,\n actualPredicate: this.actualPredicate, localeObj: gObj.localeObj,\n isRemote: gObj.getDataModule().isRemote(), allowCaseSensitive: this.filterSettings.enableCaseSensitivity,\n isResponsiveFilter: this.parent.enableAdaptiveUI,\n operator: this.actualPredicate[col.field] && type === 'Menu' ? this.actualPredicate[col.field][0].operator : 'equal',\n parentTotalDataCount: gObj.getDataModule().isRemote() && gObj.allowPaging ? gObj.pagerModule.pagerObj.totalRecordsCount :\n gObj.getDataModule().isRemote() ? gObj.totalDataRecordsCount : gObj.getFilteredRecords().length,\n parentCurrentViewDataCount: gObj.currentViewData.length,\n parentFilteredLocalRecords: !gObj.getDataModule().isRemote() ? gObj.getFilteredRecords() : []\n };\n return options;\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n Filter.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n var fCell;\n var cols = this.filterSettings.columns;\n if (isActionPrevent(this.parent)) {\n var args = { instance: this, handler: this.removeFilteredColsByField, arg1: field, arg2: isClearFilterBar };\n this.parent.notify(events.preventBatch, args);\n return;\n }\n var colUid = cols.map(function (f) { return f.uid; });\n var filteredColsUid = colUid.filter(function (item, pos) { return colUid.indexOf(item) === pos; });\n if (!isNullOrUndefined(this.column)) {\n var col = this.column.isForeignColumn() ? this.parent.getColumnByUid(this.column.uid) :\n this.parent.getColumnByField(field);\n this.filterObjIndex = this.getFilteredColsIndexByField(col);\n this.prevFilterObject = this.filterSettings.columns[this.filterObjIndex];\n }\n var _loop_1 = function (i, len) {\n cols[parseInt(i.toString(), 10)].uid = cols[parseInt(i.toString(), 10)].uid\n || this_1.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field).uid;\n var len_1 = cols.length;\n var column = this_1.parent.grabColumnByUidFromAllCols(filteredColsUid[parseInt(i.toString(), 10)]);\n if (column.field === field || (column.field === column.foreignKeyValue && column.isForeignColumn())) {\n var currentPred = this_1.filterSettings.columns.filter(function (e) {\n return e.uid === column.uid;\n })[0];\n if (this_1.filterSettings.type === 'FilterBar' && !isClearFilterBar) {\n var selector = '[id=\\'' + column.field + '_filterBarcell\\']';\n fCell = this_1.parent.getHeaderContent().querySelector(selector);\n if (fCell) {\n fCell.value = '';\n delete this_1.values[\"\" + field];\n }\n }\n while (len_1--) {\n if (cols[parseInt(len_1.toString(), 10)].uid === column.uid) {\n cols.splice(len_1, 1);\n }\n }\n var fltrElement = this_1.parent.getColumnHeaderByField(column.field);\n if (this_1.filterSettings.type !== 'FilterBar' || this_1.parent.showColumnMenu) {\n var iconClass = this_1.parent.showColumnMenu && column.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n fltrElement.querySelector(iconClass).classList.remove('e-filtered');\n }\n this_1.isRemove = true;\n if (this_1.actualPredicate[\"\" + field]) {\n delete this_1.actualPredicate[\"\" + field];\n }\n if (this_1.values[\"\" + field]) {\n delete this_1.values[\"\" + field];\n }\n if (this_1.refresh) {\n this_1.parent.notify(events.modelChanged, {\n requestType: 'filtering', type: events.actionBegin, currentFilterObject: currentPred,\n currentFilterColumn: column, action: 'clearFilter'\n });\n }\n return \"break\";\n }\n };\n var this_1 = this;\n for (var i = 0, len = filteredColsUid.length; i < len; i++) {\n var state_1 = _loop_1(i, len);\n if (state_1 === \"break\")\n break;\n }\n this.updateFilterMsg();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Filter.prototype.getModuleName = function () {\n return 'filter';\n };\n Filter.prototype.keyUpHandlerImmediate = function (e) {\n if (e.keyCode !== 13) {\n this.keyUpHandler(e);\n }\n };\n Filter.prototype.keyUpHandler = function (e) {\n var gObj = this.parent;\n var target = e.target;\n if (target && matches(target, '.e-filterbar input')) {\n var closeHeaderEle = closest(target, 'th.e-filterbarcell');\n this.column = gObj.getColumnByUid(closeHeaderEle.getAttribute('e-mappinguid'));\n if (!this.column) {\n return;\n }\n if (e.action === 'altDownArrow' && this.parent.filterSettings.showFilterBarOperator) {\n var dropDownListInput = closest(target, 'span').querySelector('.e-filterbaroperator');\n dropDownListInput.ej2_instances[0].showPopup();\n dropDownListInput.focus();\n }\n if ((this.filterSettings.mode === 'Immediate' || (e.keyCode === 13 &&\n !e.target.classList.contains('e-filterbaroperator')))\n && e.keyCode !== 9 && !this.column.filterTemplate) {\n this.value = target.value.trim();\n this.processFilter(e);\n }\n }\n if (e.action === 'altDownArrow' && this.filterSettings.type !== 'FilterBar' && !parentsUntil(e.target, 'e-toolbar')\n && isNullOrUndefined(this.parent.element.querySelector('.e-filter-popup'))) {\n var element = gObj.focusModule.currentInfo.element;\n if (element && element.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(element.firstElementChild.getAttribute('e-mappinguid'));\n this.openMenuByField(column.field);\n this.parent.focusModule.clearIndicator();\n }\n }\n if (e.action === 'escape' && this.filterSettings.type === 'Menu' && this.filterModule) {\n this.filterModule.closeDialog();\n gObj.notify(events.restoreFocus, {});\n }\n };\n Filter.prototype.updateCrossIcon = function (element) {\n if (element.value.length) {\n element.nextElementSibling.classList.remove('e-hide');\n }\n };\n Filter.prototype.updateFilterMsg = function () {\n if (this.filterSettings.type === 'FilterBar') {\n var gObj = this.parent;\n var getFormatFlValue = void 0;\n var columns = this.filterSettings.columns;\n var column = void 0;\n if (!this.filterSettings.showFilterBarStatus) {\n return;\n }\n if (columns.length > 0 && this.filterStatusMsg !== this.l10n.getConstant('InvalidFilterMessage')) {\n this.filterStatusMsg = '';\n for (var index = 0; index < columns.length; index++) {\n column = gObj.grabColumnByUidFromAllCols(columns[parseInt(index.toString(), 10)].uid)\n || gObj.grabColumnByFieldFromAllCols(columns[parseInt(index.toString(), 10)].field, columns[parseInt(index.toString(), 10)].isForeignKey);\n if (index) {\n this.filterStatusMsg += ' && ';\n }\n if (!isNullOrUndefined(column.format)) {\n var flValue = (column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly') ?\n this.valueFormatter.fromView(this.values[column.field], column.getParser(), (column.type === 'dateonly' ? 'date' : column.type)) :\n this.values[column.field];\n if (!(column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly')) {\n var formater = this.serviceLocator.getService('valueFormatter');\n getFormatFlValue = formater.toView(flValue, column.getParser()).toString();\n }\n else {\n getFormatFlValue = this.setFormatForFlColumn(flValue, column);\n }\n this.filterStatusMsg += column.headerText + ': ' + getFormatFlValue;\n }\n else {\n this.filterStatusMsg += column.headerText + ': ' + this.values[column.field];\n }\n }\n }\n if (gObj.allowPaging) {\n gObj.updateExternalMessage(this.filterStatusMsg);\n }\n //TODO: virtual paging\n this.filterStatusMsg = '';\n }\n };\n Filter.prototype.setFormatForFlColumn = function (value, column) {\n var formater = this.serviceLocator.getService('valueFormatter');\n return formater.toView(value, column.getFormatter()).toString();\n };\n Filter.prototype.checkForSkipInput = function (column, value) {\n var isSkip;\n if (column.type === 'number') {\n if (DataUtil.operatorSymbols[\"\" + value] || this.skipNumberInput.indexOf(value) > -1) {\n isSkip = true;\n }\n }\n else if (column.type === 'string') {\n for (var _i = 0, value_1 = value; _i < value_1.length; _i++) {\n var val = value_1[_i];\n if (this.skipStringInput.indexOf(val) > -1) {\n isSkip = true;\n }\n }\n }\n return isSkip;\n };\n Filter.prototype.processFilter = function (e) {\n this.stopTimer();\n this.startTimer(e);\n };\n Filter.prototype.startTimer = function (e) {\n var _this = this;\n this.timer = window.setInterval(function () { _this.onTimerTick(); }, e.keyCode === 13 ? 0 : this.filterSettings.immediateModeDelay);\n };\n Filter.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n Filter.prototype.onTimerTick = function () {\n var selector = '[id=\\'' + this.column.field + '_filterBarcell\\']';\n var filterElement = this.element.querySelector(selector);\n if (!filterElement) {\n filterElement = this.parent.getHeaderContent().querySelector(selector);\n }\n var filterValue;\n this.cellText[this.column.field] = filterElement.value;\n this.stopTimer();\n if (!isNullOrUndefined(this.column.filterBarTemplate)) {\n var templateRead = this.column.filterBarTemplate.read;\n if (typeof templateRead === 'string') {\n templateRead = getValue(templateRead, window);\n }\n if (!isNullOrUndefined(templateRead)) {\n this.value = templateRead.call(this, filterElement);\n }\n }\n else {\n filterValue = JSON.parse(JSON.stringify(filterElement.value));\n }\n if (isNullOrUndefined(this.value) || this.value === '') {\n this.removeFilteredColsByField(this.column.field);\n return;\n }\n this.validateFilterValue(this.value);\n this.filterByMethod = false;\n this.filterByColumn(this.column.field, this.operator, this.value, this.predicate, this.filterSettings.enableCaseSensitivity, this.ignoreAccent, this.column.isForeignColumn());\n this.filterByMethod = true;\n filterElement.value = filterValue;\n this.updateFilterMsg();\n };\n Filter.prototype.validateFilterValue = function (value) {\n var skipInput;\n var index;\n this.matchCase = this.filterSettings.enableCaseSensitivity;\n switch (this.column.type) {\n case 'number':\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.equal;\n }\n skipInput = ['>', '<', '=', '!'];\n for (var i = 0; i < value.length; i++) {\n if (skipInput.indexOf(value[parseInt(i.toString(), 10)]) > -1) {\n index = i;\n break;\n }\n }\n this.getOperator(value.substring(index));\n if (index !== 0) {\n this.value = value.substring(0, index);\n }\n if (this.value !== '' && value.length >= 1) {\n this.value = this.valueFormatter.fromView(this.value, this.column.getParser(), this.column.type);\n }\n if (isNaN(this.value)) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n break;\n case 'date':\n case 'datetime':\n this.operator = this.filterOperators.equal;\n if (this.value !== '' && !(this.value instanceof Date)) {\n this.getOperator(value);\n this.value = this.valueFormatter.fromView(this.value, this.column.getParser(), this.column.type);\n if (isNullOrUndefined(this.value)) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n }\n break;\n case 'string':\n this.matchCase = false;\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n if (value.indexOf('*') !== -1 || value.indexOf('?') !== -1 || value.indexOf('%3f') !== -1) {\n this.operator = this.filterOperators.wildCard;\n }\n else if (value.indexOf('%') !== -1) {\n this.operator = this.filterOperators.like;\n }\n else {\n this.operator = this.filterOperators.startsWith;\n }\n }\n break;\n case 'boolean':\n if (value.toLowerCase() === 'true' || value === '1') {\n this.value = true;\n }\n else if (value.toLowerCase() === 'false' || value === '0') {\n this.value = false;\n }\n else if (value.length) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n this.operator = this.filterOperators.equal;\n break;\n default:\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.equal;\n }\n }\n };\n Filter.prototype.getOperator = function (value) {\n var singleOp = value.charAt(0);\n var multipleOp = value.slice(0, 2);\n var operators = extend({ '=': this.filterOperators.equal, '!': this.filterOperators.notEqual }, DataUtil.operatorSymbols);\n // eslint-disable-next-line no-prototype-builtins\n if (operators.hasOwnProperty(singleOp) || operators.hasOwnProperty(multipleOp)) {\n this.operator = operators[\"\" + singleOp];\n this.value = value.substring(1);\n if (!this.operator) {\n this.operator = operators[\"\" + multipleOp];\n this.value = value.substring(2);\n }\n }\n if (this.operator === this.filterOperators.lessThan || this.operator === this.filterOperators.greaterThan) {\n if (this.value.charAt(0) === '=') {\n this.operator = this.operator + 'orequal';\n this.value = this.value.substring(1);\n }\n }\n };\n Filter.prototype.columnPositionChanged = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n return;\n }\n };\n Filter.prototype.getLocalizedCustomOperators = function () {\n var numOptr = [\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'greaterthan', text: this.l10n.getConstant('GreaterThan') },\n { value: 'greaterthanorequal', text: this.l10n.getConstant('GreaterThanOrEqual') },\n { value: 'lessthan', text: this.l10n.getConstant('LessThan') },\n { value: 'lessthanorequal', text: this.l10n.getConstant('LessThanOrEqual') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') },\n { value: 'isnull', text: this.l10n.getConstant('IsNull') },\n { value: 'isnotnull', text: this.l10n.getConstant('NotNull') }\n ];\n this.customOperators = {\n stringOperator: [\n { value: 'startswith', text: this.l10n.getConstant('StartsWith') },\n { value: 'endswith', text: this.l10n.getConstant('EndsWith') },\n { value: 'contains', text: this.l10n.getConstant('Contains') },\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'isempty', text: this.l10n.getConstant('IsEmpty') },\n { value: 'doesnotstartwith', text: this.l10n.getConstant('NotStartsWith') },\n { value: 'doesnotendwith', text: this.l10n.getConstant('NotEndsWith') },\n { value: 'doesnotcontain', text: this.l10n.getConstant('NotContains') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') },\n { value: 'isnotempty', text: this.l10n.getConstant('IsNotEmpty') },\n { value: 'like', text: this.l10n.getConstant('Like') }\n ],\n numberOperator: numOptr,\n dateOperator: numOptr,\n datetimeOperator: numOptr,\n dateonlyOperator: numOptr,\n booleanOperator: [\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') }\n ]\n };\n };\n /**\n * @param {string} field - specifies the field name\n * @returns {void}\n * @hidden\n */\n Filter.prototype.openMenuByField = function (field) {\n var gObj = this.parent;\n if (gObj.enableAdaptiveUI) {\n this.showCustomFilter(false);\n return;\n }\n var column = gObj.getColumnByField(field);\n var header = gObj.getColumnHeaderByField(field);\n var target = header.querySelector('.e-filtermenudiv');\n if (!target) {\n return;\n }\n var gClient = gObj.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n this.filterDialogOpen(column, target, fClient.right - gClient.left, fClient.bottom - gClient.top);\n };\n Filter.prototype.filterIconClickHandler = function (e) {\n var target = e.target;\n if (target.classList.contains('e-filtermenudiv') && (this.parent.filterSettings.type === 'Menu' ||\n this.parent.filterSettings.type === 'CheckBox' || this.parent.filterSettings.type === 'Excel')) {\n var gObj = this.parent;\n var col = gObj.getColumnByUid(parentsUntil(target, 'e-headercell').firstElementChild.getAttribute('e-mappinguid'));\n this.column = col;\n if (this.fltrDlgDetails.field === col.field && this.fltrDlgDetails.isOpen) {\n return;\n }\n if (this.filterModule) {\n this.filterModule.closeDialog();\n }\n this.fltrDlgDetails = { field: col.field, isOpen: true };\n this.openMenuByField(col.field);\n }\n };\n Filter.prototype.clickHandler = function (e) {\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n if (parentsUntil(e.target, 'e-filterbarcell') &&\n e.target.classList.contains('e-input-group-icon')) {\n var filterOperatorElement = closest(e.target, 'div').\n querySelector('.e-filterbaroperator');\n if (filterOperatorElement) {\n filterOperatorElement.focus();\n }\n else {\n e.target.focus();\n }\n }\n if (e.target.classList.contains('e-list-item')) {\n var inputId = document.querySelector('.e-popup-open').getAttribute('id').replace('_popup', '');\n if (inputId.indexOf('grid-column') !== -1) {\n closest(document.getElementById(inputId), 'div').querySelector('.e-filtertext').focus();\n }\n }\n }\n if (this.filterSettings.mode === 'Immediate' || this.parent.filterSettings.type === 'Menu' ||\n this.parent.filterSettings.type === 'CheckBox' || this.parent.filterSettings.type === 'Excel') {\n var target = e.target;\n var datepickerEle = target.classList.contains('e-day'); // due to datepicker popup cause\n var dialog = parentsUntil(this.parent.element, 'e-dialog');\n var hasDialog = false;\n var popupEle = parentsUntil(target, 'e-popup');\n var hasDialogClosed = this.parent.element.classList.contains('e-device') ? document.querySelector('.e-filter-popup')\n : this.parent.element.querySelector('.e-filter-popup');\n if (dialog && popupEle) {\n hasDialog = dialog.id === popupEle.id;\n }\n if ((this.filterModule && hasDialogClosed && (parentsUntil(target, 'e-excel-ascending') ||\n parentsUntil(target, 'e-excel-descending')))) {\n this.filterModule.closeDialog(target);\n }\n if (parentsUntil(target, 'e-filter-popup') || target.classList.contains('e-filtermenudiv')) {\n return;\n }\n else if (this.filterModule && !parentsUntil(target, 'e-date-overflow') && (!parentsUntil(target, 'e-popup-wrapper')\n && (!closest(target, '.e-filter-item.e-menu-item'))) && !datepickerEle\n && !(parentsUntil(target, 'e-search-wrapper') && !hasDialogClosed)) {\n if ((hasDialog && (!parentsUntil(target, 'e-filter-popup'))\n && (!parentsUntil(target, 'e-popup-flmenu'))) || (!popupEle && hasDialogClosed)) {\n this.filterModule.isresetFocus = parentsUntil(target, 'e-grid') &&\n parentsUntil(target, 'e-grid').id === this.parent.element.id && !(parentsUntil(target, 'e-search-wrapper')\n && hasDialogClosed);\n this.filterModule.closeDialog(target);\n }\n }\n }\n };\n Filter.prototype.filterHandler = function (args) {\n this.actualPredicate[args.field] = args.actualPredicate;\n this.actualData = Object.keys(this.actualPredicate);\n var dataManager = new DataManager(this.filterSettings.columns);\n var query = new Query().where('field', this.filterOperators.equal, args.field);\n this.checkboxFilterObject = dataManager.dataSource.json;\n this.checkboxPrevFilterObject = dataManager.executeLocal(query);\n for (var i = 0; i < this.checkboxPrevFilterObject.length; i++) {\n var index = -1;\n for (var j = 0; j < this.filterSettings.columns.length; j++) {\n if (this.checkboxPrevFilterObject[parseInt(i.toString(), 10)].field ===\n this.filterSettings.columns[parseInt(j.toString(), 10)].field) {\n index = j;\n break;\n }\n }\n if (index !== -1) {\n this.filterSettings.columns.splice(index, 1);\n }\n }\n if (this.values[args.field]) {\n delete this.values[args.field];\n }\n var col = this.parent.getColumnByField(args.field);\n var iconClass = this.parent.showColumnMenu && col.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var filterIconElement = this.parent.getColumnHeaderByField(args.field).querySelector(iconClass);\n if (args.action === 'filtering') {\n this.filterSettings.columns = this.filterSettings.columns.concat(args.filterCollection);\n if (this.filterSettings.columns.length && filterIconElement) {\n filterIconElement.classList.add('e-filtered');\n }\n }\n else {\n if (filterIconElement) {\n filterIconElement.classList.remove('e-filtered');\n }\n args.requestType = 'filtering';\n this.parent.renderModule.refresh(args); //hot-fix onpropertychanged not working for object { array }\n }\n this.parent.dataBind();\n };\n Filter.prototype.updateFilter = function () {\n var cols = this.filterSettings.columns;\n this.actualPredicate = {};\n for (var i = 0; i < cols.length; i++) {\n this.column = this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field) ||\n getColumnByForeignKeyValue(cols[parseInt(i.toString(), 10)].field, this.parent.getForeignKeyColumns());\n var fieldName = cols[parseInt(i.toString(), 10)].field;\n if (!this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field)) {\n fieldName = getColumnByForeignKeyValue(cols[parseInt(i.toString(), 10)].field, this.parent.getForeignKeyColumns()).field;\n }\n this.refreshFilterIcon(fieldName, cols[parseInt(i.toString(), 10)].operator, cols[parseInt(i.toString(), 10)].value, cols[parseInt(i.toString(), 10)].type, cols[parseInt(i.toString(), 10)].predicate, cols[parseInt(i.toString(), 10)].matchCase, cols[parseInt(i.toString(), 10)].ignoreAccent, cols[parseInt(i.toString(), 10)].uid);\n }\n };\n Filter.prototype.refreshFilterIcon = function (fieldName, operator, value, type, predicate, matchCase, ignoreAccent, uid) {\n var obj = {\n field: fieldName,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: operator,\n value: value,\n type: type\n };\n if (this.actualPredicate[\"\" + fieldName]) {\n this.actualPredicate[\"\" + fieldName].push(obj);\n }\n else {\n this.actualPredicate[\"\" + fieldName] = [obj];\n }\n var field = uid ? this.parent.grabColumnByUidFromAllCols(uid).field : fieldName;\n this.addFilteredClass(field);\n };\n Filter.prototype.addFilteredClass = function (fieldName) {\n var filterIconElement;\n var col = this.parent.getColumnByField(fieldName);\n if (this.parent.showColumnMenu && col.showColumnMenu) {\n filterIconElement = this.parent.getColumnHeaderByField(fieldName).querySelector('.e-columnmenu');\n }\n else if (col) {\n filterIconElement = this.parent.getColumnHeaderByField(fieldName).querySelector('.e-icon-filter');\n }\n if (filterIconElement) {\n filterIconElement.classList.add('e-filtered');\n }\n };\n /**\n * @hidden\n * @returns {FilterUI} returns the FilterUI\n */\n Filter.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n /**\n * @param {string} field - specifies the field name\n * @returns {string} returns the operator name\n * @hidden\n */\n Filter.prototype.getOperatorName = function (field) {\n return document.getElementById(this.parent.getColumnByField(field).uid).ej2_instances[0].value;\n };\n /**\n * Renders checkbox items in Menu filter dialog.\n *\n * @returns {void}\n */\n Filter.prototype.renderCheckboxOnFilterMenu = function () {\n return this.filterModule.renderCheckBoxMenu();\n };\n return Filter;\n}());\nexport { Filter };\n","import { EventHandler, detach, formatUnit, Browser, closest } from '@syncfusion/ej2-base';\nimport { Column } from '../models/column';\nimport { ColumnWidthService } from '../services/width-controller';\nimport * as events from '../base/constant';\nimport { getScrollBarWidth, parentsUntil, Global, frozenDirection, isChildColumn, applyStickyLeftRightPosition, groupCaptionRowLeftRightPos } from '../base/util';\nimport { isNullOrUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\nexport var resizeClassList = {\n root: 'e-rhandler',\n suppress: 'e-rsuppress',\n icon: 'e-ricon',\n helper: 'e-rhelper',\n header: 'th.e-headercell',\n cursor: 'e-rcursor'\n};\n/**\n * `Resize` module is used to handle Resize to fit for columns.\n *\n * @hidden\n * @private\n */\nvar Resize = /** @class */ (function () {\n /**\n * Constructor for the Grid resize module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Resize(parent) {\n this.tapped = false;\n this.isDblClk = true;\n /** @hidden */\n this.resizeProcess = false;\n this.isCancelAutoFit = false;\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.widthService = new ColumnWidthService(parent);\n this.addEventListener();\n }\n /**\n * Resize by field names.\n *\n * @param {string|string[]} fName - Defines the field name.\n * @param {number} startRowIndex - Specifies the start row index.\n * @param {number} endRowIndex - Specifies the end row index.\n * @returns {void}\n */\n Resize.prototype.autoFitColumns = function (fName, startRowIndex, endRowIndex) {\n var columnName = (fName === undefined || fName === null || fName.length <= 0) ?\n this.parent.getColumns().map(function (x) { return x.field; }) : (typeof fName === 'string') ? [fName] : fName;\n this.parent.isAutoFitColumns = true;\n if (this.parent.enableAdaptiveUI) {\n this.parent.element.classList.add('e-grid-autofit');\n }\n this.findColumn(columnName, startRowIndex, endRowIndex);\n };\n Resize.prototype.autoFit = function () {\n var newarray = this.parent.getColumns().filter(function (c) { return c.autoFit === true; })\n .map(function (c) { return c.field || c.headerText; });\n if (newarray.length > 0) {\n this.autoFitColumns(newarray);\n }\n if (this.parent.resizeSettings.mode === 'Auto') {\n this.widthService.setWidthToTable();\n }\n };\n Resize.prototype.getCellElementsByColumnIndex = function (columnIndex) {\n if (this.parent.frozenRows) {\n return [].slice.call(this.parent.getHeaderTable().querySelectorAll(\"td.e-rowcell:nth-child(\" + (columnIndex + 1) + \"):not(.e-groupcaption):not(.e-detailcell)\")).concat([].slice.call(this.parent.getContentTable().querySelectorAll(\"td.e-rowcell:nth-child(\" + (columnIndex + 1) + \"):not(.e-groupcaption):not(.e-detailcell)\")));\n }\n else {\n return [].slice.call(this.parent.getContentTable().querySelectorAll(\"td.e-rowcell:nth-child(\" + (columnIndex + 1) + \"):not(.e-groupcaption):not(.e-detailcell)\"));\n }\n };\n Resize.prototype.resizeColumn = function (fName, index, id, startRowIndex, endRowIndex) {\n var gObj = this.parent;\n var tWidth = 0;\n var headerTable = gObj.getHeaderTable();\n var contentTable = gObj.getContentTable();\n var footerTable;\n var headerDivTag = 'e-gridheader';\n var contentDivTag = literals.gridContent;\n var footerDivTag = literals.gridFooter;\n var indentWidth = 0;\n var uid = id ? id : this.parent.getUidByColumnField(fName);\n var columnIndex = this.parent.getNormalizedColumnIndex(uid);\n var headerTextClone = headerTable.querySelector('[e-mappinguid=\"' + uid + '\"]').parentElement.cloneNode(true);\n var contentTextClone = this.getCellElementsByColumnIndex(columnIndex);\n var footerTextClone;\n var columnIndexByField = this.parent.getColumnIndexByField(fName);\n if (!isNullOrUndefined(gObj.getFooterContent())) {\n footerTable = gObj.getFooterContentTable();\n }\n if (footerTable) {\n footerTextClone = footerTable.querySelectorAll(\"td:nth-child(\" + (columnIndex + 1) + \"):not(.e-groupcaption)\");\n }\n var indentWidthClone = [].slice.call(headerTable.querySelector('tr').getElementsByClassName('e-grouptopleftcell'));\n if (indentWidthClone.length > 0) {\n for (var i = 0; i < indentWidthClone.length; i++) {\n indentWidth += indentWidthClone[parseInt(i.toString(), 10)].offsetWidth;\n }\n }\n var detailsElement = contentTable.querySelector('.e-detailrowcollapse') ||\n contentTable.querySelector('.e-detailrowexpand');\n if ((this.parent.detailTemplate || this.parent.childGrid) && detailsElement) {\n indentWidth += detailsElement.offsetWidth;\n }\n var headerText = [headerTextClone];\n var contentText = [];\n var footerText = [];\n if (footerTable) {\n for (var i = 0; i < footerTextClone.length; i++) {\n footerText[parseInt(i.toString(), 10)] = footerTextClone[parseInt(i.toString(), 10)].cloneNode(true);\n }\n }\n for (var i = 0; i < contentTextClone.length; i++) {\n contentText[parseInt(i.toString(), 10)] = contentTextClone[parseInt(i.toString(), 10)].cloneNode(true);\n }\n var wHeader = this.createTable(headerTable, headerText, headerDivTag);\n var wFooter = null;\n var wContent = null;\n if (gObj.getCurrentViewRecords().length) {\n wContent = this.createTable(contentTable, contentText, contentDivTag, startRowIndex, endRowIndex);\n }\n if (footerText.length) {\n wFooter = this.createTable(footerTable, footerText, footerDivTag);\n }\n var columnbyindex = gObj.getColumns()[parseInt(columnIndexByField.toString(), 10)];\n var width = columnbyindex.width = formatUnit(Math.max(wHeader, wContent, wFooter));\n var colMaxWidth = columnbyindex.maxWidth && parseFloat(columnbyindex.maxWidth.toString());\n if (parseInt(width, 10) > colMaxWidth) {\n columnbyindex.width = colMaxWidth;\n }\n this.widthService.setColumnWidth(gObj.getColumns()[parseInt(columnIndexByField.toString(), 10)]);\n var result = gObj.getColumns().some(function (x) { return x.width === null\n || x.width === undefined || x.width.length <= 0; });\n if (result === false) {\n var element = gObj.getColumns();\n for (var i = 0; i < element.length; i++) {\n if (element[parseInt(i.toString(), 10)].visible) {\n tWidth = tWidth + parseFloat(element[parseInt(i.toString(), 10)].width);\n }\n }\n }\n var calcTableWidth = tWidth + indentWidth;\n if (tWidth > 0) {\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.widthService.setColumnWidth(new Column({ width: '30px' }));\n }\n if (this.parent.resizeSettings.mode === 'Auto') {\n calcTableWidth = '100%';\n }\n headerTable.style.width = formatUnit(calcTableWidth);\n contentTable.style.width = formatUnit(calcTableWidth);\n if (!isNullOrUndefined(footerTable)) {\n footerTable.style.width = formatUnit(calcTableWidth);\n }\n }\n if (gObj.isFrozenGrid() && gObj.enableColumnVirtualization) {\n this.widthService.refreshFrozenScrollbar();\n }\n var tableWidth = headerTable.offsetWidth;\n var contentwidth = (gObj.getContent().scrollWidth);\n if (contentwidth > tableWidth) {\n if (!isNullOrUndefined(contentTable.querySelector('.e-emptyrow'))) {\n addClass([headerTable], ['e-tableborder']);\n removeClass([contentTable], ['e-tableborder']);\n }\n else {\n addClass([headerTable, contentTable], ['e-tableborder']);\n }\n }\n else {\n removeClass([headerTable, contentTable], ['e-tableborder']);\n }\n if (!isNullOrUndefined(footerTable)) {\n footerTable.classList.add('e-tableborder');\n }\n };\n /**\n * To destroy the resize\n *\n * @returns {void}\n * @hidden\n */\n Resize.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.widthService = null;\n this.unwireEvents();\n this.removeEventListener();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Resize.prototype.getModuleName = function () {\n return 'resize';\n };\n Resize.prototype.findColumn = function (fName, startRowIndex, endRowIndex) {\n for (var i = 0; i < fName.length; i++) {\n var fieldName = fName[parseInt(i.toString(), 10)];\n var columnIndex = this.parent.getColumnIndexByField(fieldName);\n var column = this.parent.getColumns()[parseInt(columnIndex.toString(), 10)];\n if (columnIndex > -1 && !isNullOrUndefined(column) && column.visible === true) {\n this.resizeColumn(fieldName, columnIndex, null, startRowIndex, endRowIndex);\n }\n }\n if (this.parent.allowTextWrap) {\n this.parent.notify(events.freezeRender, { case: 'refreshHeight', isModeChg: true });\n }\n if (this.parent.isFrozenGrid()) {\n this.refreshResizefrzCols(true, true);\n }\n };\n /**\n * To create table for autofit\n *\n * @param {Element} table - specifies the table\n * @param {Element[]} text - specifies the text\n * @param {string} tag - specifies the tag name\n * @param {number} startRowIndex - Specifies the start row index.\n * @param {number} endRowIndex - Specifies the end row index.\n * @returns {number} returns the number\n * @hidden\n */\n Resize.prototype.createTable = function (table, text, tag, startRowIndex, endRowIndex) {\n if (startRowIndex === void 0) { startRowIndex = 1; }\n if (endRowIndex === void 0) { endRowIndex = text.length; }\n if (startRowIndex > endRowIndex) {\n startRowIndex ^= endRowIndex;\n endRowIndex ^= startRowIndex;\n startRowIndex ^= endRowIndex;\n }\n var myTableDiv = this.parent.createElement('div');\n var adaptiveClass = this.parent.enableAdaptiveUI ? ' e-bigger' : '';\n myTableDiv.className = this.parent.element.className + adaptiveClass;\n myTableDiv.style.cssText = 'display: inline-block;visibility:hidden;position:absolute';\n var mySubDiv = this.parent.createElement('div');\n mySubDiv.className = tag;\n var myTable = this.parent.createElement('table', { attrs: { role: 'grid' } });\n myTable.className = table.className;\n myTable.classList.add('e-resizetable');\n myTable.style.cssText = 'table-layout: auto;width: auto';\n var myTr = this.parent.createElement('tr');\n for (var i = (startRowIndex <= 0 ? 1 : startRowIndex); i <= (endRowIndex > text.length ? text.length : endRowIndex); i++) {\n var tr = myTr.cloneNode();\n tr.className = table.querySelector('tr').className;\n tr.appendChild(text[parseInt((i - 1).toString(), 10)]);\n myTable.appendChild(tr);\n }\n mySubDiv.appendChild(myTable);\n myTableDiv.appendChild(mySubDiv);\n document.body.appendChild(myTableDiv);\n var offsetWidthValue = myTable.getBoundingClientRect().width;\n document.body.removeChild(myTableDiv);\n return Math.ceil(offsetWidthValue);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Resize.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.headerRefreshed, this.refreshHeight, this);\n this.parent.on(events.refreshResizePosition, this.refreshResizePosition, this);\n this.parent.on(events.initialEnd, this.wireEvents, this);\n this.parent.on(events.contentReady, this.autoFit, this);\n this.parent.on(events.refreshHandlers, this.refreshHeight, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Resize.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.headerRefreshed, this.refreshHeight);\n this.parent.off(events.refreshResizePosition, this.refreshResizePosition);\n this.parent.off(events.initialEnd, this.wireEvents);\n this.parent.off(events.refreshHandlers, this.refreshHeight);\n this.parent.off(events.destroy, this.destroy);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Resize.prototype.render = function () {\n this.unwireEvents();\n this.wireEvents();\n this.setHandlerHeight();\n };\n Resize.prototype.refreshHeight = function () {\n if (this.parent.getHeaderTable()) {\n var element = this.getResizeHandlers();\n for (var i = 0; i < element.length; i++) {\n if (element[parseInt(i.toString(), 10)].parentElement.offsetHeight > 0) {\n element[parseInt(i.toString(), 10)].style.height = element[parseInt(i.toString(), 10)].parentElement.offsetHeight + 'px';\n }\n }\n this.setHandlerHeight();\n }\n };\n Resize.prototype.wireEvents = function () {\n EventHandler.add(this.parent.getHeaderContent(), Browser.touchStartEvent, this.touchResizeStart, this);\n EventHandler.add(this.parent.getHeaderContent(), events.dblclick, this.callAutoFit, this);\n };\n Resize.prototype.unwireEvents = function () {\n EventHandler.remove(this.parent.getHeaderContent(), Browser.touchStartEvent, this.touchResizeStart);\n EventHandler.remove(this.parent.getHeaderContent(), events.dblclick, this.callAutoFit);\n };\n Resize.prototype.getResizeHandlers = function () {\n return [].slice.call(this.parent.getHeaderTable().getElementsByClassName(resizeClassList.root));\n };\n Resize.prototype.setHandlerHeight = function () {\n var element = [].slice.call(this.parent.getHeaderTable().getElementsByClassName(resizeClassList.suppress));\n for (var i = 0; i < element.length; i++) {\n element[parseInt(i.toString(), 10)].style.height = element[parseInt(i.toString(), 10)].parentElement.offsetHeight + 'px';\n }\n };\n Resize.prototype.callAutoFit = function (e) {\n if (e.target.classList.contains('e-rhandler') && !this.isCancelAutoFit) {\n var col = this.getTargetColumn(e);\n if (col.columns) {\n return;\n }\n this.resizeColumn(col.field, this.parent.getNormalizedColumnIndex(col.uid), col.uid);\n var header = closest(e.target, resizeClassList.header);\n header.classList.add('e-resized');\n }\n };\n Resize.prototype.touchResizeStart = function (e) {\n if (!Global.timer) {\n Global.timer = setTimeout(function () {\n Global.timer = null;\n }, 300);\n return this.resizeStart(e);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.callAutoFit(e);\n }\n };\n Resize.prototype.resizeStart = function (e) {\n var _this = this;\n if (e.target.classList.contains('e-rhandler')) {\n this.isCancelAutoFit = false;\n var args = { e: e, column: this.getTargetColumn(e) };\n this.parent.trigger(events.resizeStart, args, function (args) {\n if (args.cancel || _this.parent.isEdit) {\n _this.cancelResizeAction();\n _this.isCancelAutoFit = true;\n return;\n }\n });\n if (!this.isCancelAutoFit) {\n if (!this.helper) {\n if (this.getScrollBarWidth() === 0) {\n this.resizeProcess = true;\n if (this.parent.allowGrouping) {\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n this.widthService.setColumnWidth(new Column({ width: '30px' }), i);\n }\n }\n for (var _i = 0, _a = this.refreshColumnWidth(); _i < _a.length; _i++) {\n var col = _a[_i];\n this.widthService.setColumnWidth(col);\n }\n this.widthService.setWidthToTable();\n this.resizeProcess = false;\n }\n this.refreshStackedColumnWidth();\n this.element = e.target;\n this.parentElementWidth = this.parent.element.getBoundingClientRect().width;\n this.appendHelper();\n this.column = this.getTargetColumn(e);\n this.pageX = this.getPointX(e);\n if (this.column.getFreezeTableName() === literals.frozenRight) {\n if (this.parent.enableRtl) {\n this.minMove = (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0)\n - parseFloat(isNullOrUndefined(this.column.width) ? '' : this.column.width.toString());\n }\n else {\n this.minMove = parseFloat(isNullOrUndefined(this.column.width) ? '' : this.column.width.toString())\n - (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0);\n }\n }\n else if (this.parent.enableRtl) {\n this.minMove = parseFloat(this.column.width.toString())\n - (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0);\n }\n else {\n this.minMove = (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0)\n - parseFloat(isNullOrUndefined(this.column.width) ? '' : this.column.width.toString());\n }\n this.minMove += this.pageX;\n }\n if (Browser.isDevice && !this.helper.classList.contains(resizeClassList.icon)) {\n this.helper.classList.add(resizeClassList.icon);\n EventHandler.add(document, Browser.touchStartEvent, this.removeHelper, this);\n EventHandler.add(this.helper, Browser.touchStartEvent, this.resizeStart, this);\n }\n else {\n EventHandler.add(document, Browser.touchEndEvent, this.resizeEnd, this);\n EventHandler.add(this.parent.element, Browser.touchMoveEvent, this.resizing, this);\n this.updateCursor('add');\n }\n }\n }\n };\n Resize.prototype.cancelResizeAction = function (removeEvents) {\n if (removeEvents) {\n EventHandler.remove(this.parent.element, Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(document, Browser.touchEndEvent, this.resizeEnd);\n this.updateCursor('remove');\n }\n if (Browser.isDevice && !isNullOrUndefined(this.helper)) {\n EventHandler.remove(document, Browser.touchStartEvent, this.removeHelper);\n EventHandler.remove(this.helper, Browser.touchStartEvent, this.resizeStart);\n }\n if (!isNullOrUndefined(this.helper)) {\n detach(this.helper);\n }\n this.refresh();\n };\n Resize.prototype.getWidth = function (width, minWidth, maxWidth) {\n if (minWidth && width < minWidth) {\n return minWidth;\n }\n else if ((maxWidth && width > maxWidth)) {\n return maxWidth;\n }\n else {\n return width;\n }\n };\n Resize.prototype.updateResizeEleHeight = function () {\n var elements = [].slice.call(this.parent.getHeaderContent().getElementsByClassName('e-rhandler'));\n for (var i = 0; i < elements.length; i++) {\n elements[parseInt(i.toString(), 10)].style.height = this.element.parentElement.offsetHeight + 'px';\n }\n };\n Resize.prototype.getColData = function (column, mousemove) {\n return {\n width: parseFloat(isNullOrUndefined(this.widthService.getWidth(column)) || this.widthService.getWidth(column) === 'auto' ? '0'\n : this.widthService.getWidth(column).toString()) + mousemove,\n minWidth: column.minWidth ? parseFloat(column.minWidth.toString()) : null,\n maxWidth: column.maxWidth ? parseFloat(column.maxWidth.toString()) : null\n };\n };\n Resize.prototype.refreshResizeFixedCols = function (pos) {\n var cols = this.parent.getColumns();\n var translateX = this.parent.enableColumnVirtualization ? this.parent.translateX : 0;\n var th = [].slice.call(this.parent.getHeaderContent().querySelector('tbody').querySelectorAll('.e-fixedfreeze')).concat([].slice.call(this.parent.getContent().querySelectorAll('.e-fixedfreeze')));\n for (var i = 0; i < th.length; i++) {\n var node = th[parseInt(i.toString(), 10)];\n var column = void 0;\n if (node.classList.contains('e-summarycell')) {\n var uid = node.getAttribute('e-mappinguid');\n column = this.parent.getColumnByUid(uid);\n }\n else {\n var index = parseInt(node.getAttribute('data-colindex'), 10);\n column = cols[parseInt(index.toString(), 10)];\n }\n var width = 0;\n if (pos === 'Left') {\n if (this.parent.getVisibleFrozenLeftCount()) {\n width = this.parent.getIndentCount() * 30;\n }\n else if (this.parent.getFrozenMode() === 'Right') {\n width = this.parent.groupSettings.columns.length * 30;\n }\n for (var j = 0; j < cols.length; j++) {\n if (column.index > cols[parseInt(j.toString(), 10)].index) {\n if (column.uid === cols[parseInt(j.toString(), 10)].uid) {\n break;\n }\n if ((cols[parseInt(j.toString(), 10)].freeze === 'Left' || cols[parseInt(j.toString(), 10)].isFrozen) ||\n cols[parseInt(j.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(j.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(j.toString(), 10)].width.toString());\n }\n }\n }\n }\n applyStickyLeftRightPosition(node, ((width === 0 ? width : width - 1) - translateX), this.parent.enableRtl, 'Left');\n }\n if (pos === 'Right') {\n width = this.parent.getFrozenMode() === 'Right' && this.parent.isRowDragable() ? 30 : 0;\n for (var j = cols.length - 1; j >= 0; j--) {\n if (column.uid === cols[parseInt(j.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(j.toString(), 10)].freeze === 'Right' || cols[parseInt(j.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(j.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(j.toString(), 10)].width.toString());\n }\n }\n }\n var colSpanwidth = 0;\n if (node.colSpan > 1) {\n colSpanwidth = this.calculateColspanWidth(cols, node, column.index);\n }\n applyStickyLeftRightPosition(node, (width - colSpanwidth) + translateX, this.parent.enableRtl, 'Right');\n }\n }\n };\n Resize.prototype.calculateColspanWidth = function (cols, node, index) {\n var width = 0;\n for (var j = index + 1; j < index + node.colSpan; j++) {\n width += parseInt(cols[parseInt(j.toString(), 10)].width.toString(), 10);\n }\n return width;\n };\n Resize.prototype.refreshResizePosition = function () {\n this.refreshResizefrzCols(true);\n };\n Resize.prototype.refreshResizefrzCols = function (freezeRefresh, isAutoFitCol) {\n var _this = this;\n var translateX = this.parent.enableColumnVirtualization ? this.parent.translateX : 0;\n if (freezeRefresh || ((this.column.freeze === 'Left' || this.column.isFrozen) ||\n (this.column.columns && frozenDirection(this.column) === 'Left'))) {\n var width_1 = this.parent.getIndentCount() * 30;\n var columns = this.parent.getColumns().filter(function (col) { return col.freeze === 'Left' || col.isFrozen; });\n if (!freezeRefresh || isAutoFitCol) {\n this.frzHdrRefresh('Left');\n }\n for (var i = 0; i < columns.length; i++) {\n if (freezeRefresh || (columns[parseInt(i.toString(), 10)].index > this.column.index)) {\n var elements = [];\n if (this.parent.frozenRows) {\n elements = [].slice.call(this.parent.getHeaderContent().querySelectorAll('td[data-colindex=\"' + i + '\"]')).concat([].slice.call(this.parent.getContent().querySelectorAll('td[data-colindex=\"' + i + '\"]')));\n }\n else {\n elements = [].slice.call(this.parent.getContent().querySelectorAll('td[data-colindex=\"' + i + '\"]'));\n }\n elements.filter(function (cell) {\n applyStickyLeftRightPosition(cell, width_1 - translateX, _this.parent.enableRtl, 'Left');\n });\n if (this.parent.enableColumnVirtualization) {\n columns[parseInt(i.toString(), 10)].valueX = width_1;\n }\n }\n if (columns[parseInt(i.toString(), 10)].visible) {\n width_1 += parseFloat(columns[parseInt(i.toString(), 10)].width.toString());\n }\n }\n this.refreshResizeFixedCols('Left');\n }\n if (freezeRefresh || (this.column.freeze === 'Right' || (this.column.columns && frozenDirection(this.column) === 'Right'))) {\n var width_2 = this.parent.getFrozenMode() === 'Right' && this.parent.isRowDragable() ? 30 : 0;\n var columns_1 = this.parent.getColumns();\n if (!freezeRefresh || isAutoFitCol) {\n this.frzHdrRefresh('Right');\n }\n var columnsRight = columns_1.filter(function (col) { return col.freeze === 'Right'; });\n var _loop_1 = function (i) {\n var elements = [];\n if (this_1.parent.frozenRows) {\n elements = [].slice.call(this_1.parent.getHeaderContent().querySelectorAll('td[data-colindex=\"' + i + '\"]')).concat([].slice.call(this_1.parent.getContent().querySelectorAll('td[data-colindex=\"' + i + '\"]')));\n }\n else {\n elements = [].slice.call(this_1.parent.getContent().querySelectorAll('td[data-colindex=\"' + i + '\"]'));\n }\n elements.filter(function (cell) {\n var colSpanwidth = 0;\n if (cell.colSpan > 1) {\n colSpanwidth = _this.calculateColspanWidth(columns_1, cell, columns_1[parseInt(i.toString(), 10)].index);\n }\n applyStickyLeftRightPosition(cell, (width_2 - colSpanwidth) + translateX, _this.parent.enableRtl, 'Right');\n });\n if (this_1.parent.enableColumnVirtualization) {\n columns_1[parseInt(i.toString(), 10)].valueX = width_2;\n }\n if (columns_1[parseInt(i.toString(), 10)].visible) {\n width_2 = width_2 + parseFloat(columns_1[parseInt(i.toString(), 10)].width.toString());\n }\n };\n var this_1 = this;\n for (var i = columns_1.length - 1; i >= columns_1.length - columnsRight.length; i--) {\n _loop_1(i);\n }\n this.refreshResizeFixedCols('Right');\n }\n if (this.column && (this.column.freeze === 'Fixed' || (this.column.columns && frozenDirection(this.column) === 'Fixed'))) {\n this.refreshResizeFixedCols('Left');\n this.refreshResizeFixedCols('Right');\n this.frzHdrRefresh('Left');\n this.frzHdrRefresh('Right');\n }\n if (this.parent.groupSettings.columns.length && this.parent.aggregates.length &&\n this.parent.getContent().querySelector('.e-groupcaptionrow')) {\n this.refreshGroupCaptionRow();\n }\n };\n Resize.prototype.refreshGroupCaptionRow = function () {\n var capRow = [].slice.call(this.parent.getContent().querySelectorAll('.e-groupcaptionrow'));\n for (var i = 0; i < capRow.length; i++) {\n var tr = capRow[parseInt(i.toString(), 10)];\n if (tr.querySelector('.e-summarycell')) {\n groupCaptionRowLeftRightPos(tr, this.parent);\n }\n }\n };\n Resize.prototype.frzHdrRefresh = function (pos) {\n var _this = this;\n var translateX = this.parent.enableColumnVirtualization ? this.parent.translateX : 0;\n if (pos === 'Left') {\n var tr = [].slice.call(this.parent.getHeaderContent().querySelector('thead').querySelectorAll('tr'));\n for (var i = 0; i < tr.length; i++) {\n var th = [].slice.call(tr[parseInt(i.toString(), 10)].querySelectorAll('.e-leftfreeze,.e-fixedfreeze'));\n var _loop_2 = function (j) {\n var node = th[parseInt(j.toString(), 10)];\n if (node.classList.contains('e-rowdragheader') || node.classList.contains('e-dragheadercell') ||\n node.classList.contains('e-grouptopleftcell')) {\n return \"continue\";\n }\n var column = this_2.getParticularCol(node);\n var cols = this_2.parent.getColumns();\n var width = 0;\n var summarycell = [];\n if (this_2.parent.aggregates.length && this_2.parent.getFooterContent()) {\n if (this_2.parent.getContent().querySelectorAll('.e-summaryrow').length) {\n var summaryRows = [].slice.call(this_2.parent.getContent().querySelectorAll('.e-summaryrow'));\n summaryRows.filter(function (row) {\n summarycell.push(row.querySelector('[e-mappinguid=\"' + column.uid + '\"]'));\n });\n }\n summarycell = summarycell.concat([].slice.call(this_2.parent.getFooterContent().querySelectorAll('[e-mappinguid=\"' + column.uid + '\"]')));\n }\n if (node.classList.contains('e-fixedfreeze')) {\n if (this_2.parent.getVisibleFrozenLeftCount()) {\n width = this_2.parent.getIndentCount() * 30;\n }\n else if (this_2.parent.getFrozenMode() === 'Right') {\n width = this_2.parent.groupSettings.columns.length * 30;\n }\n for (var w = 0; w < cols.length; w++) {\n if (column.index > cols[parseInt(w.toString(), 10)].index) {\n if (column.uid === cols[parseInt(w.toString(), 10)].uid) {\n break;\n }\n if ((cols[parseInt(w.toString(), 10)].freeze === 'Left' || cols[parseInt(w.toString(), 10)].isFrozen) ||\n cols[parseInt(w.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(w.toString(), 10)].visible) {\n width += parseInt(cols[parseInt(w.toString(), 10)].width.toString(), 10);\n }\n }\n }\n }\n if (summarycell && summarycell.length) {\n summarycell.filter(function (cell) {\n applyStickyLeftRightPosition(cell, width - translateX, _this.parent.enableRtl, 'Left');\n });\n }\n applyStickyLeftRightPosition(node, ((width === 0 ? width : width - 1) - translateX), this_2.parent.enableRtl, 'Left');\n }\n else {\n width = this_2.parent.getIndentCount() * 30;\n if (column.index === 0) {\n if (summarycell && summarycell.length) {\n summarycell.filter(function (cell) {\n applyStickyLeftRightPosition(cell, width - translateX, _this.parent.enableRtl, 'Left');\n });\n }\n applyStickyLeftRightPosition(node, width - translateX, this_2.parent.enableRtl, 'Left');\n if (this_2.parent.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n else {\n for (var k = 0; k < cols.length; k++) {\n if (column.index < cols[parseInt(k.toString(), 10)].index ||\n column.uid === cols[parseInt(k.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(k.toString(), 10)].visible) {\n width += parseInt(cols[parseInt(k.toString(), 10)].width.toString(), 10);\n }\n }\n if (summarycell && summarycell.length) {\n summarycell.filter(function (cell) {\n applyStickyLeftRightPosition(cell, width - translateX, _this.parent.enableRtl, 'Left');\n });\n }\n applyStickyLeftRightPosition(node, width - translateX, this_2.parent.enableRtl, 'Left');\n if (this_2.parent.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n }\n };\n var this_2 = this;\n for (var j = 0; j < th.length; j++) {\n _loop_2(j);\n }\n }\n }\n if (pos === 'Right') {\n var tr = [].slice.call(this.parent.getHeaderContent().querySelector('thead').querySelectorAll('tr'));\n for (var i = 0; i < tr.length; i++) {\n var th = [].slice.call(tr[parseInt(i.toString(), 10)].querySelectorAll('.e-rightfreeze, .e-fixedfreeze'));\n var _loop_3 = function (j) {\n var node = th[parseInt(j.toString(), 10)];\n var column = this_3.getParticularCol(node);\n var cols = this_3.parent.getColumns();\n var width = 0;\n var summarycell = [];\n if (this_3.parent.aggregates.length && this_3.parent.getFooterContent()) {\n if (this_3.parent.getContent().querySelectorAll('.e-summaryrow').length) {\n var summaryRows = [].slice.call(this_3.parent.getContent().querySelectorAll('.e-summaryrow'));\n summaryRows.filter(function (row) {\n summarycell.push(row.querySelector('[e-mappinguid=\"' + column.uid + '\"]'));\n });\n }\n summarycell = summarycell.concat([].slice.call(this_3.parent.getFooterContent().querySelectorAll('[e-mappinguid=\"' + column.uid + '\"]')));\n }\n if (node.classList.contains('e-fixedfreeze')) {\n width = this_3.parent.getFrozenMode() === 'Right' && this_3.parent.isRowDragable() ? 30 : 0;\n for (var w = cols.length - 1; w >= 0; w--) {\n if (column.index < cols[parseInt(w.toString(), 10)].index) {\n if ((column.columns && isChildColumn(column, cols[parseInt(w.toString(), 10)].uid)) ||\n column.index > cols[parseInt(w.toString(), 10)].index) {\n break;\n }\n if (cols[parseInt(w.toString(), 10)].freeze === 'Right' ||\n cols[parseInt(w.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(w.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(w.toString(), 10)].width.toString());\n }\n }\n }\n }\n if (summarycell.length) {\n summarycell.filter(function (cell) {\n applyStickyLeftRightPosition(cell, width + translateX, _this.parent.enableRtl, 'Right');\n });\n }\n applyStickyLeftRightPosition(node, width + translateX, this_3.parent.enableRtl, 'Right');\n }\n else {\n width = this_3.parent.getFrozenMode() === 'Right' && this_3.parent.isRowDragable() ? 30 : 0;\n for (var k = cols.length - 1; k >= 0; k--) {\n if ((column.columns && isChildColumn(column, cols[parseInt(k.toString(), 10)].uid)) ||\n column.index > cols[parseInt(k.toString(), 10)].index ||\n column.uid === cols[parseInt(k.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(k.toString(), 10)].visible) {\n width += parseInt(cols[parseInt(k.toString(), 10)].width.toString(), 10);\n }\n }\n if (summarycell.length) {\n summarycell.filter(function (cell) {\n applyStickyLeftRightPosition(cell, width + translateX, _this.parent.enableRtl, 'Right');\n });\n }\n applyStickyLeftRightPosition(node, width + translateX, this_3.parent.enableRtl, 'Right');\n if (this_3.parent.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n };\n var this_3 = this;\n for (var j = th.length - 1; j >= 0; j--) {\n _loop_3(j);\n }\n }\n }\n };\n Resize.prototype.getParticularCol = function (node) {\n var uid = node.classList.contains('e-filterbarcell') ? node.getAttribute('e-mappinguid') :\n node.querySelector('[e-mappinguid]').getAttribute('e-mappinguid');\n return this.parent.getColumnByUid(uid);\n };\n Resize.prototype.resizing = function (e) {\n if (isNullOrUndefined(this.column)) {\n return;\n }\n if (this.parent.isFrozenGrid()) {\n this.refreshResizefrzCols();\n }\n var offsetWidth = 0;\n if (isNullOrUndefined(this.column)) {\n offsetWidth = parentsUntil(this.element, 'th').offsetWidth;\n }\n if (this.parent.allowTextWrap) {\n this.updateResizeEleHeight();\n this.setHelperHeight();\n }\n var pageX = this.getPointX(e);\n var mousemove = this.parent.enableRtl ? -(pageX - this.pageX) : (pageX - this.pageX);\n var colData = this.getColData(this.column, mousemove);\n if (!colData.width) {\n colData.width = closest(this.element, 'th').offsetWidth;\n }\n var width = this.getWidth(colData.width, colData.minWidth, colData.maxWidth);\n this.parent.log('resize_min_max', { column: this.column, width: width });\n if (((!this.parent.enableRtl && this.minMove >= pageX) || (this.parent.enableRtl && this.minMove <= pageX))) {\n width = this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 10;\n this.pageX = pageX = this.minMove;\n }\n if (width !== parseFloat(isNullOrUndefined(this.column.width) || this.column.width === 'auto' ?\n offsetWidth.toString() : this.column.width.toString())) {\n this.pageX = pageX;\n this.column.width = formatUnit(width);\n var args = {\n e: e,\n column: this.column\n };\n this.parent.trigger(events.onResize, args);\n if (args.cancel) {\n this.cancelResizeAction(true);\n return;\n }\n var columns = [this.column];\n var finalColumns = [this.column];\n if (this.column.columns) {\n columns = this.getSubColumns(this.column, []);\n columns = this.calulateColumnsWidth(columns, false, mousemove);\n finalColumns = this.calulateColumnsWidth(columns, true, mousemove);\n }\n this.resizeProcess = true;\n for (var _i = 0, finalColumns_1 = finalColumns; _i < finalColumns_1.length; _i++) {\n var col = finalColumns_1[_i];\n this.widthService.setColumnWidth(col, null, 'resize');\n }\n this.resizeProcess = false;\n this.updateHelper();\n }\n this.isDblClk = false;\n };\n Resize.prototype.calulateColumnsWidth = function (columns, isUpdate, mousemove) {\n var finalColumns = [];\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var col = columns_2[_i];\n var totalWidth = 0;\n for (var i = 0; i < columns.length; i++) {\n totalWidth += parseFloat(columns[parseInt(i.toString(), 10)].width.toString());\n }\n var colData = this.getColData(col, (parseFloat(col.width)) * mousemove / totalWidth);\n var colWidth = this.getWidth(colData.width, colData.minWidth, colData.maxWidth);\n if ((colWidth !== parseFloat(col.width.toString()))) {\n if (isUpdate) {\n col.width = formatUnit(colWidth < 1 ? 1 : colWidth);\n }\n finalColumns.push(col);\n }\n }\n return finalColumns;\n };\n Resize.prototype.getSubColumns = function (column, subColumns) {\n for (var _i = 0, _a = column.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible !== false && col.allowResizing) {\n if (col.columns) {\n this.getSubColumns(col, subColumns);\n }\n else {\n subColumns.push(col);\n }\n }\n }\n return subColumns;\n };\n Resize.prototype.resizeEnd = function (e) {\n if (!this.helper || this.parent.isDestroyed) {\n return;\n }\n var gObj = this.parent;\n EventHandler.remove(this.parent.element, Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(document, Browser.touchEndEvent, this.resizeEnd);\n this.updateCursor('remove');\n detach(this.helper);\n var args = { e: e, column: this.column };\n var content = this.parent.getContent().querySelector('.' + literals.content);\n var cTable = content;\n if (cTable.scrollHeight > cTable.clientHeight) {\n this.parent.scrollModule.setPadding();\n cTable.style.overflowY = 'scroll';\n }\n this.parent.trigger(events.resizeStop, args);\n closest(this.element, '.e-headercell').classList.add('e-resized');\n this.isFrozenColResized = false;\n if (this.parent.allowTextWrap) {\n this.updateResizeEleHeight();\n this.parent.notify(events.textWrapRefresh, { case: 'textwrap' });\n }\n var headerTable = gObj.getHeaderTable();\n var contentTable = gObj.getContentTable();\n var footerTable;\n if (!isNullOrUndefined(gObj.getFooterContent())) {\n footerTable = gObj.getFooterContentTable();\n }\n var tableWidth = headerTable.offsetWidth;\n var contentwidth = (gObj.getContent().scrollWidth);\n if (contentwidth > tableWidth) {\n if (!isNullOrUndefined(contentTable.querySelector('.e-emptyrow'))) {\n addClass([headerTable], ['e-tableborder']);\n removeClass([contentTable], ['e-tableborder']);\n }\n else {\n addClass([headerTable, contentTable], ['e-tableborder']);\n }\n }\n else {\n removeClass([headerTable, contentTable], ['e-tableborder']);\n }\n if (!isNullOrUndefined(footerTable)) {\n footerTable.classList.add('e-tableborder');\n }\n this.refresh();\n this.doubleTapEvent(e);\n this.isDblClk = true;\n };\n Resize.prototype.getPointX = function (e) {\n if (e.touches && e.touches.length) {\n return e.touches[0].pageX;\n }\n else {\n return e.pageX;\n }\n };\n Resize.prototype.refreshColumnWidth = function () {\n var columns = this.parent.getColumns();\n for (var _i = 0, _a = [].slice.apply(this.parent.getHeaderContent().querySelectorAll('th.e-headercell')); _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, columns_3 = columns; _b < columns_3.length; _b++) {\n var column = columns_3[_b];\n if (ele.querySelector('[e-mappinguid]') &&\n ele.querySelector('[e-mappinguid]').getAttribute('e-mappinguid') === column.uid && column.visible) {\n column.width = ele.getBoundingClientRect().width;\n break;\n }\n }\n }\n return columns;\n };\n Resize.prototype.refreshStackedColumnWidth = function () {\n for (var _i = 0, _a = this.parent.getStackedColumns(this.parent.columns); _i < _a.length; _i++) {\n var stackedColumn = _a[_i];\n stackedColumn.width = this.getStackedWidth(stackedColumn, 0);\n }\n };\n Resize.prototype.getStackedWidth = function (column, width) {\n for (var _i = 0, _a = column.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible !== false) {\n if (col.columns) {\n width = this.getStackedWidth(col, width);\n }\n else {\n width += parseFloat(col.width.toString());\n }\n }\n }\n return width;\n };\n Resize.prototype.getTargetColumn = function (e) {\n var cell = closest(e.target, resizeClassList.header);\n cell = cell.querySelector('.e-headercelldiv') || cell.querySelector('.e-stackedheadercelldiv');\n var uid = cell.getAttribute('e-mappinguid');\n return this.parent.getColumnByUid(uid);\n };\n Resize.prototype.updateCursor = function (action) {\n var headerRows = [].slice.call(this.parent.getHeaderContent().querySelectorAll('th'));\n headerRows.push(this.parent.element);\n for (var _i = 0, headerRows_1 = headerRows; _i < headerRows_1.length; _i++) {\n var row = headerRows_1[_i];\n row.classList[\"\" + action](resizeClassList.cursor);\n }\n };\n Resize.prototype.refresh = function () {\n this.column = null;\n this.pageX = null;\n this.element = null;\n this.helper = null;\n };\n Resize.prototype.appendHelper = function () {\n this.helper = this.parent.createElement('div', {\n className: resizeClassList.helper\n });\n this.parent.element.appendChild(this.helper);\n this.setHelperHeight();\n };\n Resize.prototype.setHelperHeight = function () {\n var height = this.parent.getContent().offsetHeight - this.getScrollBarWidth();\n var rect = closest(this.element, resizeClassList.header);\n var tr = [].slice.call(this.parent.getHeaderContent().querySelectorAll('tr'));\n for (var i = tr.indexOf(rect.parentElement); i < tr.length && i > -1; i++) {\n height += tr[parseInt(i.toString(), 10)].offsetHeight;\n }\n var pos = this.calcPos(rect);\n pos.left += (this.parent.enableRtl ? 0 - 1 : rect.offsetWidth - 2);\n this.helper.style.cssText = 'height: ' + height + 'px; top: ' + pos.top + 'px; left:' + Math.floor(pos.left) + 'px;';\n if (this.parent.enableVirtualization) {\n this.helper.classList.add('e-virtual-rhandler');\n }\n };\n Resize.prototype.getScrollBarWidth = function (height) {\n var ele = this.parent.getContent().firstChild;\n return (ele.scrollHeight > ele.clientHeight && height) ||\n ele.scrollWidth > ele.clientWidth ? getScrollBarWidth() : 0;\n };\n Resize.prototype.removeHelper = function (e) {\n var cls = e.target.classList;\n if (!(cls.contains(resizeClassList.root) || cls.contains(resizeClassList.icon)) && this.helper) {\n EventHandler.remove(document, Browser.touchStartEvent, this.removeHelper);\n EventHandler.remove(this.helper, Browser.touchStartEvent, this.resizeStart);\n detach(this.helper);\n this.refresh();\n }\n };\n Resize.prototype.updateHelper = function () {\n var rect = closest(this.element, resizeClassList.header);\n var left;\n left = Math.floor(this.calcPos(rect).left + (this.parent.enableRtl ? 0 - 1 : rect.offsetWidth - 2));\n var borderWidth = 2; // to maintain the helper inside of grid element.\n if (left > this.parentElementWidth) {\n left = this.parentElementWidth - borderWidth;\n }\n this.helper.style.left = left + 'px';\n };\n Resize.prototype.calcPos = function (elem) {\n var parentOffset = {\n top: 0,\n left: 0\n };\n var offset = elem.getBoundingClientRect();\n var doc = elem.ownerDocument;\n var offsetParent = parentsUntil(elem, 'e-grid') || doc.documentElement;\n while (offsetParent &&\n (offsetParent === doc.body || offsetParent === doc.documentElement) &&\n offsetParent.style.position === 'static') {\n offsetParent = offsetParent.parentNode;\n }\n if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {\n parentOffset = offsetParent.getBoundingClientRect();\n }\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left\n };\n };\n Resize.prototype.doubleTapEvent = function (e) {\n var _this = this;\n if (this.getUserAgent() && this.isDblClk) {\n if (!this.tapped) {\n this.tapped = setTimeout(function () {\n _this.tapped = null;\n }, 300);\n }\n else {\n clearTimeout(this.tapped);\n this.callAutoFit(e);\n this.tapped = null;\n }\n }\n };\n Resize.prototype.getUserAgent = function () {\n var userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad/.test(userAgent);\n };\n Resize.prototype.timeoutHandler = function () {\n this.tapped = null;\n };\n return Resize;\n}());\nexport { Resize };\n","import { EventHandler, closest, Browser, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { remove } from '@syncfusion/ej2-base';\nimport { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport { parentsUntil, applyBiggerTheme } from '../base/util';\nimport * as events from '../base/constant';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { Group } from '../actions/group';\nimport { Sort } from '../actions/sort';\nimport { Filter } from '../actions/filter';\nimport { Resize } from '../actions/resize';\nimport { ResponsiveDialogAction } from '../base/enum';\nimport * as literals from '../base/string-literals';\n/**\n * 'column menu module used to handle column menu actions'\n *\n * @hidden\n */\nvar ColumnMenu = /** @class */ (function () {\n function ColumnMenu(parent, serviceLocator) {\n this.defaultItems = {};\n this.localeText = this.setLocaleKey();\n this.disableItems = [];\n this.hiddenItems = [];\n this.isOpen = false;\n // default class names\n this.GROUP = 'e-icon-group';\n this.UNGROUP = 'e-icon-ungroup';\n this.ASCENDING = 'e-icon-ascending';\n this.DESCENDING = 'e-icon-descending';\n this.ROOT = 'e-columnmenu';\n this.FILTER = 'e-icon-filter';\n this.POP = 'e-filter-popup';\n this.WRAP = 'e-col-menu';\n this.COL_POP = 'e-colmenu-popup';\n this.CHOOSER = '_chooser_';\n this.parent = parent;\n this.gridID = parent.element.id;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n if (this.parent.enableAdaptiveUI) {\n this.setFullScreenDialog();\n }\n }\n ColumnMenu.prototype.wireEvents = function () {\n if (!this.parent.enableAdaptiveUI) {\n var elements = this.getColumnMenuHandlers();\n for (var i = 0; i < elements.length; i++) {\n EventHandler.add(elements[parseInt(i.toString(), 10)], 'mousedown', this.columnMenuHandlerDown, this);\n }\n }\n };\n ColumnMenu.prototype.unwireEvents = function () {\n if (!this.parent.enableAdaptiveUI) {\n var elements = this.getColumnMenuHandlers();\n for (var i = 0; i < elements.length; i++) {\n EventHandler.remove(elements[parseInt(i.toString(), 10)], 'mousedown', this.columnMenuHandlerDown);\n }\n }\n };\n ColumnMenu.prototype.setFullScreenDialog = function () {\n if (this.serviceLocator) {\n this.serviceLocator.registerAdaptiveService(this, this.parent.enableAdaptiveUI, ResponsiveDialogAction.isColMenu);\n }\n };\n /**\n * To destroy the resize\n *\n * @returns {void}\n * @hidden\n */\n ColumnMenu.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement.querySelector('.' + literals.gridContent) && (!gridElement.querySelector('.' + literals.gridHeader)) || !gridElement) {\n return;\n }\n if (this.columnMenu) {\n this.columnMenu.destroy();\n }\n this.removeEventListener();\n this.unwireFilterEvents();\n this.unwireEvents();\n if (!this.parent.enableAdaptiveUI && this.element.parentNode) {\n remove(this.element);\n }\n };\n ColumnMenu.prototype.columnMenuHandlerClick = function (e) {\n if (e.target.classList.contains('e-columnmenu')) {\n if (this.parent.enableAdaptiveUI) {\n this.headerCell = this.getHeaderCell(e);\n var col = this.getColumn();\n this.responsiveDialogRenderer.isCustomDialog = true;\n this.parent.notify(events.renderResponsiveChangeAction, { action: 4 });\n this.parent.notify(events.filterOpen, { col: col, target: e.target, isClose: null, id: null });\n this.responsiveDialogRenderer.showResponsiveDialog(null, col);\n }\n else {\n this.columnMenu.items = this.getItems();\n this.columnMenu.dataBind();\n if ((this.isOpen && this.headerCell !== this.getHeaderCell(e)) ||\n document.querySelector('.e-grid-menu .e-menu-parent.e-ul')) {\n this.columnMenu.close();\n this.openColumnMenu(e);\n }\n else if (!this.isOpen) {\n this.openColumnMenu(e);\n }\n else {\n this.columnMenu.close();\n }\n }\n }\n };\n /**\n * @param {string} field - specifies the field name\n * @returns {void}\n * @hidden\n */\n ColumnMenu.prototype.openColumnMenuByField = function (field) {\n this.openColumnMenu({ target: this.parent.getColumnHeaderByField(field).querySelector('.e-columnmenu') });\n };\n ColumnMenu.prototype.afterFilterColumnMenuClose = function () {\n if (this.columnMenu) {\n this.columnMenu.items = this.getItems();\n this.columnMenu.dataBind();\n this.columnMenu.close();\n }\n };\n ColumnMenu.prototype.openColumnMenu = function (e) {\n var contentRect = this.parent.getContent().getClientRects()[0];\n var headerEle = this.parent.getHeaderContent();\n var headerElemCliRect = headerEle.getBoundingClientRect();\n var pos = { top: 0, left: 0 };\n this.element.style.cssText = 'display:block;visibility:hidden';\n var elePos = this.element.getBoundingClientRect();\n var gClient = this.parent.element.getBoundingClientRect();\n this.element.style.cssText = 'display:none;visibility:visible';\n this.headerCell = this.getHeaderCell(e);\n if (this.parent.enableRtl) {\n pos = this.parent.enableStickyHeader ? calculatePosition(this.headerCell, 'left', 'bottom', true) :\n calculatePosition(this.headerCell, 'left', 'bottom');\n }\n else {\n pos = this.parent.enableStickyHeader ? calculatePosition(this.headerCell, 'right', 'bottom', true) :\n calculatePosition(this.headerCell, 'right', 'bottom');\n pos.left -= elePos.width;\n if (headerEle.classList.contains('e-sticky')) {\n pos.top = this.parent.element.offsetTop + headerElemCliRect.top + headerElemCliRect.height;\n if (headerElemCliRect.top + headerElemCliRect.height > contentRect.top) {\n pos.top += ((headerElemCliRect.top + headerElemCliRect.height) - contentRect.top);\n }\n }\n else if (this.parent.enableStickyHeader) {\n pos.top = this.parent.element.offsetTop + headerEle.offsetTop + headerElemCliRect.height;\n }\n if ((pos.left + elePos.width + 1) >= gClient.right) {\n pos.left -= 35;\n }\n }\n this.columnMenu['open'](pos.top, pos.left);\n if (e.preventDefault) {\n e.preventDefault();\n }\n applyBiggerTheme(this.parent.element, this.columnMenu.element.parentElement);\n };\n ColumnMenu.prototype.columnMenuHandlerDown = function () {\n this.isOpen = !(this.element.style.display === 'none' || this.element.style.display === '');\n };\n ColumnMenu.prototype.getColumnMenuHandlers = function () {\n return [].slice.call(this.parent.getHeaderTable().getElementsByClassName(this.ROOT));\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnMenu.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.headerRefreshed, this.wireEvents, this);\n this.parent.on(events.uiUpdate, this.enableAfterRenderMenu, this);\n this.parent.on(events.initialEnd, this.render, this);\n if (this.isFilterItemAdded()) {\n this.parent.on(events.filterDialogCreated, this.filterPosition, this);\n }\n this.parent.on(events.setFullScreenDialog, this.setFullScreenDialog, this);\n this.parent.on(events.renderResponsiveChangeAction, this.renderResponsiveChangeAction, this);\n this.parent.on(events.click, this.columnMenuHandlerClick, this);\n this.parent.on(events.afterFilterColumnMenuClose, this.afterFilterColumnMenuClose, this);\n this.parent.on(events.keyPressed, this.keyPressHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnMenu.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.headerRefreshed, this.unwireEvents);\n this.parent.off(events.uiUpdate, this.enableAfterRenderMenu);\n this.parent.off(events.initialEnd, this.render);\n if (this.isFilterItemAdded()) {\n this.parent.off(events.filterDialogCreated, this.filterPosition);\n }\n this.parent.off(events.setFullScreenDialog, this.setFullScreenDialog);\n this.parent.off(events.renderResponsiveChangeAction, this.renderResponsiveChangeAction);\n this.parent.off(events.click, this.columnMenuHandlerClick);\n this.parent.on(events.afterFilterColumnMenuClose, this.afterFilterColumnMenuClose);\n this.parent.off(events.keyPressed, this.keyPressHandler);\n this.parent.off(events.destroy, this.destroy);\n };\n ColumnMenu.prototype.keyPressHandler = function (e) {\n var gObj = this.parent;\n if (e.action === 'altDownArrow') {\n var element = gObj.focusModule.currentInfo.element;\n if (element && element.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(element.firstElementChild.getAttribute('e-mappinguid'));\n this.openColumnMenuByField(column.field);\n }\n }\n };\n ColumnMenu.prototype.enableAfterRenderMenu = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n if (this.columnMenu) {\n this.columnMenu.destroy();\n remove(this.element);\n }\n if (!this.parent.enableAdaptiveUI) {\n this.render();\n }\n }\n };\n ColumnMenu.prototype.render = function () {\n if (this.parent.enableAdaptiveUI) {\n return;\n }\n this.l10n = this.serviceLocator.getService('localization');\n this.element = this.parent.createElement('ul', { id: this.gridID + '_columnmenu', className: 'e-colmenu' });\n this.element.setAttribute('aria-label', this.l10n.getConstant('ColumnMenuDialogARIA'));\n this.parent.element.appendChild(this.element);\n this.columnMenu = new Menu({\n cssClass: this.parent.cssClass ? 'e-grid-menu' + ' ' + this.parent.cssClass : 'e-grid-menu',\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n locale: this.parent.locale,\n items: this.getItems(),\n select: this.columnMenuItemClick.bind(this),\n beforeOpen: this.columnMenuBeforeOpen.bind(this),\n onOpen: this.columnMenuOnOpen.bind(this),\n onClose: this.columnMenuOnClose.bind(this),\n beforeItemRender: this.beforeMenuItemRender.bind(this),\n beforeClose: this.columnMenuBeforeClose.bind(this)\n });\n if (this.element && parentsUntil(this.element, 'e-popup')) {\n this.element.classList.add(this.COL_POP);\n }\n this.columnMenu.appendTo(this.element);\n this.wireFilterEvents();\n };\n ColumnMenu.prototype.wireFilterEvents = function () {\n if (!Browser.isDevice && this.isFilterItemAdded()) {\n EventHandler.add(this.element, 'mouseover', this.appendFilter, this);\n }\n };\n ColumnMenu.prototype.unwireFilterEvents = function () {\n if (!Browser.isDevice && this.isFilterItemAdded() && !this.parent.enableAdaptiveUI) {\n EventHandler.remove(this.element, 'mouseover', this.appendFilter);\n }\n };\n ColumnMenu.prototype.beforeMenuItemRender = function (args) {\n var _a;\n if (this.isChooserItem(args.item)) {\n var field_1 = this.getKeyFromId(args.item.id, this.CHOOSER);\n var column = this.parent.columnModel.filter(function (col) { return col.field === field_1; });\n var check = createCheckBox(this.parent.createElement, false, {\n label: args.item.text,\n checked: column[0].visible\n });\n if (this.parent.enableRtl) {\n check.classList.add('e-rtl');\n }\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n (_a = check.classList).add.apply(_a, this.parent.cssClass.split(' '));\n }\n else {\n check.classList.add(this.parent.cssClass);\n }\n }\n args.element.innerHTML = '';\n args.element.appendChild(check);\n }\n else if (args.item.id && this.getKeyFromId(args.item.id) === 'Filter') {\n args.element.appendChild(this.parent.createElement('span', { className: 'e-icons e-caret' }));\n args.element.className += 'e-filter-item e-menu-caret-icon';\n }\n };\n ColumnMenu.prototype.columnMenuBeforeClose = function (args) {\n var colChooser = args.event ? closest(args.event.target, '.e-menu-item') : null;\n if (!isNullOrUndefined(args.parentItem) &&\n this.getKeyFromId(args.parentItem.id) === 'ColumnChooser' &&\n colChooser && this.isChooserItem(colChooser)) {\n args.cancel = args.event && args.event.code === 'Escape' ? false : true;\n }\n else if (args.event && (closest(args.event.target, '.' + this.POP)\n || (args.event.currentTarget && args.event.currentTarget.activeElement &&\n parentsUntil(args.event.currentTarget.activeElement, 'e-filter-popup'))\n || (parentsUntil(args.event.target, 'e-popup') && parentsUntil(args.event.target, 'e-colmenu-popup'))\n || (parentsUntil(args.event.target, 'e-popup-wrapper'))) && !Browser.isDevice) {\n args.cancel = true;\n }\n else if (args.event && args.event.target && args.event.target.classList.contains('e-filter-item') && args.event.key === 'Enter') {\n args.cancel = true;\n }\n };\n ColumnMenu.prototype.isChooserItem = function (item) {\n return item.id && item.id.indexOf('_colmenu_') >= 0 &&\n this.getKeyFromId(item.id, this.CHOOSER).indexOf('_colmenu_') === -1;\n };\n ColumnMenu.prototype.columnMenuBeforeOpen = function (args) {\n args.column = this.targetColumn = this.getColumn();\n this.parent.trigger(events.columnMenuOpen, args);\n for (var _i = 0, _a = args.items; _i < _a.length; _i++) {\n var item = _a[_i];\n var key = this.getKeyFromId(item.id);\n var dItem = this.defaultItems[\"\" + key];\n if (this.getDefaultItems().indexOf(key) !== -1 && this.ensureDisabledStatus(key) && !dItem.hide) {\n this.disableItems.push(item.text);\n }\n if (item.hide) {\n this.hiddenItems.push(item.text);\n }\n }\n this.columnMenu.enableItems(this.disableItems, false);\n this.columnMenu.hideItems(this.hiddenItems);\n };\n ColumnMenu.prototype.columnMenuOnOpen = function (args) {\n if (args.element.className === 'e-menu-parent e-ul ') {\n if (args.element.offsetHeight > window.innerHeight || this.parent.element.offsetHeight > window.innerHeight) {\n args.element.style.maxHeight = (window.innerHeight) * 0.8 + 'px';\n args.element.style.overflowY = 'auto';\n if (this.parent.enableStickyHeader) {\n args.element.style.position = 'fixed';\n }\n }\n }\n };\n ColumnMenu.prototype.ensureDisabledStatus = function (item) {\n var status = false;\n switch (item) {\n case 'Group':\n if (!this.parent.allowGrouping || (this.parent.ensureModuleInjected(Group) && this.targetColumn\n && this.parent.groupSettings.columns.indexOf(this.targetColumn.field) >= 0 ||\n this.targetColumn && !this.targetColumn.allowGrouping)) {\n status = true;\n }\n break;\n case 'AutoFitAll':\n case 'AutoFit':\n status = !this.parent.ensureModuleInjected(Resize);\n break;\n case 'Ungroup':\n if (!this.parent.ensureModuleInjected(Group) || (this.parent.ensureModuleInjected(Group) && this.targetColumn\n && this.parent.groupSettings.columns.indexOf(this.targetColumn.field) < 0)) {\n status = true;\n }\n break;\n case 'SortDescending':\n case 'SortAscending':\n if (this.parent.allowSorting && this.parent.ensureModuleInjected(Sort)\n && this.parent.sortSettings.columns.length > 0 && this.targetColumn && this.targetColumn.allowSorting) {\n var sortColumns = this.parent.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (sortColumns[parseInt(i.toString(), 10)].field === this.targetColumn.field\n && sortColumns[parseInt(i.toString(), 10)].direction.toLocaleLowerCase() === item.toLocaleLowerCase().replace('sort', '')) {\n status = true;\n }\n }\n }\n else if (!this.parent.allowSorting || !this.parent.ensureModuleInjected(Sort) ||\n this.parent.allowSorting && this.targetColumn && !this.targetColumn.allowSorting) {\n status = true;\n }\n break;\n case 'Filter':\n if (this.parent.allowFiltering && (this.parent.filterSettings.type !== 'FilterBar')\n && this.parent.ensureModuleInjected(Filter) && this.targetColumn && this.targetColumn.allowFiltering) {\n status = false;\n }\n else if (this.parent.ensureModuleInjected(Filter) && this.parent.allowFiltering\n && this.targetColumn && (!this.targetColumn.allowFiltering || this.parent.filterSettings.type === 'FilterBar')) {\n status = true;\n }\n }\n return status;\n };\n ColumnMenu.prototype.columnMenuItemClick = function (args) {\n var item = this.isChooserItem(args.item) ? 'ColumnChooser' : this.getKeyFromId(args.item.id);\n switch (item) {\n case 'AutoFit':\n this.parent.autoFitColumns(this.targetColumn.field);\n break;\n case 'AutoFitAll':\n this.parent.autoFitColumns([]);\n break;\n case 'Ungroup':\n this.parent.ungroupColumn(this.targetColumn.field);\n break;\n case 'Group':\n this.parent.groupColumn(this.targetColumn.field);\n break;\n case 'SortAscending':\n this.parent.sortColumn(this.targetColumn.field, 'Ascending');\n break;\n case 'SortDescending':\n this.parent.sortColumn(this.targetColumn.field, 'Descending');\n break;\n case 'ColumnChooser':\n // eslint-disable-next-line no-case-declarations\n var key = this.getKeyFromId(args.item.id, this.CHOOSER);\n // eslint-disable-next-line no-case-declarations\n var checkbox = args.element.querySelector('.e-checkbox-wrapper .e-frame');\n if (checkbox && checkbox.classList.contains('e-check')) {\n checkbox.classList.remove('e-check');\n this.parent.hideColumns(key, 'field');\n }\n else if (checkbox) {\n this.parent.showColumns(key, 'field');\n checkbox.classList.add('e-check');\n }\n break;\n case 'Filter':\n this.getFilter(args.element, args.item.id);\n break;\n }\n args.column = this.targetColumn;\n this.parent.trigger(events.columnMenuClick, args);\n };\n ColumnMenu.prototype.columnMenuOnClose = function (args) {\n var parent = 'parentObj';\n if (args.items.length > 0 && args.items[0][\"\" + parent] instanceof Menu) {\n this.columnMenu.enableItems(this.disableItems, false);\n this.disableItems = [];\n this.columnMenu.showItems(this.hiddenItems);\n this.hiddenItems = [];\n if (this.isFilterPopupOpen()) {\n this.getFilter(args.element, args.element.id, true);\n }\n }\n if (!isNullOrUndefined(args.parentItem) && this.getKeyFromId(args.parentItem.id) === 'ColumnChooser'\n && this.columnMenu.element.querySelector('.e-selected')) {\n this.columnMenu.element.querySelector('.e-selected').focus();\n }\n else {\n this.parent.notify(events.restoreFocus, {});\n }\n };\n ColumnMenu.prototype.getDefaultItems = function () {\n return ['AutoFitAll', 'AutoFit', 'SortAscending', 'SortDescending', 'Group', 'Ungroup', 'ColumnChooser', 'Filter'];\n };\n ColumnMenu.prototype.getItems = function () {\n var items = [];\n var defultItems = this.parent.columnMenuItems ? this.parent.columnMenuItems : this.getDefault();\n for (var _i = 0, defultItems_1 = defultItems; _i < defultItems_1.length; _i++) {\n var item = defultItems_1[_i];\n if (typeof item === 'string') {\n if (item === 'ColumnChooser') {\n var col = this.getDefaultItem(item);\n col.items = this.createChooserItems();\n items.push(col);\n }\n else {\n items.push(this.getDefaultItem(item));\n }\n }\n else {\n items.push(item);\n }\n }\n return items;\n };\n ColumnMenu.prototype.getDefaultItem = function (item) {\n var menuItem = {};\n switch (item) {\n case 'SortAscending':\n menuItem = { iconCss: this.ASCENDING };\n break;\n case 'SortDescending':\n menuItem = { iconCss: this.DESCENDING };\n break;\n case 'Group':\n menuItem = { iconCss: this.GROUP };\n break;\n case 'Ungroup':\n menuItem = { iconCss: this.UNGROUP };\n break;\n case 'Filter':\n menuItem = { iconCss: this.FILTER };\n break;\n }\n this.defaultItems[\"\" + item] = {\n text: this.getLocaleText(item), id: this.generateID(item),\n iconCss: menuItem.iconCss ? 'e-icons ' + menuItem.iconCss : null\n };\n return this.defaultItems[\"\" + item];\n };\n ColumnMenu.prototype.getLocaleText = function (item) {\n return this.l10n.getConstant(this.localeText[\"\" + item]);\n };\n ColumnMenu.prototype.generateID = function (item, append) {\n return this.gridID + '_colmenu_' + (append ? append + item : item);\n };\n ColumnMenu.prototype.getKeyFromId = function (id, append) {\n return id.indexOf('_colmenu_') > 0 &&\n id.replace(this.gridID + '_colmenu_' + (append ? append : ''), '');\n };\n /**\n * @returns {HTMLElement} returns the HTMLElement\n * @hidden\n */\n ColumnMenu.prototype.getColumnMenu = function () {\n return this.element;\n };\n ColumnMenu.prototype.getModuleName = function () {\n return 'columnMenu';\n };\n ColumnMenu.prototype.setLocaleKey = function () {\n var localeKeys = {\n 'AutoFitAll': 'autoFitAll',\n 'AutoFit': 'autoFit',\n 'Group': 'Group',\n 'Ungroup': 'Ungroup',\n 'SortAscending': 'SortAscending',\n 'SortDescending': 'SortDescending',\n 'ColumnChooser': 'Columnchooser',\n 'Filter': 'FilterMenu'\n };\n return localeKeys;\n };\n ColumnMenu.prototype.getHeaderCell = function (e) {\n return closest(e.target, 'th.e-headercell');\n };\n ColumnMenu.prototype.getColumn = function () {\n if (this.headerCell) {\n var uid = this.headerCell.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n return this.parent.getColumnByUid(uid);\n }\n return null;\n };\n ColumnMenu.prototype.createChooserItems = function () {\n var items = [];\n for (var _i = 0, _a = this.parent.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.showInColumnChooser && col.field) {\n items.push({ id: this.generateID(col.field, this.CHOOSER), text: col.headerText ? col.headerText : col.field });\n }\n }\n return items;\n };\n ColumnMenu.prototype.appendFilter = function (e) {\n var filter = 'Filter';\n if (!this.defaultItems[\"\" + filter]) {\n return;\n }\n else {\n var key = this.defaultItems[\"\" + filter].id;\n if (closest(e.target, '#' + key) && !this.isFilterPopupOpen()) {\n this.getFilter(e.target, key);\n }\n else if (!closest(e.target, '#' + key) && this.isFilterPopupOpen()) {\n this.getFilter(e.target, key, true);\n }\n }\n };\n ColumnMenu.prototype.getFilter = function (target, id, isClose) {\n var filterPopup = this.getFilterPop();\n if (filterPopup) {\n filterPopup.style.display = !Browser.isDevice && isClose ? 'none' : 'block';\n }\n else {\n this.parent.notify(events.filterOpen, {\n col: this.targetColumn, target: target, isClose: isClose, id: id\n });\n }\n };\n ColumnMenu.prototype.setPosition = function (li, ul) {\n var gridPos = this.parent.element.getBoundingClientRect();\n var liPos = li.getBoundingClientRect();\n var left = liPos.left - gridPos.left;\n var top = liPos.top - gridPos.top;\n if (gridPos.height < top) {\n top = top - ul.offsetHeight + liPos.height;\n }\n else if (gridPos.height < top + ul.offsetHeight) {\n top = gridPos.height - ul.offsetHeight;\n }\n if (window.innerHeight < ul.offsetHeight + top + gridPos.top) {\n top = window.innerHeight - ul.offsetHeight - gridPos.top;\n }\n if (top + gridPos.top < 0) {\n top = 0;\n }\n left += (this.parent.enableRtl ? -ul.offsetWidth : liPos.width);\n if (gridPos.width <= left + ul.offsetWidth) {\n left -= liPos.width + ul.offsetWidth;\n if (liPos.left < ul.offsetWidth) {\n left = liPos.left + ul.offsetWidth / 2;\n }\n }\n else if (left < 0) {\n left += ul.offsetWidth + liPos.width;\n }\n ul.style.top = top + 'px';\n ul.style.left = left + 'px';\n };\n ColumnMenu.prototype.filterPosition = function () {\n var filterPopup = this.getFilterPop();\n if (this.parent.enableAdaptiveUI) {\n return;\n }\n filterPopup.classList.add(this.WRAP);\n if (!Browser.isDevice) {\n var disp = filterPopup.style.display;\n filterPopup.style.cssText += 'display:block;visibility:hidden';\n var li = this.element.querySelector('.' + this.FILTER);\n if (li) {\n this.setPosition(li.parentElement, filterPopup);\n filterPopup.style.cssText += 'display:' + disp + ';visibility:visible';\n }\n }\n };\n ColumnMenu.prototype.getDefault = function () {\n var items = [];\n if (this.parent.ensureModuleInjected(Resize)) {\n items.push('AutoFitAll');\n items.push('AutoFit');\n }\n if (this.parent.allowGrouping && this.parent.ensureModuleInjected(Group)) {\n items.push('Group');\n items.push('Ungroup');\n }\n if (this.parent.allowSorting && this.parent.ensureModuleInjected(Sort)) {\n items.push('SortAscending');\n items.push('SortDescending');\n }\n items.push('ColumnChooser');\n if (this.parent.allowFiltering && (this.parent.filterSettings.type !== 'FilterBar') &&\n this.parent.ensureModuleInjected(Filter)) {\n items.push('Filter');\n }\n return items;\n };\n ColumnMenu.prototype.isFilterPopupOpen = function () {\n var filterPopup = this.getFilterPop();\n return filterPopup && filterPopup.style.display !== 'none';\n };\n ColumnMenu.prototype.getFilterPop = function () {\n if (this.targetColumn !== null && this.parent.filterSettings.type === 'Menu' && Browser.isDevice) {\n return document.getElementById(this.targetColumn.uid + '-flmdlg');\n }\n return this.parent.element.querySelector('.' + this.POP);\n };\n ColumnMenu.prototype.isFilterItemAdded = function () {\n return (this.parent.columnMenuItems &&\n this.parent.columnMenuItems.indexOf('Filter') >= 0) || !this.parent.columnMenuItems;\n };\n ColumnMenu.prototype.renderResponsiveChangeAction = function (args) {\n this.responsiveDialogRenderer.action = args.action;\n };\n return ColumnMenu;\n}());\nexport { ColumnMenu };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { attributes, createElement, classList, append } from '@syncfusion/ej2-base';\n/**\n * `NumericContainer` module handles rendering and refreshing numeric container.\n */\nvar NumericContainer = /** @class */ (function () {\n /**\n * Constructor for numericContainer module\n *\n * @param {Pager} pagerModule - specifies the pagerModule\n * @hidden\n */\n function NumericContainer(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render numericContainer\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.render = function () {\n this.pagerElement = this.pagerModule.element;\n this.renderNumericContainer();\n this.refreshNumericLinks();\n this.wireEvents();\n };\n /**\n * Refreshes the numeric container of Pager.\n *\n * @returns {void}\n */\n NumericContainer.prototype.refresh = function () {\n this.pagerModule.updateTotalPages();\n if (this.links.length) {\n this.updateLinksHtml();\n }\n this.refreshAriaAttrLabel();\n this.updateStyles();\n };\n /**\n * The function is used to refresh refreshNumericLinks\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.refreshNumericLinks = function () {\n var link;\n var pagerObj = this.pagerModule;\n var div = pagerObj.element.querySelector('.e-numericcontainer');\n var frag = document.createDocumentFragment();\n div.innerHTML = '';\n for (var i = 1; i <= pagerObj.pageCount; i++) {\n link = createElement('a', {\n className: 'e-link e-numericitem e-spacing e-pager-default',\n attrs: { tabindex: '-1', 'aria-label': pagerObj.getLocalizedLabel('Page') + i + pagerObj.getLocalizedLabel('Of') +\n pagerObj.totalPages + pagerObj.getLocalizedLabel('Pages'), href: '#' }\n });\n if (pagerObj.currentPage === i) {\n classList(link, ['e-currentitem', 'e-active'], ['e-pager-default']);\n link.setAttribute('aria-current', 'page');\n }\n frag.appendChild(link);\n }\n div.appendChild(frag);\n this.links = [].slice.call(div.childNodes);\n };\n /**\n * Binding events to the element while component creation\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.wireEvents = function () {\n EventHandler.add(this.pagerElement, 'click', this.clickHandler, this);\n EventHandler.add(this.pagerElement, 'auxclick', this.auxiliaryClickHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.unwireEvents = function () {\n EventHandler.remove(this.pagerModule.element, 'click', this.clickHandler);\n EventHandler.remove(this.pagerModule.element, 'auxclick', this.auxiliaryClickHandler);\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.destroy = function () {\n this.unwireEvents();\n };\n NumericContainer.prototype.refreshAriaAttrLabel = function () {\n var pagerObj = this.pagerModule;\n var numericContainer = pagerObj.element.querySelector('.e-numericcontainer');\n var links = numericContainer.querySelectorAll('a');\n for (var i = 0; i < links.length; i++) {\n if (links[parseInt(i.toString(), 10)].hasAttribute('aria-label') && links[parseInt(i.toString(), 10)].hasAttribute('index')) {\n links[parseInt(i.toString(), 10)].setAttribute('aria-label', pagerObj.getLocalizedLabel('Page') + links[parseInt(i.toString(), 10)].getAttribute('index')\n + pagerObj.getLocalizedLabel('Of') + pagerObj.totalPages + pagerObj.getLocalizedLabel('Pages'));\n }\n }\n };\n NumericContainer.prototype.renderNumericContainer = function () {\n this.element = createElement('div', {\n className: 'e-pagercontainer', attrs: { 'role': 'navigation' }\n });\n this.renderFirstNPrev(this.element);\n this.renderPrevPagerSet(this.element);\n this.element.appendChild(createElement('div', { className: 'e-numericcontainer' }));\n this.renderNextPagerSet(this.element);\n this.renderNextNLast(this.element);\n this.pagerModule.element.appendChild(this.element);\n };\n NumericContainer.prototype.renderFirstNPrev = function (pagerContainer) {\n this.first = createElement('div', {\n className: 'e-first e-icons e-icon-first',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n this.prev = createElement('div', {\n className: 'e-prev e-icons e-icon-prev',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n append([this.first, this.prev], pagerContainer);\n };\n NumericContainer.prototype.renderPrevPagerSet = function (pagerContainer) {\n var prevPager = createElement('div');\n this.PP = createElement('a', {\n className: 'e-link e-pp e-spacing', innerHTML: '...',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n tabindex: '-1',\n href: '#'\n }\n });\n prevPager.appendChild(this.PP);\n pagerContainer.appendChild(prevPager);\n };\n NumericContainer.prototype.renderNextPagerSet = function (pagerContainer) {\n var nextPager = createElement('div');\n this.NP = createElement('a', {\n className: 'e-link e-np e-spacing',\n innerHTML: '...', attrs: {\n title: this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n tabindex: '-1',\n href: '#'\n }\n });\n nextPager.appendChild(this.NP);\n pagerContainer.appendChild(nextPager);\n };\n NumericContainer.prototype.renderNextNLast = function (pagerContainer) {\n this.next = createElement('div', {\n className: 'e-next e-icons e-icon-next',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n this.last = createElement('div', {\n className: 'e-last e-icons e-icon-last',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n append([this.next, this.last], pagerContainer);\n };\n NumericContainer.prototype.clickHandler = function (e) {\n var pagerObj = this.pagerModule;\n this.target = e.target;\n if (this.target.classList.contains('e-numericitem')) {\n e.preventDefault();\n }\n pagerObj.previousPageNo = pagerObj.currentPage;\n if (!this.target.classList.contains('e-disable') && !isNullOrUndefined(this.target.getAttribute('index'))) {\n pagerObj.currentPage = parseInt(this.target.getAttribute('index'), 10);\n pagerObj.dataBind();\n }\n return false;\n };\n NumericContainer.prototype.auxiliaryClickHandler = function (e) {\n this.target = e.target;\n if (this.target.classList.contains('e-numericitem') && (e.button === 1)) {\n e.preventDefault();\n }\n };\n NumericContainer.prototype.updateLinksHtml = function () {\n var pagerObj = this.pagerModule;\n var currentPageSet;\n var isLastSet;\n var pageNo;\n var numItems = this.pagerElement.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n pagerObj.currentPage = pagerObj.totalPages === 1 ? 1 : pagerObj.currentPage;\n if (pagerObj.currentPage > pagerObj.totalPages && pagerObj.totalPages) {\n pagerObj.currentPage = pagerObj.totalPages;\n }\n currentPageSet = parseInt((pagerObj.currentPage / pagerObj.pageCount).toString(), 10);\n if (pagerObj.currentPage % pagerObj.pageCount === 0 && currentPageSet > 0) {\n currentPageSet = currentPageSet - 1;\n }\n for (var i = 0; i < pagerObj.pageCount; i++) {\n if (pagerObj.isPagerResized) {\n var focusedItem = this.pagerElement.querySelector('.e-focus');\n var focusedorTarget = this.target ? this.target : focusedItem ? focusedItem : null;\n var prevFocused = false;\n var nextFocused = false;\n var firstFocused = false;\n var lastFocused = false;\n var numItemFocused = false;\n var npFocused = false;\n var ppFocused = false;\n if (focusedorTarget) {\n var classList_1 = focusedorTarget.classList;\n if (classList_1.contains('e-icons')) {\n switch (true) {\n case classList_1.contains('e-prev'):\n prevFocused = true;\n break;\n case classList_1.contains('e-next'):\n nextFocused = true;\n break;\n case classList_1.contains('e-first'):\n firstFocused = true;\n break;\n case classList_1.contains('e-last'):\n lastFocused = true;\n break;\n }\n }\n else if (classList_1.contains('e-numericitem')) {\n switch (true) {\n case classList_1.contains('e-np'):\n npFocused = true;\n break;\n case classList_1.contains('e-pp'):\n ppFocused = true;\n break;\n default:\n numItemFocused = classList_1.contains('e-numericitem');\n break;\n }\n }\n }\n isLastSet = lastFocused || (this.pagerModule.keyAction === 'End');\n numItems = this.pagerElement.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n var isPageAvailable = Array.from(numItems).some(function (item) { return parseInt(item.getAttribute('index'), 10) === pagerObj.currentPage; });\n //Setting pageNo to render based on key action or click action.\n if (firstFocused || this.pagerModule.keyAction === 'Home') {\n pageNo = 1 + i;\n }\n else if (lastFocused || this.pagerModule.keyAction === 'End') {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n }\n else if (nextFocused || this.pagerModule.keyAction === 'ArrowRight' || prevFocused || this.pagerModule.keyAction === 'ArrowLeft') {\n if (isPageAvailable) {\n pageNo = parseInt(numItems[0].getAttribute('index'), 10) + i;\n }\n else if (prevFocused || this.pagerModule.keyAction === 'ArrowLeft') {\n pageNo = parseInt(this.PP.getAttribute('index'), 10) + i;\n }\n else {\n pageNo = pagerObj.currentPage + i;\n }\n }\n else if (npFocused || ppFocused) {\n pageNo = pagerObj.currentPage + i;\n }\n else if (numItemFocused) {\n pageNo = (parseInt(numItems[0].getAttribute('index'), 10) + i);\n }\n else {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n }\n }\n else {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n }\n if (pageNo <= pagerObj.totalPages) {\n this.links[parseInt(i.toString(), 10)].classList.remove('e-hide');\n this.links[parseInt(i.toString(), 10)].style.display = '';\n this.links[parseInt(i.toString(), 10)].setAttribute('index', pageNo.toString());\n this.links[parseInt(i.toString(), 10)].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;\n if (pagerObj.currentPage !== pageNo) {\n this.links[parseInt(i.toString(), 10)].classList.add('e-pager-default');\n }\n else {\n this.links[parseInt(i.toString(), 10)].classList.remove('e-pager-default');\n }\n }\n else {\n this.links[parseInt(i.toString(), 10)].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;\n this.links[parseInt(i.toString(), 10)].style.display = 'none';\n }\n classList(this.links[parseInt(i.toString(), 10)], [], ['e-currentitem', 'e-active']);\n this.links[parseInt(i.toString(), 10)].removeAttribute('aria-current');\n }\n attributes(this.first, {\n 'index': '1',\n 'title': this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n });\n attributes(this.pagerElement.querySelector('.e-mfirst'), {\n 'index': '1',\n 'title': this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n });\n attributes(this.last, {\n 'index': pagerObj.totalPages.toString(),\n 'title': this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n });\n attributes(this.pagerElement.querySelector('.e-mlast'), {\n 'index': pagerObj.totalPages.toString(),\n 'title': this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n });\n attributes(this.prev, {\n 'index': (pagerObj.currentPage - 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n });\n attributes(this.pagerElement.querySelector('.e-mprev'), {\n 'index': (pagerObj.currentPage - 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n });\n attributes(this.next, {\n 'index': (pagerObj.currentPage + 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n });\n attributes(this.pagerElement.querySelector('.e-mnext'), {\n 'index': (pagerObj.currentPage + 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n });\n var ppIndex = (this.pagerModule.isPagerResized && numItems.length)\n ? isLastSet\n ? parseInt(numItems[0].getAttribute('index'), 10) - pagerObj.avgNumItems\n : parseInt(numItems[0].getAttribute('index'), 10) - numItems.length\n : parseInt(this.links[0].getAttribute('index'), 10) - pagerObj.pageCount;\n attributes(this.PP, {\n 'index': ((ppIndex < 1) ? '1' : ppIndex.toString()),\n 'title': this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('previousPagerTooltip')\n });\n var NPIndex = (this.pagerModule.isPagerResized && numItems.length)\n ? parseInt(numItems[numItems.length - 1].getAttribute('index'), 10)\n : parseInt(this.links[this.links.length - 1].getAttribute('index'), 10);\n attributes(this.NP, {\n 'index': (NPIndex + 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('nextPagerTooltip')\n });\n this.target = undefined;\n };\n NumericContainer.prototype.updateStyles = function () {\n var _this = this;\n this.updateFirstNPrevStyles();\n this.updatePrevPagerSetStyles();\n this.updateNextPagerSetStyles();\n this.updateNextNLastStyles();\n if (this.links.length) {\n var currentPageIndex = this.links.findIndex(function (link) { return link.getAttribute('index') === _this.pagerModule.currentPage.toString(); });\n var currentPage = (this.pagerModule.isPagerResized && currentPageIndex !== -1) ? currentPageIndex\n : ((this.pagerModule.currentPage - 1) % this.pagerModule.pageCount);\n classList(this.links[parseInt(currentPage.toString(), 10)], ['e-currentitem', 'e-active'], []);\n this.links[parseInt(currentPage.toString(), 10)].setAttribute('aria-current', 'page');\n }\n };\n NumericContainer.prototype.updateFirstNPrevStyles = function () {\n var firstPage = ['e-firstpage', 'e-pager-default'];\n var firstPageDisabled = ['e-firstpagedisabled', 'e-disable'];\n var prevPage = ['e-prevpage', 'e-pager-default'];\n var prevPageDisabled = ['e-prevpagedisabled', 'e-disable'];\n if (this.pagerModule.totalPages > 0 && this.pagerModule.currentPage > 1) {\n classList(this.prev, prevPage, prevPageDisabled);\n classList(this.first, firstPage, firstPageDisabled);\n classList(this.pagerElement.querySelector('.e-mfirst'), firstPage, firstPageDisabled);\n classList(this.pagerElement.querySelector('.e-mprev'), prevPage, prevPageDisabled);\n }\n else {\n classList(this.prev, prevPageDisabled, prevPage);\n classList(this.first, firstPageDisabled, firstPage);\n classList(this.pagerElement.querySelector('.e-mprev'), prevPageDisabled, prevPage);\n classList(this.pagerElement.querySelector('.e-mfirst'), firstPageDisabled, firstPage);\n }\n };\n NumericContainer.prototype.updatePrevPagerSetStyles = function () {\n if (this.pagerModule.currentPage > this.pagerModule.pageCount || (this.pagerModule.isPagerResized\n && this.links.findIndex(function (link) { return parseInt(link.getAttribute('index'), 10) === 1; }))) {\n classList(this.PP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n else {\n classList(this.PP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n };\n NumericContainer.prototype.updateNextPagerSetStyles = function () {\n var pagerObj = this.pagerModule;\n var firstPage = this.links[0].innerHTML.replace(pagerObj.customText, '');\n var numItems = this.pagerElement.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n if (!firstPage.length || !this.links.length || (parseInt(firstPage, 10) + pagerObj.pageCount > pagerObj.totalPages)\n || (pagerObj.isPagerResized && Array.from(numItems).some(function (item) { return parseInt(item.getAttribute('index'), 10) === pagerObj.totalPages; }))) {\n classList(this.NP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n else {\n classList(this.NP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n };\n NumericContainer.prototype.updateNextNLastStyles = function () {\n var lastPage = ['e-lastpage', 'e-pager-default'];\n var lastPageDisabled = ['e-lastpagedisabled', 'e-disable'];\n var nextPage = ['e-nextpage', 'e-pager-default'];\n var nextPageDisabled = ['e-nextpagedisabled', 'e-disable'];\n var pagerObj = this.pagerModule;\n if (pagerObj.currentPage === pagerObj.totalPages || pagerObj.totalRecordsCount === 0) {\n classList(this.last, lastPageDisabled, lastPage);\n classList(this.next, nextPageDisabled, nextPage);\n classList(this.pagerElement.querySelector('.e-mlast'), lastPageDisabled, lastPage);\n classList(this.pagerElement.querySelector('.e-mnext'), nextPageDisabled, nextPage);\n }\n else {\n classList(this.last, lastPage, lastPageDisabled);\n classList(this.next, nextPage, nextPageDisabled);\n classList(this.pagerElement.querySelector('.e-mlast'), lastPage, lastPageDisabled);\n classList(this.pagerElement.querySelector('.e-mnext'), nextPage, nextPageDisabled);\n }\n };\n return NumericContainer;\n}());\nexport { NumericContainer };\n","import { createElement, append } from '@syncfusion/ej2-base';\n/**\n * `PagerMessage` module is used to display pager information.\n */\nvar PagerMessage = /** @class */ (function () {\n /**\n * Constructor for externalMessage module\n *\n * @param {Pager} pagerModule - specifies the pager Module\n * @hidden\n */\n function PagerMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render pager message\n *\n * @returns {void}\n * @hidden\n */\n PagerMessage.prototype.render = function () {\n var div = createElement('div', { className: 'e-parentmsgbar' });\n this.pageNoMsgElem = createElement('span', { className: 'e-pagenomsg', styles: 'textalign:right' });\n this.pageCountMsgElem = createElement('span', { className: 'e-pagecountmsg', styles: 'textalign:right' });\n append([this.pageNoMsgElem, this.pageCountMsgElem], div);\n this.pagerModule.element.appendChild(div);\n this.refresh();\n };\n /**\n * Refreshes the pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.refresh = function () {\n var pagerObj = this.pagerModule;\n this.pageNoMsgElem.textContent = this.format(pagerObj.getLocalizedLabel('currentPageInfo'), [pagerObj.totalRecordsCount === 0 ? 0 :\n pagerObj.currentPage, pagerObj.totalPages || 0, pagerObj.totalRecordsCount || 0]) + ' ';\n this.pageCountMsgElem.textContent = this.format(pagerObj.getLocalizedLabel(pagerObj.totalRecordsCount <= 1 ? 'totalItemInfo' : 'totalItemsInfo'), [pagerObj.totalRecordsCount || 0, pagerObj.totalRecordsCount ? (pagerObj.pageSize * (pagerObj.currentPage - 1)) + 1 : 0,\n pagerObj.pageSize * pagerObj.currentPage > pagerObj.totalRecordsCount ? pagerObj.totalRecordsCount :\n pagerObj.pageSize * pagerObj.currentPage]);\n this.pageNoMsgElem.parentElement.classList.remove('e-hide');\n };\n /**\n * Hides the Pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.hideMessage = function () {\n if (this.pageNoMsgElem) {\n this.pageNoMsgElem.style.display = 'none';\n }\n if (this.pageCountMsgElem) {\n this.pageCountMsgElem.style.display = 'none';\n }\n };\n /**\n * Shows the Pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.showMessage = function () {\n if (!this.pageNoMsgElem) {\n this.render();\n }\n this.pageNoMsgElem.style.display = '';\n this.pageCountMsgElem.style.display = '';\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n PagerMessage.prototype.destroy = function () {\n //destroy\n };\n /**\n * To format the PagerMessage\n *\n * @function format\n * @returns {string}\n * @hidden\n */\n PagerMessage.prototype.format = function (str, args) {\n var regx;\n for (var i = 0; i < args.length; i++) {\n // eslint-disable-next-line security/detect-non-literal-regexp\n regx = new RegExp('\\\\{' + (i) + '\\\\}', 'gm');\n str = str.replace(regx, args[parseInt(i.toString(), 10)].toString());\n }\n return str;\n };\n return PagerMessage;\n}());\nexport { PagerMessage };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, L10n, Browser, addClass, removeClass, classList } from '@syncfusion/ej2-base';\nimport { createElement, compile as templateCompiler, EventHandler, extend } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Property, Event, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { NumericContainer } from './numeric-container';\nimport { PagerMessage } from './pager-message';\nimport { appendChildren, parentsUntil } from '../grid/base/util';\nimport * as events from '../grid/base/constant';\n/**\n * Represents the `Pager` component.\n * ```html\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar Pager = /** @class */ (function (_super) {\n __extends(Pager, _super);\n /**\n * Constructor for creating the component.\n *\n * @param {PagerModel} options - specifies the options\n * @param {string} element - specifies the element\n * @param {string} parent - specifies the pager parent\n * @hidden\n */\n function Pager(options, element, parent) {\n var _this = _super.call(this, options, element) || this;\n /** @hidden */\n _this.hasParent = false;\n _this.checkAll = true;\n _this.pageRefresh = 'pager-refresh';\n _this.firstPagerFocus = false;\n /** @hidden */\n _this.isCancel = false;\n _this.parent = parent;\n return _this;\n }\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} returns the modules declaration\n * @hidden\n */\n Pager.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableExternalMessage) {\n modules.push({\n member: 'externalMessage',\n args: [this],\n name: 'ExternalMessage'\n });\n }\n if (this.checkpagesizes()) {\n modules.push({\n member: 'pagerdropdown',\n args: [this],\n name: 'PagerDropDown'\n });\n }\n return modules;\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @hidden\n */\n Pager.prototype.preRender = function () {\n //preRender\n this.defaultConstants = {\n currentPageInfo: '{0} of {1} pages',\n totalItemsInfo: '({0} items)',\n totalItemInfo: '({0} item)',\n firstPageTooltip: 'Go to first page',\n lastPageTooltip: 'Go to last page',\n nextPageTooltip: 'Go to next page',\n previousPageTooltip: 'Go to previous page',\n nextPagerTooltip: 'Go to next pager items',\n previousPagerTooltip: 'Go to previous pager items',\n pagerDropDown: 'Items per page',\n pagerAllDropDown: 'Items',\n CurrentPageInfo: '{0} of {1} pages',\n TotalItemsInfo: '({0} items)',\n FirstPageTooltip: 'Go to first page',\n LastPageTooltip: 'Go to last page',\n NextPageTooltip: 'Go to next page',\n PreviousPageTooltip: 'Go to previous page',\n NextPagerTooltip: 'Go to next pager items',\n PreviousPagerTooltip: 'Go to previous pager items',\n PagerDropDown: 'Items per page',\n PagerAllDropDown: 'Items',\n All: 'All',\n Container: 'Pager Container',\n Information: 'Pager Information',\n ExternalMsg: 'Pager external message',\n Page: 'Page ',\n Of: ' of ',\n Pages: ' Pages'\n };\n this.containerModule = new NumericContainer(this);\n this.pagerMessageModule = new PagerMessage(this);\n };\n /**\n * To Initialize the component rendering\n *\n * @returns {void}\n */\n Pager.prototype.render = function () {\n this.element.setAttribute('data-role', 'pager');\n this.element.setAttribute('tabindex', '-1');\n this.initLocalization();\n if (this.cssClass) {\n if (this.cssClass.indexOf(' ') !== -1) {\n addClass([this.element], this.cssClass.split(' '));\n }\n else {\n addClass([this.element], [this.cssClass]);\n }\n }\n if (!this.hasParent) {\n this.element.setAttribute('tabindex', '0');\n }\n if (this.template) {\n if (this.isReactTemplate()) {\n this.on(this.pageRefresh, this.pagerTemplate, this);\n this.notify(this.pageRefresh, {});\n }\n else {\n this.pagerTemplate();\n }\n }\n else {\n this.updateRTL();\n this.totalRecordsCount = this.totalRecordsCount || 0;\n this.renderFirstPrevDivForDevice();\n this.containerModule.render();\n if (this.enablePagerMessage) {\n this.pagerMessageModule.render();\n }\n this.renderNextLastDivForDevice();\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n this.pagerdropdownModule.render();\n }\n this.addAriaLabel();\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.render();\n }\n this.refresh();\n this.trigger('created', { 'currentPage': this.currentPage, 'totalRecordsCount': this.totalRecordsCount });\n }\n this.wireEvents();\n this.addListener();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} returns the persist data\n * @hidden\n */\n Pager.prototype.getPersistData = function () {\n var keyEntity = ['currentPage', 'pageSize'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To destroy the Pager component.\n *\n * @method destroy\n * @returns {void}\n */\n Pager.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.isReactTemplate()) {\n this.off(this.pageRefresh, this.pagerTemplate);\n if (!this.hasParent) {\n this.destroyTemplate(['template']);\n }\n }\n this.removeListener();\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n this.containerModule.destroy();\n this.pagerMessageModule.destroy();\n if (!this.isReactTemplate()) {\n this.element.innerHTML = '';\n }\n };\n /**\n * Destroys the given template reference.\n *\n * @param {string[]} propertyNames - Defines the collection of template name.\n * @param {any} index - Defines the index\n */\n // eslint-disable-next-line\n Pager.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Pager.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {PagerModel} newProp - specifies the new property\n * @param {PagerModel} oldProp - specifies the old propety\n * @returns {void}\n * @hidden\n */\n Pager.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.isDestroyed) {\n return;\n }\n if ((newProp.pageSize === this.getLocalizedLabel('All')) && oldProp.pageSize === this.totalRecordsCount) {\n this.pageSize = this.totalRecordsCount;\n return;\n }\n if (newProp.pageCount !== oldProp.pageCount) {\n this.containerModule.refreshNumericLinks();\n this.containerModule.refresh();\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'currentPage':\n if (this.checkGoToPage(newProp.currentPage, oldProp.currentPage)) {\n this.currentPageChanged(newProp, oldProp);\n }\n break;\n case 'pageSize':\n case 'totalRecordsCount':\n case 'customText':\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n if (oldProp.pageSize !== newProp.pageSize) {\n this.currentPage = 1;\n }\n this.pagerdropdownModule.setDropDownValue('value', this.pageSize);\n }\n if (newProp.pageSize !== oldProp.pageSize) {\n this.pageSize = newProp.pageSize;\n this.currentPageChanged(newProp, oldProp);\n if (this.isCancel && this.hasParent) {\n this.parent\n .setProperties({ pageSettings: { pageSize: oldProp.pageSize } }, true);\n }\n }\n else {\n this.refresh();\n }\n break;\n case 'pageSizes':\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n this.pagerdropdownModule.destroy();\n this.pagerdropdownModule.render();\n }\n this.refresh();\n break;\n case 'template':\n this.templateFn = this.compile(this.template);\n this.refresh();\n break;\n case 'locale':\n this.initLocalization();\n this.refresh();\n break;\n case 'enableExternalMessage':\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.render();\n }\n break;\n case 'externalMessage':\n if (this.externalMessageModule) {\n this.externalMessageModule.refresh();\n }\n break;\n case 'enableRtl':\n this.updateRTL();\n break;\n case 'enablePagerMessage':\n if (this.enablePagerMessage) {\n this.pagerMessageModule.showMessage();\n }\n else {\n this.pagerMessageModule.hideMessage();\n }\n break;\n }\n }\n this.resizePager();\n };\n Pager.prototype.wireEvents = function () {\n if (!this.hasParent) {\n EventHandler.add(this.element, 'keydown', this.keyPressHandler, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n }\n EventHandler.add(this.element, 'focusin', this.onFocusIn, this);\n EventHandler.add(this.element, 'focusout', this.onFocusOut, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'resize', this.resizePager, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'load', this.resizePager, this);\n };\n Pager.prototype.unwireEvents = function () {\n if (!this.hasParent) {\n EventHandler.remove(this.element, 'keydown', this.keyPressHandler);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n }\n EventHandler.remove(this.element, 'focusin', this.onFocusIn);\n EventHandler.remove(this.element, 'focusout', this.onFocusOut);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'resize', this.resizePager);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'load', this.resizePager);\n };\n Pager.prototype.onFocusIn = function (e) {\n var focusedTabIndexElement = this.getFocusedTabindexElement();\n if (isNullOrUndefined(focusedTabIndexElement)) {\n var target = e.target;\n var dropDownPage = this.getDropDownPage();\n if (!this.hasParent) {\n this.element.tabIndex = -1;\n }\n if (target === this.element && !this.hasParent) {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n this.addFocus(focusablePagerElements[0], true);\n return;\n }\n if (target === this.element) {\n this.element.tabIndex = 0;\n return;\n }\n if (target !== dropDownPage && !target.classList.contains('e-disable')) {\n this.addFocus(target, true);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Pager.prototype.onFocusOut = function (e) {\n var focusedElement = this.getFocusedElement();\n var dropDownPage = this.getDropDownPage();\n if (!isNullOrUndefined(focusedElement)) {\n this.removeFocus(focusedElement, true);\n }\n if (this.pageSizes && dropDownPage && dropDownPage.classList.contains('e-input-focus')) {\n this.removeFocus(dropDownPage, true);\n }\n this.setTabIndexForFocusLastElement();\n if (!this.hasParent) {\n this.element.tabIndex = 0;\n }\n if (this.hasParent) {\n this.element.tabIndex = -1;\n }\n };\n Pager.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n if (focusablePagerElements.length > 0) {\n focusablePagerElements[0].focus();\n }\n }\n }\n };\n Pager.prototype.keyPressHandler = function (e) {\n var presskey = extend(e, { cancel: false });\n this.notify(events.keyPressed, presskey);\n if (presskey.cancel === true) {\n e.stopImmediatePropagation();\n }\n };\n Pager.prototype.addListener = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.hasParent) {\n this.on(events.keyPressed, this.onKeyPress, this);\n }\n };\n Pager.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.hasParent) {\n this.off(events.keyPressed, this.onKeyPress);\n }\n };\n Pager.prototype.onKeyPress = function (e) {\n if (!this.hasParent) {\n if (this.checkPagerHasFocus()) {\n this.changePagerFocus(e);\n }\n else {\n e.preventDefault();\n this.setPagerFocus();\n }\n }\n };\n /**\n * @returns {boolean} - Return the true value if pager has focus\n * @hidden */\n Pager.prototype.checkPagerHasFocus = function () {\n return this.getFocusedTabindexElement() ? true : false;\n };\n /**\n * @returns {void}\n * @hidden */\n Pager.prototype.setPagerContainerFocus = function () {\n this.element.focus();\n };\n /**\n * @returns {void}\n * @hidden */\n Pager.prototype.setPagerFocus = function () {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n if (focusablePagerElements.length > 0) {\n focusablePagerElements[0].focus();\n }\n };\n Pager.prototype.setPagerFocusForActiveElement = function () {\n var currentActivePage = this.getActiveElement();\n if (currentActivePage) {\n currentActivePage.focus();\n }\n };\n Pager.prototype.setTabIndexForFocusLastElement = function () {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n var dropDownPage = this.getDropDownPage();\n if (this.pageSizes && dropDownPage && !isNullOrUndefined(dropDownPage.offsetParent)) {\n dropDownPage.tabIndex = 0;\n }\n else if (focusablePagerElements.length > 0) {\n focusablePagerElements[focusablePagerElements.length - 1].tabIndex = 0;\n }\n };\n /**\n * @param {KeyboardEventArgs} e - Keyboard Event Args\n * @returns {void}\n * @hidden */\n Pager.prototype.changePagerFocus = function (e) {\n this.keyAction = e.key;\n if (e.shiftKey && e.keyCode === 9) {\n this.changeFocusByShiftTab(e);\n }\n else if (e.keyCode === 9) {\n this.changeFocusByTab(e);\n }\n else if (e.keyCode === 13 || e.keyCode === 32) {\n this.navigateToPageByEnterOrSpace(e);\n }\n else if (e.keyCode === 37 || e.keyCode === 39 || e.keyCode === 35 || e.keyCode === 36) {\n this.navigateToPageByKey(e);\n }\n this.keyAction = '';\n };\n Pager.prototype.getFocusedTabindexElement = function () {\n var focusedTabIndexElement;\n var tabindexElements = this.element.querySelectorAll('[tabindex]:not([tabindex=\"-1\"])');\n for (var i = 0; i < tabindexElements.length; i++) {\n var element = tabindexElements[parseInt(i.toString(), 10)];\n if (element && (element.classList.contains('e-focused') || element.classList.contains('e-input-focus'))) {\n focusedTabIndexElement = element;\n break;\n }\n }\n return focusedTabIndexElement;\n };\n Pager.prototype.changeFocusByTab = function (e) {\n var currentItemPagerFocus = this.getFocusedTabindexElement();\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n var dropDownPage = this.getDropDownPage();\n if (focusablePagerElements.length > 0) {\n if (this.pageSizes && dropDownPage && currentItemPagerFocus === focusablePagerElements[focusablePagerElements.length - 1]) {\n dropDownPage.tabIndex = 0;\n }\n else {\n for (var i = 0; i < focusablePagerElements.length; i++) {\n if (currentItemPagerFocus === focusablePagerElements[parseInt(i.toString(), 10)]) {\n var incrementNumber = i + 1;\n if (incrementNumber < focusablePagerElements.length) {\n e.preventDefault();\n focusablePagerElements[parseInt(incrementNumber.toString(), 10)].focus();\n }\n break;\n }\n }\n }\n }\n };\n Pager.prototype.changeFocusByShiftTab = function (e) {\n var currentItemPagerFocus = this.getFocusedTabindexElement();\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n var dropDownPage = this.getDropDownPage();\n if (this.pageSizes && dropDownPage && dropDownPage.classList.contains('e-input-focus')) {\n dropDownPage.tabIndex = -1;\n this.addFocus(focusablePagerElements[focusablePagerElements.length - 1], true);\n }\n else if (focusablePagerElements.length > 0) {\n for (var i = 0; i < focusablePagerElements.length; i++) {\n if (currentItemPagerFocus === focusablePagerElements[parseInt(i.toString(), 10)]) {\n var decrementNumber = i - 1;\n if (decrementNumber >= 0) {\n e.preventDefault();\n focusablePagerElements[parseInt(decrementNumber.toString(), 10)].focus();\n }\n else if (this.hasParent) {\n var rows = this.parent.getRows();\n var lastRow = rows[rows.length - 1];\n var lastCell = lastRow.lastChild;\n e.preventDefault();\n lastCell.focus();\n this.firstPagerFocus = true;\n }\n break;\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden */\n Pager.prototype.checkFirstPagerFocus = function () {\n if (this.firstPagerFocus) {\n this.firstPagerFocus = false;\n return true;\n }\n return false;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Pager.prototype.navigateToPageByEnterOrSpace = function (e) {\n var currentItemPagerFocus = this.getFocusedElement();\n if (currentItemPagerFocus) {\n this.goToPage(parseInt(currentItemPagerFocus.getAttribute('index'), 10));\n var currentActivePage = this.getActiveElement();\n var selectedClass = this.getClass(currentItemPagerFocus);\n var classElement = this.getElementByClass(selectedClass);\n if ((selectedClass === 'e-first' || selectedClass === 'e-prev' || selectedClass === 'e-next'\n || selectedClass === 'e-last' || selectedClass === 'e-pp' || selectedClass === 'e-np')\n && classElement && !classElement.classList.contains('e-disable')) {\n classElement.focus();\n }\n else if (this.checkFocusInAdaptiveMode(currentItemPagerFocus)) {\n this.changeFocusInAdaptiveMode(currentItemPagerFocus);\n }\n else {\n if (currentActivePage) {\n currentActivePage.focus();\n }\n }\n }\n };\n Pager.prototype.navigateToPageByKey = function (e) {\n var actionClass = e.keyCode === 37 ? '.e-prev' : e.keyCode === 39 ? '.e-next'\n : e.keyCode === 35 ? '.e-last' : e.keyCode === 36 ? '.e-first' : '';\n var pagingItem = this.element.querySelector(actionClass);\n var currentItemPagerFocus = this.getFocusedElement();\n if (!isNullOrUndefined(pagingItem) && pagingItem.hasAttribute('index')\n && !isNaN(parseInt(pagingItem.getAttribute('index'), 10))) {\n this.goToPage(parseInt(pagingItem.getAttribute('index'), 10));\n var currentActivePage = this.getActiveElement();\n if (this.checkFocusInAdaptiveMode(currentItemPagerFocus)) {\n this.changeFocusInAdaptiveMode(currentItemPagerFocus);\n }\n else {\n if (currentActivePage) {\n currentActivePage.focus();\n }\n }\n }\n };\n Pager.prototype.checkFocusInAdaptiveMode = function (element) {\n var selectedClass = this.getClass(element);\n return selectedClass === 'e-mfirst' || selectedClass === 'e-mprev' || selectedClass === 'e-mnext'\n || selectedClass === 'e-mlast' ? true : false;\n };\n Pager.prototype.changeFocusInAdaptiveMode = function (element) {\n var selectedClass = this.getClass(element);\n var classElement = this.getElementByClass(selectedClass);\n if (classElement && classElement.classList.contains('e-disable')) {\n if (selectedClass === 'e-mnext' || selectedClass === 'e-mlast') {\n var mPrev = this.element.querySelector('.e-mprev');\n mPrev.focus();\n }\n else {\n this.setPagerFocus();\n }\n }\n };\n Pager.prototype.removeTabindexLastElements = function () {\n var tabIndexElements = this.element.querySelectorAll('[tabindex]:not([tabindex=\"-1\"])');\n if (tabIndexElements.length > 1) {\n for (var i = 1; i < tabIndexElements.length; i++) {\n var element = tabIndexElements[parseInt(i.toString(), 10)];\n if (element) {\n element.tabIndex = -1;\n }\n }\n }\n };\n Pager.prototype.getActiveElement = function () {\n return this.element.querySelector('.e-active');\n };\n /**\n * @returns {Element} - Returns DropDown Page\n * @hidden */\n Pager.prototype.getDropDownPage = function () {\n var dropDownPageHolder = this.element.querySelector('.e-pagerdropdown');\n var dropDownPage;\n if (dropDownPageHolder) {\n dropDownPage = dropDownPageHolder.children[0];\n }\n return dropDownPage;\n };\n Pager.prototype.getFocusedElement = function () {\n return this.element.querySelector('.e-focused');\n };\n Pager.prototype.getClass = function (element) {\n var currentClass;\n var classList = ['e-mfirst', 'e-mprev', 'e-first', 'e-prev', 'e-pp',\n 'e-np', 'e-next', 'e-last', 'e-mnext', 'e-mlast'];\n for (var i = 0; i < classList.length; i++) {\n if (element && element.classList.contains(classList[parseInt(i.toString(), 10)])) {\n currentClass = classList[parseInt(i.toString(), 10)];\n return currentClass;\n }\n }\n return currentClass;\n };\n Pager.prototype.getElementByClass = function (className) {\n return this.element.querySelector('.' + className);\n };\n /**\n * @param {Element} element - Pager element\n * @param {Element[]} previousElements - Iterating pager element\n * @returns {Element[]} - Returns focusable pager element\n * @hidden */\n Pager.prototype.getFocusablePagerElements = function (element, previousElements) {\n var target = element;\n var targetChildrens = target.children;\n var pagerElements = previousElements;\n for (var i = 0; i < targetChildrens.length; i++) {\n var element_1 = targetChildrens[parseInt(i.toString(), 10)];\n if (element_1.children.length > 0 && !element_1.classList.contains('e-pagesizes')) {\n pagerElements = this.getFocusablePagerElements(element_1, pagerElements);\n }\n else {\n var tabindexElement = targetChildrens[parseInt(i.toString(), 10)];\n if (tabindexElement.hasAttribute('tabindex') && !element_1.classList.contains('e-disable')\n && element_1.style.display !== 'none'\n && !isNullOrUndefined(element_1.offsetParent)) {\n pagerElements.push(tabindexElement);\n }\n }\n }\n return pagerElements;\n };\n Pager.prototype.addFocus = function (element, addFocusClass) {\n if (!isNullOrUndefined(element)) {\n if (addFocusClass) {\n addClass([element], ['e-focused', 'e-focus']);\n }\n element.tabIndex = 0;\n }\n };\n Pager.prototype.removeFocus = function (element, removeFocusClass) {\n if (removeFocusClass) {\n removeClass([element], ['e-focused', 'e-focus']);\n }\n element.tabIndex = -1;\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key - specifies the key\n * @returns {string} returns the localized label\n */\n Pager.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n /**\n * Navigate to target page by given number.\n *\n * @param {number} pageNo - Defines page number.\n * @returns {void}\n */\n Pager.prototype.goToPage = function (pageNo) {\n if (this.checkGoToPage(pageNo)) {\n this.currentPage = pageNo;\n this.dataBind();\n }\n };\n /**\n * @param {number} pageSize - specifies the pagesize\n * @returns {void}\n * @hidden\n */\n Pager.prototype.setPageSize = function (pageSize) {\n this.pageSize = pageSize;\n this.dataBind();\n };\n Pager.prototype.checkpagesizes = function () {\n if (this.pageSizes === true || this.pageSizes.length) {\n return true;\n }\n return false;\n };\n Pager.prototype.checkGoToPage = function (newPageNo, oldPageNo) {\n if (newPageNo !== this.currentPage) {\n this.previousPageNo = this.currentPage;\n }\n if (!isNullOrUndefined(oldPageNo)) {\n this.previousPageNo = oldPageNo;\n }\n if (this.previousPageNo !== newPageNo && (newPageNo >= 1 && newPageNo <= this.totalPages)) {\n return true;\n }\n return false;\n };\n Pager.prototype.currentPageChanged = function (newProp, oldProp) {\n if (this.enableQueryString) {\n this.updateQueryString(this.currentPage);\n }\n if (newProp.currentPage !== oldProp.currentPage || newProp.pageSize !== oldProp.pageSize) {\n var args = {\n currentPage: this.currentPage,\n newProp: newProp, oldProp: oldProp, cancel: false\n };\n this.trigger('click', args);\n if (!args.cancel) {\n this.isCancel = false;\n this.refresh();\n }\n else {\n this.isCancel = true;\n if (oldProp && oldProp.pageSize) {\n this.setProperties({ pageSize: oldProp.pageSize }, true);\n if (this.pagerdropdownModule) {\n this.pagerdropdownModule.setDropDownValue('value', oldProp.pageSize);\n this.pagerdropdownModule['dropDownListObject'].text = oldProp.pageSize + '';\n }\n }\n }\n }\n };\n Pager.prototype.pagerTemplate = function () {\n if (this.isReactTemplate() && this.hasParent) {\n return;\n }\n var result;\n this.element.classList.add('e-pagertemplate');\n this.compile(this.template);\n var data = {\n currentPage: this.currentPage, pageSize: this.pageSize, pageCount: this.pageCount,\n totalRecordsCount: this.totalRecordsCount, totalPages: this.totalPages\n };\n var tempId = this.element.parentElement.id + '_template';\n if (this.isReactTemplate() && !this.isVue) {\n this.getPagerTemplate()(data, this, 'template', tempId, null, null, this.element);\n this.renderReactTemplates();\n }\n else {\n result = this.isVue ? this.getPagerTemplate()(data, this, 'template') : this.getPagerTemplate()(data);\n appendChildren(this.element, result);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Pager.prototype.updateTotalPages = function () {\n this.totalPages = this.isAllPage ? 1 : (this.totalRecordsCount % this.pageSize === 0) ? (this.totalRecordsCount / this.pageSize) :\n (parseInt((this.totalRecordsCount / this.pageSize).toString(), 10) + 1);\n };\n /**\n * @returns {Function} returns the function\n * @hidden\n */\n Pager.prototype.getPagerTemplate = function () {\n return this.templateFn;\n };\n /**\n * @param {string | Function} template - specifies the template\n * @returns {Function} returns the function\n * @hidden\n */\n Pager.prototype.compile = function (template) {\n if (template) {\n try {\n if (typeof template === 'function') {\n this.templateFn = templateCompiler(template);\n }\n else {\n if (document.querySelectorAll(template).length) {\n this.templateFn = templateCompiler(document.querySelector(template).innerHTML.trim());\n }\n }\n }\n catch (e) {\n this.templateFn = templateCompiler(template);\n }\n }\n return undefined;\n };\n /**\n * Refreshes page count, pager information and external message.\n *\n * @returns {void}\n */\n Pager.prototype.refresh = function () {\n if (this.template) {\n if (this.isReactTemplate()) {\n this.updateTotalPages();\n this.notify(this.pageRefresh, {});\n }\n else {\n this.element.innerHTML = '';\n this.updateTotalPages();\n this.pagerTemplate();\n }\n }\n else {\n this.updateRTL();\n var focusedTabIndexElement = this.getFocusedTabindexElement();\n this.containerModule.refresh();\n this.removeTabindexLastElements();\n if (focusedTabIndexElement && focusedTabIndexElement.classList.contains('e-disable')) {\n if (this.checkFocusInAdaptiveMode(focusedTabIndexElement)) {\n this.changeFocusInAdaptiveMode(focusedTabIndexElement);\n }\n else {\n this.setPagerFocusForActiveElement();\n }\n }\n if (this.enablePagerMessage) {\n this.pagerMessageModule.refresh();\n }\n if (this.pagerdropdownModule) {\n this.pagerdropdownModule.refresh();\n }\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.refresh();\n }\n this.setTabIndexForFocusLastElement();\n this.resizePager();\n }\n };\n Pager.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Pager.prototype.initLocalization = function () {\n this.localeObj = new L10n(this.getModuleName(), this.defaultConstants, this.locale);\n };\n Pager.prototype.updateQueryString = function (value) {\n var updatedUrl = this.getUpdatedURL(window.location.href, 'page', value.toString());\n window.history.pushState({ path: updatedUrl }, '', updatedUrl);\n };\n Pager.prototype.getUpdatedURL = function (uri, key, value) {\n // eslint-disable-next-line security/detect-non-literal-regexp\n var regx = new RegExp('([?|&])' + key + '=.*?(&|#|$)', 'i');\n if (uri.match(regx)) {\n return uri.replace(regx, '$1' + key + '=' + value + '$2');\n }\n else {\n var hash = '';\n if (uri.indexOf('#') !== -1) {\n hash = uri.replace(/.*#/, '#');\n uri = uri.replace(/#.*/, '');\n }\n return uri + (uri.indexOf('?') !== -1 ? '&' : '?') + key + '=' + value + hash;\n }\n };\n Pager.prototype.renderFirstPrevDivForDevice = function () {\n this.element.appendChild(createElement('div', {\n className: 'e-mfirst e-icons e-icon-first',\n attrs: { title: this.getLocalizedLabel('firstPageTooltip'), tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mprev e-icons e-icon-prev',\n attrs: { title: this.getLocalizedLabel('previousPageTooltip'), tabindex: '-1' }\n }));\n };\n Pager.prototype.renderNextLastDivForDevice = function () {\n this.element.appendChild(createElement('div', {\n className: 'e-mnext e-icons e-icon-next',\n attrs: { title: this.getLocalizedLabel('nextPageTooltip'), tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mlast e-icons e-icon-last',\n attrs: { title: this.getLocalizedLabel('lastPageTooltip'), tabindex: '-1' }\n }));\n };\n Pager.prototype.addAriaLabel = function () {\n var classList = ['.e-mfirst', '.e-mprev', '.e-mnext', '.e-mlast'];\n if (!Browser.isDevice) {\n for (var i = 0; i < classList.length; i++) {\n var element = this.element.querySelector(classList[parseInt(i.toString(), 10)]);\n element.setAttribute('aria-label', element.getAttribute('title'));\n }\n }\n };\n Pager.prototype.isReactTemplate = function () {\n return (this.isReact || this.isVue) && this.template && typeof (this.template) !== 'string';\n };\n /**\n * Loop through all the inner elements of pager to calculate the required width for pager child elements.\n *\n * @returns {number} returns the actual width occupied by pager elements.\n */\n Pager.prototype.calculateActualWidth = function () {\n var pagerElements = this.element.querySelectorAll(\n /* tslint:disable-next-line:max-line-length */\n '.e-mfirst, .e-mprev, .e-icon-first, .e-icon-prev, .e-pp:not(.e-disable), .e-numericitem:not(.e-hide), .e-numericitem.e-active.e-hide, .e-np:not(.e-disable), .e-icon-next, .e-icon-last, .e-parentmsgbar, .e-mnext, .e-mlast, .e-pagerdropdown, .e-pagerconstant');\n var actualWidth = 0;\n for (var i = 0; i < pagerElements.length; i++) {\n if (getComputedStyle(pagerElements[parseInt(i.toString(), 10)]).display !== 'none') {\n actualWidth += pagerElements[parseInt(i.toString(), 10)].offsetWidth\n + parseFloat(getComputedStyle(pagerElements[parseInt(i.toString(), 10)]).marginLeft)\n + parseFloat(getComputedStyle(pagerElements[parseInt(i.toString(), 10)]).marginRight);\n }\n }\n var pagerContainer = this.element.querySelector('.e-pagercontainer');\n actualWidth += parseFloat(getComputedStyle(pagerContainer).marginLeft)\n + parseFloat(getComputedStyle(pagerContainer).marginRight);\n return actualWidth;\n };\n /**\n * Resize pager component by hiding pager component's numeric items based on total width available for pager.\n *\n * @returns {void}\n */\n Pager.prototype.resizePager = function () {\n var _this = this;\n var isStyleApplied = this.element.classList.contains('e-pager') ? getComputedStyle(this.element).getPropertyValue('border-style').includes('solid') : null;\n if (!(this.template) && isStyleApplied) {\n var pagerContainer = this.element.querySelector('.e-pagercontainer');\n var actualWidth = this.calculateActualWidth();\n var pagerWidth = this.element.clientWidth\n - parseFloat(getComputedStyle(this.element).paddingLeft)\n - parseFloat(getComputedStyle(this.element).paddingRight)\n - parseFloat(getComputedStyle(this.element).marginLeft)\n - parseFloat(getComputedStyle(this.element).marginRight);\n var numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n var hiddenNumItems = pagerContainer.querySelectorAll('.e-numericitem.e-hide:not([style*=\"display: none\"])');\n var hideFrom = numItems.length;\n var showFrom = 1;\n var bufferWidth = (!isNullOrUndefined(parentsUntil(this.element, 'e-bigger'))) ? 10 : 5;\n var NP = pagerContainer.querySelector('.e-np');\n var PP = pagerContainer.querySelector('.e-pp');\n var detailItems = this.element.querySelectorAll('.e-parentmsgbar:not(.e-hide):not([style*=\"display: none\"]), .e-pagesizes:not(.e-hide):not([style*=\"display: none\"])');\n var totDetailWidth_1 = 0;\n if (detailItems.length) {\n detailItems.forEach(function (item) {\n totDetailWidth_1 += item.offsetWidth;\n });\n this.averageDetailWidth = totDetailWidth_1 / detailItems.length;\n }\n var totalWidth = 0;\n /**\n * Loop to calculate average width of numeric item.\n */\n for (var i = 0; i < numItems.length; i++) {\n totalWidth += numItems[parseInt(i.toString(), 10)].offsetWidth\n + parseFloat(getComputedStyle(numItems[parseInt(i.toString(), 10)]).marginLeft)\n + parseFloat(getComputedStyle(numItems[parseInt(i.toString(), 10)]).marginRight);\n }\n var numericItemWidth = totalWidth / numItems.length;\n /**\n * Condition to hide numeric items when calculated actual width exceeds available pager space.\n */\n if (pagerWidth > 0 && (actualWidth >= (pagerWidth - (numericItemWidth ? numericItemWidth : 0)))) {\n this.isPagerResized = true;\n if (this.currentPage !== this.totalPages) {\n classList(NP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n actualWidth = this.calculateActualWidth();\n var diff = Math.abs((actualWidth) - pagerWidth);\n // To calculate number of numeric items need to be hidden.\n var numToHide = Math.ceil(diff / (numericItemWidth));\n numToHide = (numToHide === 0) ? 1 : (numToHide > numItems.length) ? (numItems.length - 1) : numToHide;\n for (var i = 1; i <= numToHide; i++) {\n var hideIndex = hideFrom - parseInt(i.toString(), 10);\n numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n if (this.currentPage !== 1 && ((parseInt(numItems[Math.abs(hideIndex)].getAttribute('index'), 10) === this.currentPage)\n || parseInt(numItems[numItems.length - 1].getAttribute('index'), 10) === this.currentPage)) {\n hideIndex = 0;\n classList(PP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n if (numItems[Math.abs(hideIndex)] && !(numItems[Math.abs(hideIndex)].classList.contains('e-currentitem'))) {\n numItems[Math.abs(hideIndex)].classList.add('e-hide');\n }\n }\n numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n // To hide Pager message elements when no more numeric items available to hide.\n if (numItems.length <= 1 && detailItems.length && window.innerWidth >= 768) {\n var pagerDetailItemsWidth = this.calculateActualWidth();\n if ((pagerDetailItemsWidth) > (pagerWidth - bufferWidth)) {\n var detailtoHide = Math.floor((pagerWidth - (pagerDetailItemsWidth - totDetailWidth_1))\n / this.averageDetailWidth);\n detailtoHide = detailItems.length - detailtoHide;\n for (var i = 0; i < (detailtoHide > detailItems.length ? detailItems.length : detailtoHide); i++) {\n detailItems[parseInt(i.toString(), 10)].classList.add('e-hide');\n }\n }\n }\n }\n /**\n * Condition to show numeric items when space availble in pager at dom.\n */\n else if (actualWidth < (pagerWidth) && hiddenNumItems.length) {\n var diff = Math.abs(pagerWidth - (actualWidth));\n var hiddenDetailItems = this.element.querySelectorAll('.e-parentmsgbar.e-hide, .e-pagesizes.e-hide');\n // To show Pager message elements.\n if (hiddenDetailItems.length && (diff > (this.averageDetailWidth + (this.averageDetailWidth / 4)))) {\n hiddenDetailItems[(hiddenDetailItems.length - 1)].classList.remove('e-hide');\n }\n if ((diff > (numericItemWidth * 2) && !hiddenDetailItems.length && window.innerWidth >= 768)) {\n // To calculate number of numeric items need to be shown.\n var numToShow = Math.floor((diff) / (numericItemWidth + bufferWidth));\n numToShow = (numToShow > hiddenNumItems.length) ? hiddenNumItems.length : (numToShow - 1);\n //Seggregating hidden num items as less index and greater index values than current page value.\n var lesserIndexItems = Array.from(hiddenNumItems).filter(function (item) { return parseInt(item.getAttribute('index'), 10) < _this.currentPage; }).sort(function (a, b) { return parseInt(b.getAttribute('index'), 10) - parseInt(a.getAttribute('index'), 10); });\n var greaterIndexItems = Array.from(hiddenNumItems).filter(function (item) { return parseInt(item.getAttribute('index'), 10) > _this.currentPage; });\n var showItems = (lesserIndexItems.length && lesserIndexItems)\n || (greaterIndexItems.length && greaterIndexItems);\n for (var i = 1; i <= numToShow; i++) {\n var showItem = showItems && showItems[Math.abs(showFrom - i)];\n if (showItem) {\n showItem.classList.remove('e-hide');\n if (showItem === showItems[showItems.length - 1]) {\n showItems = null;\n }\n }\n }\n }\n }\n numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n if (numItems.length) {\n if (parseInt(numItems[numItems.length - 1].getAttribute('index'), 10) === this.totalPages) {\n classList(NP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n if (parseInt(numItems[0].getAttribute('index'), 10) === 1) {\n classList(PP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n var isLastSet = Array.from(numItems).some(function (item) { return parseInt(item.getAttribute('index'), 10) === _this.totalPages; });\n var ppIndex = (parseInt(numItems[0].getAttribute('index'), 10) - (isLastSet ? this.avgNumItems : numItems.length));\n PP.setAttribute('index', (ppIndex < 1) ? '1' : ppIndex.toString());\n NP.setAttribute('index', (parseInt(numItems[numItems.length - 1].getAttribute('index'), 10) + 1).toString());\n this.avgNumItems = isLastSet ? this.avgNumItems : numItems.length;\n }\n /**\n * Condition to add adaptive class name and set pagermessage content with \"/\" when media query css has been applied.\n */\n if (((this.element.offsetWidth < 769) && window.getComputedStyle(this.element.querySelector('.e-mfirst')).getPropertyValue('display') !== 'none') && this.pageSizes) {\n this.element.querySelector('.e-pagesizes').classList.remove('e-hide');\n this.element.querySelector('.e-parentmsgbar').classList.remove('e-hide');\n this.element.classList.add('e-adaptive');\n this.element.querySelector('.e-pagenomsg').innerHTML = this.element.offsetWidth < 481 ? (this.currentPage + ' / ' + this.totalPages) : this.pagerMessageModule.format(this.getLocalizedLabel('currentPageInfo'), [this.totalRecordsCount === 0 ? 0 :\n this.currentPage, this.totalPages || 0, this.totalRecordsCount || 0]) + ' ';\n }\n else {\n this.element.classList.remove('e-adaptive');\n this.element.querySelector('.e-pagenomsg').innerHTML = this.pagerMessageModule.format(this.getLocalizedLabel('currentPageInfo'), [this.totalRecordsCount === 0 ? 0 :\n this.currentPage, this.totalPages || 0, this.totalRecordsCount || 0]) + ' ';\n }\n }\n };\n __decorate([\n Property(false)\n ], Pager.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], Pager.prototype, \"enableExternalMessage\", void 0);\n __decorate([\n Property(true)\n ], Pager.prototype, \"enablePagerMessage\", void 0);\n __decorate([\n Property(12)\n ], Pager.prototype, \"pageSize\", void 0);\n __decorate([\n Property(10)\n ], Pager.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], Pager.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"externalMessage\", void 0);\n __decorate([\n Property(false)\n ], Pager.prototype, \"pageSizes\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], Pager.prototype, \"customText\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"click\", void 0);\n __decorate([\n Property('')\n ], Pager.prototype, \"cssClass\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"dropDownChanged\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"created\", void 0);\n Pager = __decorate([\n NotifyPropertyChanges\n ], Pager);\n return Pager;\n}(Component));\nexport { Pager };\n","import { createElement, remove } from '@syncfusion/ej2-base';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\n/**\n * `PagerDropDown` module handles selected pageSize from DropDownList.\n */\nvar PagerDropDown = /** @class */ (function () {\n /**\n * Constructor for pager module\n *\n * @param {Pager} pagerModule - specifies the pagermodule\n * @hidden\n */\n function PagerDropDown(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n * @hidden\n */\n PagerDropDown.prototype.getModuleName = function () {\n return 'pagerdropdown';\n };\n /**\n * The function is used to render pager dropdown\n *\n * @returns {void}\n * @hidden\n */\n PagerDropDown.prototype.render = function () {\n var pagerObj = this.pagerModule;\n this.pagerDropDownDiv = createElement('div', { className: 'e-pagesizes' });\n var dropDownDiv = createElement('div', { className: 'e-pagerdropdown' });\n var defaultTextDiv = createElement('div', { className: 'e-pagerconstant' });\n var input = createElement('input', { attrs: { type: 'text', tabindex: '-1' } });\n this.pagerCons = createElement('span', {\n className: 'e-constant', innerHTML: this.pagerModule.getLocalizedLabel('pagerDropDown')\n });\n dropDownDiv.appendChild(input);\n defaultTextDiv.appendChild(this.pagerCons);\n this.pagerDropDownDiv.appendChild(dropDownDiv);\n this.pagerDropDownDiv.appendChild(defaultTextDiv);\n this.pagerModule.element.appendChild(this.pagerDropDownDiv);\n var pageSizesModule = this.pagerModule.pageSizes;\n var pageSizesArray = (pageSizesModule.length ? this.convertValue(pageSizesModule) :\n [this.pagerModule.getLocalizedLabel('All'), '5', '10', '12', '20']);\n var defaultValue = this.pagerModule.pageSize;\n this.dropDownListObject = new DropDownList({\n dataSource: pageSizesArray,\n value: defaultValue.toString(),\n change: this.onChange.bind(this),\n placeholder: this.pagerModule.getLocalizedLabel('pagerDropDown'),\n cssClass: this.pagerModule.cssClass ? 'e-alldrop' + ' ' + this.pagerModule.cssClass : 'e-alldrop'\n });\n this.dropDownListObject.appendTo(input);\n if (pageSizesModule.length) {\n this.dropDownListObject.element.value = this.pagerModule.pageSize.toString();\n }\n pagerObj.pageSize = defaultValue;\n pagerObj.dataBind();\n pagerObj.trigger('dropDownChanged', { pageSize: defaultValue });\n this.addEventListener();\n };\n /**\n * For internal use only - Get the pagesize.\n *\n * @param {ChangeEventArgs} e - specifies the changeeventargs\n * @returns {void}\n * @private\n * @hidden\n */\n PagerDropDown.prototype.onChange = function (e) {\n if (this.dropDownListObject.value === this.pagerModule.getLocalizedLabel('All')) {\n this.pagerModule.pageSize = this.pagerModule.totalRecordsCount;\n this.pagerModule.isAllPage = true;\n this.refresh();\n e.value = this.pagerModule.pageSize;\n if (document.getElementsByClassName('e-popup-open e-alldrop').length) {\n document.getElementsByClassName('e-popup-open e-alldrop')[0].style.display = 'none';\n }\n }\n else {\n this.pagerModule.pageSize = parseInt(this.dropDownListObject.value, 10);\n this.pagerModule.isAllPage = false;\n if (this.pagerCons.innerHTML !== this.pagerModule.getLocalizedLabel('pagerDropDown')) {\n this.refresh();\n }\n }\n this.pagerModule.dataBind();\n if (!this.pagerModule.isCancel) {\n this.pagerModule.trigger('dropDownChanged', {\n pageSize: this.pagerModule.isAllPage ||\n (this.pagerModule.isAllPage === undefined && this.dropDownListObject.value === this.pagerModule.getLocalizedLabel('All')) ?\n this.pagerModule.totalRecordsCount : parseInt(this.dropDownListObject.value, 10)\n });\n }\n };\n PagerDropDown.prototype.refresh = function () {\n if (this.pagerCons) {\n if (this.isPageSizeAll(this.pagerModule.pageSize)) {\n this.pagerCons.innerHTML = this.pagerModule.getLocalizedLabel('pagerAllDropDown');\n this.pagerCons.parentElement.classList.add('e-page-all');\n }\n else {\n this.pagerCons.innerHTML = this.pagerModule.getLocalizedLabel('pagerDropDown');\n this.pagerCons.parentElement.classList.remove('e-page-all');\n }\n this.pagerDropDownDiv.classList.remove('e-hide');\n }\n };\n PagerDropDown.prototype.beforeValueChange = function (prop) {\n if (typeof prop.newProp.value === 'number') {\n var val = prop.newProp.value.toString();\n prop.newProp.value = val;\n }\n };\n PagerDropDown.prototype.convertValue = function (pageSizeValue) {\n var item = pageSizeValue;\n for (var i = 0; i < item.length; i++) {\n item[parseInt(i.toString(), 10)] = parseInt(item[parseInt(i.toString(), 10)], 10) ?\n item[parseInt(i.toString(), 10)].toString() : (this.pagerModule.getLocalizedLabel(item[parseInt(i.toString(), 10)]) !== '')\n ? this.pagerModule.getLocalizedLabel(item[parseInt(i.toString(), 10)]) : item[parseInt(i.toString(), 10)];\n }\n return item;\n };\n PagerDropDown.prototype.isPageSizeAll = function (value) {\n var pageSizeNum = typeof (value) === 'string' && value !== this.pagerModule.getLocalizedLabel('All') ?\n parseInt(value, 10) : value;\n if (pageSizeNum === this.pagerModule.totalRecordsCount || value === this.pagerModule.getLocalizedLabel('All')) {\n return true;\n }\n else {\n return false;\n }\n };\n PagerDropDown.prototype.setDropDownValue = function (prop, value) {\n if (this.dropDownListObject) {\n var isbeforeAll = this.pagerModule.isAllPage;\n this.pagerModule.isAllPage = this.isPageSizeAll(value);\n this.pagerModule.checkAll = (isbeforeAll && this.pagerModule.isAllPage) ? true : false;\n this.dropDownListObject[\"\" + prop] = this.pagerModule.isAllPage ? this.pagerModule.getLocalizedLabel('All') : value;\n }\n };\n PagerDropDown.prototype.addEventListener = function () {\n this.dropDownListObject.on('beforeValueChange', this.beforeValueChange, this);\n };\n PagerDropDown.prototype.removeEventListener = function () {\n this.dropDownListObject.off('beforeValueChange', this.beforeValueChange);\n };\n /**\n * To destroy the Pagerdropdown\n *\n * @param {string} args - specifies the arguments\n * @param {string} args.requestType - specfies the request type\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n PagerDropDown.prototype.destroy = function (args) {\n if (this.dropDownListObject && !this.dropDownListObject.isDestroyed) {\n this.removeEventListener();\n this.dropDownListObject.destroy();\n remove(this.pagerDropDownDiv);\n }\n };\n return PagerDropDown;\n}());\nexport { PagerDropDown };\n","import { createElement, remove, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * `ExternalMessage` module is used to display user provided message.\n */\nvar ExternalMessage = /** @class */ (function () {\n /**\n * Constructor for externalMessage module\n *\n * @param {Pager} pagerModule - specifies the pagermodule\n * @hidden\n */\n function ExternalMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n ExternalMessage.prototype.getModuleName = function () {\n return 'externalMessage';\n };\n /**\n * The function is used to render pager externalMessage\n *\n * @returns {void}\n * @hidden\n */\n ExternalMessage.prototype.render = function () {\n this.element = createElement('div', { className: 'e-pagerexternalmsg', attrs: { 'aria-label': this.pagerModule.getLocalizedLabel('ExternalMsg') } });\n this.pagerModule.element.appendChild(this.element);\n this.refresh();\n };\n /**\n * Refreshes the external message of Pager.\n *\n * @returns {void}\n */\n ExternalMessage.prototype.refresh = function () {\n if (this.pagerModule.externalMessage && this.pagerModule.externalMessage.toString().length) {\n this.showMessage();\n this.element.innerHTML = this.pagerModule.externalMessage;\n }\n else {\n this.hideMessage();\n }\n };\n /**\n * Hides the external message of Pager.\n *\n * @returns {void}\n */\n ExternalMessage.prototype.hideMessage = function () {\n if (!isNullOrUndefined(this.element)) {\n this.element.style.display = 'none';\n }\n };\n /**\n * Shows the external message of the Pager.\n *\n * @returns {void}s\n */\n ExternalMessage.prototype.showMessage = function () {\n this.element.style.display = '';\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n ExternalMessage.prototype.destroy = function () {\n if (this.element && this.element.parentElement) {\n remove(this.element);\n }\n };\n return ExternalMessage;\n}());\nexport { ExternalMessage };\n","import { extend } from '@syncfusion/ej2-base';\nimport { remove, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Pager } from '../../pager/pager';\nimport { PagerDropDown } from '../../pager/pager-dropdown';\nimport { ExternalMessage } from '../../pager/external-message';\nimport { extend as gridExtend, getActualProperties, isActionPrevent, addRemoveEventListener, appendChildren } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * The `Page` module is used to render pager and handle paging action.\n */\nvar Page = /** @class */ (function () {\n /**\n * Constructor for the Grid paging module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {PageSettingsModel} pageSettings - specifies the PageSettingsModel\n * @hidden\n */\n function Page(parent, pageSettings) {\n this.isInitialRender = true;\n /** @hidden */\n this.isCancel = false;\n Pager.Inject(ExternalMessage, PagerDropDown);\n this.parent = parent;\n this.pageSettings = pageSettings;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Page.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * The function used to render pager from grid pageSettings\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.render = function () {\n var gObj = this.parent;\n this.pagerDestroy();\n if (!isNullOrUndefined(this.parent.pagerTemplate)) {\n this.pageSettings.template = this.parent.pagerTemplate;\n this.parent.pageTemplateChange = true;\n }\n this.element = this.parent.createElement('div', { className: 'e-gridpager' });\n var pagerObj = gridExtend({}, extend({}, getActualProperties(this.pageSettings)), {\n click: this.clickHandler.bind(this),\n dropDownChanged: this.onSelect.bind(this),\n enableRtl: gObj.enableRtl, locale: gObj.locale,\n created: this.addAriaAttr.bind(this)\n }, ['parentObj', 'propName']);\n pagerObj.cssClass = this.parent.cssClass ? this.parent.cssClass : '';\n this.pagerObj = new Pager(pagerObj, undefined, this.parent);\n this.pagerObj.hasParent = true;\n this.pagerObj.on(events.pagerRefresh, this.renderReactPagerTemplate, this);\n this.pagerObj.allowServerDataBinding = false;\n };\n Page.prototype.onSelect = function (e) {\n this.pageSettings.pageSize = e.pageSize;\n if (!this.isInitialLoad) {\n this.pageSettings.currentPage = 1;\n }\n };\n Page.prototype.addAriaAttr = function () {\n if (!(this.pageSettings.template)) {\n var numericContainerNew = this.parent.createElement('div', { className: 'e-numericcontainer' });\n var pagerContainer = this.element.querySelector('.e-pagercontainer');\n var frag = document.createDocumentFragment();\n var numericContainer = this.element.querySelector('.e-numericcontainer');\n var links = numericContainer.querySelectorAll('a');\n for (var i = 0; i < links.length; i++) {\n if (this.parent.getContentTable()) {\n links[parseInt(i.toString(), 10)].setAttribute('aria-owns', this.parent.getContentTable().id + ' ' + (i + 1));\n }\n else {\n links[parseInt(i.toString(), 10)].setAttribute('aria-owns', this.parent.element.getAttribute('id') + '_content_table' + ' ' + (i + 1));\n }\n var numericContainerDiv = this.parent.createElement('div');\n numericContainerDiv.appendChild(links[parseInt(i.toString(), 10)]);\n frag.appendChild(numericContainerDiv);\n }\n numericContainerNew.appendChild(frag);\n pagerContainer.replaceChild(numericContainerNew, numericContainer);\n var classList = ['.e-mfirst', '.e-mprev', '.e-first', '.e-prev', '.e-next', '.e-last', '.e-mnext', '.e-mlast'];\n for (var j = 0; j < classList.length; j++) {\n var element = this.element.querySelector(classList[parseInt(j.toString(), 10)]);\n if (this.parent.getContentTable()) {\n element.setAttribute('aria-owns', this.parent.getContentTable().id + classList[parseInt(j.toString(), 10)].replace('.e-', ' '));\n }\n }\n }\n };\n Page.prototype.dataReady = function (e) {\n this.updateModel(e);\n };\n /**\n * Refreshes the page count, pager information, and external message.\n *\n * @returns {void}\n */\n Page.prototype.refresh = function () {\n this.pagerObj.refresh();\n };\n /**\n * Navigates to the target page according to the given number.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n * @returns {void}\n */\n Page.prototype.goToPage = function (pageNo) {\n this.pagerObj.goToPage(pageNo);\n };\n /**\n * @param {number} pageSize - specifies the page size\n * @returns {void}\n * @hidden\n */\n Page.prototype.setPageSize = function (pageSize) {\n this.pagerObj.setPageSize(pageSize);\n };\n /**\n * The function used to update pageSettings model\n *\n * @param {NotifyArgs} e - specfies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.updateModel = function (e) {\n this.parent.pageSettings.totalRecordsCount = e.count;\n if (this.pagerObj.isAllPage) {\n this.parent.pageSettings.pageSize = this.parent.pageSettings.totalRecordsCount;\n }\n if ((e.action === 'add' && e.requestType === 'save') || (e.requestType === 'batchsave')) {\n if (this.pagerObj.isAllPage && (e.count === this.pageSettings.pageSize)) {\n this.pagerObj.setProperties({ pageSize: e.count }, true);\n }\n }\n this.parent.dataBind();\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.onActionComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, {\n currentPage: this.parent.pageSettings.currentPage, requestType: 'paging',\n type: events.actionComplete\n }));\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var newProp = e.properties;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n this.pagerObj[\"\" + prop] = newProp[\"\" + prop];\n }\n this.pagerObj.dataBind();\n };\n Page.prototype.clickHandler = function (e) {\n var gObj = this.parent;\n if (this.isForceCancel || isActionPrevent(gObj) && !gObj.prevPageMoving && !this.isCancel) {\n if (!this.isForceCancel) {\n if (!isNullOrUndefined(e.newProp) && !isNullOrUndefined(e.newProp.pageSize)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.setPageSize, arg1: e.newProp.pageSize });\n this.pagerObj.setProperties({ pageSize: e.oldProp.pageSize }, true);\n this.parent.setProperties({ pageSettings: { pageSize: e.oldProp.pageSize } }, true);\n this.pagerObj.setProperties({\n currentPage: gObj.pageSettings.currentPage === this.pagerObj.currentPage ?\n this.pagerObj.previousPageNo : gObj.pageSettings.currentPage\n }, true);\n }\n else if (e.currentPage) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.goToPage, arg1: e.currentPage });\n this.pagerObj.currentPage = gObj.pageSettings.currentPage === this.pagerObj.currentPage ?\n this.pagerObj.previousPageNo : gObj.pageSettings.currentPage;\n }\n this.isForceCancel = true;\n this.pagerObj.dataBind();\n }\n else {\n this.isForceCancel = false;\n }\n e.cancel = true;\n return;\n }\n gObj.pageSettings.pageSize = this.pagerObj.pageSize;\n gObj.prevPageMoving = false;\n var prevPage = this.pageSettings.currentPage;\n var args = {\n cancel: false, requestType: 'paging', previousPage: prevPage,\n currentPage: e.currentPage, pageSize: gObj.pageSettings.pageSize, type: events.actionBegin\n };\n if (!this.isCancel) {\n this.pageSettings.currentPage = e.currentPage;\n this.parent.notify(events.modelChanged, args);\n }\n if (args.cancel) {\n e.cancel = true;\n this.parent.setProperties({ pageSettings: { currentPage: prevPage } }, true);\n this.pagerObj.setProperties({ currentPage: prevPage }, true);\n this.isCancel = true;\n return;\n }\n this.isCancel = false;\n this.parent.requestTypeAction = 'paging';\n };\n Page.prototype.keyPressHandler = function (e) {\n if (e.action in keyActions) {\n e.preventDefault();\n this.element.querySelector(keyActions[e.action]).click();\n }\n };\n /**\n * Defines the text of the external message.\n *\n * @param {string} message - Defines the message to update.\n * @returns {void}\n */\n Page.prototype.updateExternalMessage = function (message) {\n if (!this.pagerObj.enableExternalMessage) {\n this.pagerObj.enableExternalMessage = true;\n this.pagerObj.dataBind();\n }\n this.pagerObj.externalMessage = message;\n this.pagerObj.dataBind();\n };\n Page.prototype.appendToElement = function () {\n this.isInitialLoad = true;\n this.parent.element.appendChild(this.element);\n this.parent.setGridPager(this.element);\n this.pagerObj.isReact = this.parent.isReact;\n this.pagerObj.isVue = this.parent.isVue;\n this.pagerObj.appendTo(this.element);\n this.isInitialLoad = false;\n };\n Page.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.appendToElement();\n if (this.isReactTemplate()) {\n this.pagerObj.updateTotalPages();\n this.created();\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Page.prototype.addEventListener = function () {\n this.handlers = {\n load: this.render,\n end: this.appendToElement,\n ready: this.dataReady,\n complete: this.onActionComplete,\n updateLayout: this.enableAfterRender,\n inboundChange: this.onPropertyChanged,\n keyPress: this.keyPressHandler,\n created: this.created\n };\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n this.parent.addEventListener(literals.create, this.handlers.created.bind(this));\n }\n this.evtHandlers = [{ event: events.initialLoad, handler: this.handlers.load },\n { event: events.initialEnd, handler: this.handlers.end },\n { event: events.dataReady, handler: this.handlers.ready },\n { event: events.pageComplete, handler: this.handlers.complete },\n { event: events.uiUpdate, handler: this.handlers.updateLayout },\n { event: events.inBoundModelChanged, handler: this.handlers.inboundChange },\n { event: events.keyPressed, handler: this.handlers.keyPress },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n Page.prototype.created = function () {\n if (this.isInitialRender && this.isReactTemplate()) {\n this.isInitialRender = false;\n this.renderReactPagerTemplate();\n }\n };\n Page.prototype.isReactTemplate = function () {\n return (this.parent.isReact || this.parent.isVue) && this.pagerObj.template && typeof (this.pagerObj.template) !== 'string';\n };\n Page.prototype.renderReactPagerTemplate = function () {\n if (!this.isInitialRender && this.isReactTemplate()) {\n var result = void 0;\n this.parent.destroyTemplate(['pagerTemplate']);\n this.element.classList.add('e-pagertemplate');\n this.pagerObj.compile(this.pagerObj.template);\n var page = this.parent.pageSettings;\n var data = {\n currentPage: page.currentPage, pageSize: page.pageSize, pageCount: page.pageCount,\n totalRecordsCount: page.totalRecordsCount, totalPages: this.pagerObj.totalPages\n };\n var tempId = this.parent.id + '_pagertemplate';\n if (this.parent.isReact) {\n this.pagerObj.templateFn(data, this.parent, 'pagerTemplate', tempId, null, null, this.pagerObj.element);\n this.parent.renderTemplates();\n }\n else {\n result = this.pagerObj.templateFn(data, this.parent, 'pagerTemplate');\n appendChildren(this.pagerObj.element, result);\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Page.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n this.parent.removeEventListener(literals.create, this.handlers.created);\n }\n this.parent.off(events.pagerRefresh, this.renderReactPagerTemplate);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * To destroy the pager\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.destroy = function () {\n this.removeEventListener();\n if (this.isReactTemplate()) {\n this.parent.destroyTemplate(['pagerTemplate']);\n }\n this.pagerObj.destroy();\n };\n Page.prototype.pagerDestroy = function () {\n if (this.pagerObj && !this.pagerObj.isDestroyed) {\n this.pagerObj.destroy();\n remove(this.element);\n }\n };\n return Page;\n}());\nexport { Page };\n/**\n * @hidden\n */\nvar keyActions = {\n pageUp: '.e-prev',\n pageDown: '.e-next',\n ctrlAltPageDown: '.e-last',\n ctrlAltPageUp: '.e-first',\n altPageUp: '.e-pp',\n altPageDown: '.e-np'\n};\n","/**\n * Used to `write a string` into output file.\n * @private\n */\nvar PdfWriter = /** @class */ (function () {\n /**\n * Initialize an instance of `PdfWriter` class.\n * @private\n */\n function PdfWriter(stream) {\n this.streamWriter = stream;\n }\n Object.defineProperty(PdfWriter.prototype, \"document\", {\n //properties\n /**\n * Gets and Sets the `document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"position\", {\n /**\n * Gets the `position`.\n * @private\n */\n get: function () {\n return this.streamWriter.buffer.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"length\", {\n /**\n * Gets the `length` of the stream'.\n * @private\n */\n get: function () {\n return this.streamWriter.buffer.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"stream\", {\n /**\n * Gets the `stream`.\n * @private\n */\n get: function () {\n var result = this.streamWriter;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n //public Methods\n /**\n * `Writes the specified data`.\n * @private\n */\n PdfWriter.prototype.write = function (overload) {\n var data = [];\n var tempOverload = overload;\n this.streamWriter.write(tempOverload);\n };\n return PdfWriter;\n}());\nexport { PdfWriter };\n","/**\n * @private\n * @hidden\n */\nexport function defaultToString(item) {\n // if (item === null) {\n // return 'COLLECTION_NULL';\n // } else if (typeof item === 'undefined') {\n // return 'COLLECTION_UNDEFINED';\n // } else if (Object.prototype.toString.call(item) === '[object String]') {\n if (Object.prototype.toString.call(item) === '[object String]') {\n return '$s' + item;\n }\n else {\n return '$o' + item.toString();\n }\n}\n","/**\n * Dictionary.ts class for EJ2-PDF\n * @private\n * @hidden\n */\nimport { defaultToString } from './utils';\n/**\n * @private\n * @hidden\n */\nvar Dictionary = /** @class */ (function () {\n /**\n * @private\n * @hidden\n */\n function Dictionary(toStringFunction) {\n this.table = {};\n this.nElements = 0;\n this.toStr = toStringFunction || defaultToString;\n }\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.getValue = function (key) {\n var pair = this.table['$' + this.toStr(key)];\n if (typeof pair === 'undefined') {\n return undefined;\n }\n return pair.value;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.setValue = function (key, value) {\n // if (typeof key === 'undefined' || typeof value === 'undefined') {\n // return undefined;\n // }\n var ret;\n var k = '$' + this.toStr(key);\n var previousElement = this.table[k];\n // if (typeof previousElement === 'undefined') {\n this.nElements++;\n ret = undefined;\n // }\n this.table[k] = {\n key: key,\n value: value\n };\n return ret;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.remove = function (key) {\n var k = '$' + this.toStr(key);\n var previousElement = this.table[k];\n // if (typeof previousElement !== 'undefined') {\n delete this.table[k];\n this.nElements--;\n return previousElement.value;\n // }\n // return undefined;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.keys = function () {\n var keysArray = [];\n var namesOfKeys = Object.keys(this.table);\n for (var index1 = 0; index1 < namesOfKeys.length; index1++) {\n // if (Object.prototype.hasOwnProperty.call(this.table, namesOfKeys[index1])) {\n var pair1 = this.table[namesOfKeys[index1]];\n keysArray.push(pair1.key);\n // }\n }\n return keysArray;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.values = function () {\n var valuesArray = [];\n var namesOfValues = Object.keys(this.table);\n for (var index2 = 0; index2 < namesOfValues.length; index2++) {\n // if (Object.prototype.hasOwnProperty.call(this.table, namesOfValues[index2])) {\n var pair2 = this.table[namesOfValues[index2]];\n valuesArray.push(pair2.value);\n // }\n }\n return valuesArray;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.containsKey = function (key) {\n var retutnValue = true;\n if (typeof this.getValue(key) === 'undefined') {\n retutnValue = true;\n }\n else {\n retutnValue = false;\n }\n return !retutnValue;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.clear = function () {\n this.table = {};\n this.nElements = 0;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.size = function () {\n return this.nElements;\n };\n return Dictionary;\n}()); // End of dictionary\nexport { Dictionary };\n","/**\n * public Enum for `CompositeFontType`.\n * @private\n */\nexport var ObjectStatus;\n(function (ObjectStatus) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n ObjectStatus[ObjectStatus[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Registered`.\n * @private\n */\n ObjectStatus[ObjectStatus[\"Registered\"] = 1] = \"Registered\";\n})(ObjectStatus || (ObjectStatus = {}));\n","/**\n * PdfMainObjectCollection.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../collections/dictionary';\nimport { ObjectStatus } from './enum';\n/**\n * The collection of all `objects` within a PDF document.\n * @private\n */\nvar PdfMainObjectCollection = /** @class */ (function () {\n function PdfMainObjectCollection() {\n //Fields\n /**\n * The collection of the `indirect objects`.\n * @default []\n * @private\n */\n this.objectCollections = [];\n /**\n * The collection of the `Indirect objects`.\n * @default new Dictionary()\n * @private\n */\n this.mainObjectCollection = new Dictionary();\n /**\n * The collection of `primitive objects`.\n * @private\n */\n this.primitiveObjectCollection = new Dictionary();\n }\n Object.defineProperty(PdfMainObjectCollection.prototype, \"count\", {\n //Properties\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.objectCollections.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the value of `ObjectInfo` from object collection.\n * @private\n */\n PdfMainObjectCollection.prototype.items = function (index) {\n return this.objectCollections[index];\n };\n Object.defineProperty(PdfMainObjectCollection.prototype, \"outIsNew\", {\n //Methods\n /**\n * Specifies the value of `IsNew`.\n * @private\n */\n get: function () {\n return this.isNew;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Adds` the specified element.\n * @private\n */\n PdfMainObjectCollection.prototype.add = function (element) {\n var objInfo = new ObjectInfo(element);\n this.objectCollections.push(objInfo);\n if (!this.primitiveObjectCollection.containsKey(element)) {\n this.primitiveObjectCollection.setValue(element, this.objectCollections.length - 1);\n }\n element.position = this.index = this.objectCollections.length - 1;\n element.status = ObjectStatus.Registered;\n };\n /**\n * `Looks` through the collection for the object specified.\n * @private\n */\n PdfMainObjectCollection.prototype.lookFor = function (obj) {\n var index = -1;\n if (obj.position !== -1) {\n return obj.position;\n }\n if (this.primitiveObjectCollection.containsKey(obj) && this.count === this.primitiveObjectCollection.size()) {\n index = this.primitiveObjectCollection.getValue(obj);\n }\n else {\n for (var i = this.count - 1; i >= 0; i--) {\n var oi = this.objectCollections[i];\n if (oi.object === obj) {\n index = i;\n break;\n }\n }\n }\n return index;\n };\n /**\n * Gets the `reference of the object`.\n * @private\n */\n PdfMainObjectCollection.prototype.getReference = function (index, isNew) {\n this.index = this.lookFor(index);\n var reference;\n this.isNew = false;\n var oi = this.objectCollections[this.index];\n reference = oi.reference;\n var obj = { reference: reference, wasNew: isNew };\n return obj;\n };\n /**\n * Tries to set the `reference to the object`.\n * @private\n */\n PdfMainObjectCollection.prototype.trySetReference = function (obj, reference, found) {\n var result = true;\n found = true;\n this.index = this.lookFor(obj);\n var oi = this.objectCollections[this.index];\n oi.setReference(reference);\n return result;\n };\n PdfMainObjectCollection.prototype.destroy = function () {\n for (var _i = 0, _a = this.objectCollections; _i < _a.length; _i++) {\n var obj = _a[_i];\n if (obj !== undefined) {\n obj.pdfObject.position = -1;\n obj.pdfObject.isSaving = undefined;\n obj.pdfObject.objectCollectionIndex = undefined;\n obj.pdfObject.position = undefined;\n }\n }\n this.objectCollections = [];\n this.mainObjectCollection = new Dictionary();\n this.primitiveObjectCollection = new Dictionary();\n };\n return PdfMainObjectCollection;\n}());\nexport { PdfMainObjectCollection };\nvar ObjectInfo = /** @class */ (function () {\n function ObjectInfo(obj, reference) {\n this.pdfObject = obj;\n this.pdfReference = reference;\n }\n Object.defineProperty(ObjectInfo.prototype, \"object\", {\n //Properties\n /**\n * Gets the `object`.\n * @private\n */\n get: function () {\n return this.pdfObject;\n },\n set: function (value) {\n this.pdfObject = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ObjectInfo.prototype, \"reference\", {\n /**\n * Gets the `reference`.\n * @private\n */\n get: function () {\n return this.pdfReference;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the `reference`.\n * @private\n */\n ObjectInfo.prototype.setReference = function (reference) {\n this.pdfReference = reference;\n };\n return ObjectInfo;\n}());\nexport { ObjectInfo };\n","/**\n * Encoding class: Contains the details about encoding type, whether to write a Unicode byte order mark (BOM).\n * ```typescript\n * let encoding : Encoding = new Encoding();\n * encoding.type = 'Utf8';\n * encoding.getBytes('Encoding', 0, 5);\n * ```\n */\nvar Encoding = /** @class */ (function () {\n /**\n * Initializes a new instance of the Encoding class. A parameter specifies whether to write a Unicode byte order mark\n * @param {boolean} includeBom?-true to specify that a Unicode byte order mark is written; otherwise, false.\n */\n function Encoding(includeBom) {\n this.emitBOM = true;\n this.encodingType = 'Ansi';\n this.initBOM(includeBom);\n }\n Object.defineProperty(Encoding.prototype, \"includeBom\", {\n /**\n * Gets a value indicating whether to write a Unicode byte order mark\n * @returns boolean- true to specify that a Unicode byte order mark is written; otherwise, false\n */\n get: function () {\n return this.emitBOM;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Encoding.prototype, \"type\", {\n /**\n * Gets the encoding type.\n * @returns EncodingType\n */\n get: function () {\n return this.encodingType;\n },\n /**\n * Sets the encoding type.\n * @param {EncodingType} value\n */\n set: function (value) {\n this.encodingType = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Initialize the includeBom to emit BOM or Not\n * @param {boolean} includeBom\n */\n Encoding.prototype.initBOM = function (includeBom) {\n if (includeBom === undefined || includeBom === null) {\n this.emitBOM = true;\n }\n else {\n this.emitBOM = includeBom;\n }\n };\n /**\n * Calculates the number of bytes produced by encoding the characters in the specified string\n * @param {string} chars - The string containing the set of characters to encode\n * @returns {number} - The number of bytes produced by encoding the specified characters\n */\n Encoding.prototype.getByteCount = function (chars) {\n var byteCount = 0;\n validateNullOrUndefined(chars, 'string');\n if (chars === '') {\n var byte = this.utf8Len(chars.charCodeAt(0));\n return byte;\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n return this.getByteCountInternal(chars, 0, chars.length);\n };\n /**\n * Return the Byte of character\n * @param {number} codePoint\n * @returns {number}\n */\n Encoding.prototype.utf8Len = function (codePoint) {\n var bytes = codePoint <= 0x7F ? 1 :\n codePoint <= 0x7FF ? 2 :\n codePoint <= 0xFFFF ? 3 :\n codePoint <= 0x1FFFFF ? 4 : 0;\n return bytes;\n };\n /**\n * for 4 byte character return surrogate pair true, otherwise false\n * @param {number} codeUnit\n * @returns {boolean}\n */\n Encoding.prototype.isHighSurrogate = function (codeUnit) {\n return codeUnit >= 0xD800 && codeUnit <= 0xDBFF;\n };\n /**\n * for 4byte character generate the surrogate pair\n * @param {number} highCodeUnit\n * @param {number} lowCodeUnit\n */\n Encoding.prototype.toCodepoint = function (highCodeUnit, lowCodeUnit) {\n highCodeUnit = (0x3FF & highCodeUnit) << 10;\n var u = highCodeUnit | (0x3FF & lowCodeUnit);\n return u + 0x10000;\n };\n /**\n * private method to get the byte count for specific charindex and count\n * @param {string} chars\n * @param {number} charIndex\n * @param {number} charCount\n */\n Encoding.prototype.getByteCountInternal = function (chars, charIndex, charCount) {\n var byteCount = 0;\n if (this.encodingType === 'Utf8' || this.encodingType === 'Unicode') {\n var isUtf8 = this.encodingType === 'Utf8';\n for (var i = 0; i < charCount; i++) {\n var charCode = chars.charCodeAt(isUtf8 ? charIndex : charIndex++);\n if (this.isHighSurrogate(charCode)) {\n if (isUtf8) {\n var high = charCode;\n var low = chars.charCodeAt(++charIndex);\n byteCount += this.utf8Len(this.toCodepoint(high, low));\n }\n else {\n byteCount += 4;\n ++i;\n }\n }\n else {\n if (isUtf8) {\n byteCount += this.utf8Len(charCode);\n }\n else {\n byteCount += 2;\n }\n }\n if (isUtf8) {\n charIndex++;\n }\n }\n return byteCount;\n }\n else {\n byteCount = charCount;\n return byteCount;\n }\n };\n /**\n * Encodes a set of characters from the specified string into the ArrayBuffer.\n * @param {string} s- The string containing the set of characters to encode\n * @param {number} charIndex-The index of the first character to encode.\n * @param {number} charCount- The number of characters to encode.\n * @returns {ArrayBuffer} - The ArrayBuffer that contains the resulting sequence of bytes.\n */\n Encoding.prototype.getBytes = function (s, charIndex, charCount) {\n validateNullOrUndefined(s, 'string');\n validateNullOrUndefined(charIndex, 'charIndex');\n validateNullOrUndefined(charCount, 'charCount');\n if (charIndex < 0 || charCount < 0) {\n throw new RangeError('Argument Out Of Range Exception: charIndex or charCount is less than zero');\n }\n if (s.length - charIndex < charCount) {\n throw new RangeError('Argument Out Of Range Exception: charIndex and charCount do not denote a valid range in string');\n }\n var bytes;\n if (s === '') {\n bytes = new ArrayBuffer(0);\n return bytes;\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n var byteCount = this.getByteCountInternal(s, charIndex, charCount);\n switch (this.type) {\n case 'Utf8':\n bytes = this.getBytesOfUtf8Encoding(byteCount, s, charIndex, charCount);\n return bytes;\n case 'Unicode':\n bytes = this.getBytesOfUnicodeEncoding(byteCount, s, charIndex, charCount);\n return bytes;\n default:\n bytes = this.getBytesOfAnsiEncoding(byteCount, s, charIndex, charCount);\n return bytes;\n }\n };\n /**\n * Decodes a sequence of bytes from the specified ArrayBuffer into the string.\n * @param {ArrayBuffer} bytes- The ArrayBuffer containing the sequence of bytes to decode.\n * @param {number} index- The index of the first byte to decode.\n * @param {number} count- The number of bytes to decode.\n * @returns {string} - The string that contains the resulting set of characters.\n */\n Encoding.prototype.getString = function (bytes, index, count) {\n validateNullOrUndefined(bytes, 'bytes');\n validateNullOrUndefined(index, 'index');\n validateNullOrUndefined(count, 'count');\n if (index < 0 || count < 0) {\n throw new RangeError('Argument Out Of Range Exception: index or count is less than zero');\n }\n if (bytes.byteLength - index < count) {\n throw new RangeError('Argument Out Of Range Exception: index and count do not denote a valid range in bytes');\n }\n if (bytes.byteLength === 0 || count === 0) {\n return '';\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n var out = '';\n var byteCal = new Uint8Array(bytes);\n switch (this.type) {\n case 'Utf8':\n var s = this.getStringOfUtf8Encoding(byteCal, index, count);\n return s;\n case 'Unicode':\n var byteUnicode = new Uint16Array(bytes);\n out = this.getStringofUnicodeEncoding(byteUnicode, index, count);\n return out;\n default:\n var j = index;\n for (var i = 0; i < count; i++) {\n var c = byteCal[j];\n out += String.fromCharCode(c); // 1 byte(ASCII) character \n j++;\n }\n return out;\n }\n };\n Encoding.prototype.getBytesOfAnsiEncoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var bufview = new Uint8Array(bytes);\n var k = 0;\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(charIndex++);\n if (charcode < 0x800) {\n bufview[k] = charcode;\n }\n else {\n bufview[k] = 63; //replacement character '?'\n }\n k++;\n }\n return bytes;\n };\n Encoding.prototype.getBytesOfUtf8Encoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var uint = new Uint8Array(bytes);\n var index = charIndex;\n var j = 0;\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(index);\n if (charcode <= 0x7F) { // 1 byte character 2^7\n uint[j] = charcode;\n }\n else if (charcode < 0x800) { // 2 byte character 2^11\n uint[j] = 0xc0 | (charcode >> 6);\n uint[++j] = 0x80 | (charcode & 0x3f);\n }\n else if ((charcode < 0xd800 || charcode >= 0xe000)) { // 3 byte character 2^16 \n uint[j] = 0xe0 | (charcode >> 12);\n uint[++j] = 0x80 | ((charcode >> 6) & 0x3f);\n uint[++j] = 0x80 | (charcode & 0x3f);\n }\n else {\n uint[j] = 0xef;\n uint[++j] = 0xbf;\n uint[++j] = 0xbd; // U+FFFE \"replacement character\"\n }\n ++j;\n ++index;\n }\n return bytes;\n };\n Encoding.prototype.getBytesOfUnicodeEncoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var uint16 = new Uint16Array(bytes);\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(i);\n uint16[i] = charcode;\n }\n return bytes;\n };\n Encoding.prototype.getStringOfUtf8Encoding = function (byteCal, index, count) {\n var j = 0;\n var i = index;\n var s = '';\n for (j; j < count; j++) {\n var c = byteCal[i++];\n while (i > byteCal.length) {\n return s;\n }\n if (c > 127) {\n if (c > 191 && c < 224 && i < count) {\n c = (c & 31) << 6 | byteCal[i] & 63;\n }\n else if (c > 223 && c < 240 && i < byteCal.byteLength) {\n c = (c & 15) << 12 | (byteCal[i] & 63) << 6 | byteCal[++i] & 63;\n }\n else if (c > 239 && c < 248 && i < byteCal.byteLength) {\n c = (c & 7) << 18 | (byteCal[i] & 63) << 12 | (byteCal[++i] & 63) << 6 | byteCal[++i] & 63;\n }\n ++i;\n }\n s += String.fromCharCode(c); // 1 byte(ASCII) character \n }\n return s;\n };\n Encoding.prototype.getStringofUnicodeEncoding = function (byteUni, index, count) {\n if (count > byteUni.length) {\n throw new RangeError('ArgumentOutOfRange_Count');\n }\n var byte16 = new Uint16Array(count);\n var out = '';\n for (var i = 0; i < count && i < byteUni.length; i++) {\n byte16[i] = byteUni[index++];\n }\n out = String.fromCharCode.apply(null, byte16);\n return out;\n };\n /**\n * To clear the encoding instance\n * @return {void}\n */\n Encoding.prototype.destroy = function () {\n this.emitBOM = undefined;\n this.encodingType = undefined;\n };\n return Encoding;\n}());\nexport { Encoding };\n/**\n * To check the object is null or undefined and throw error if it is null or undefined\n * @param {Object} value - object to check is null or undefined\n * @return {boolean}\n * @throws {ArgumentException} - if the value is null or undefined\n * @private\n */\nexport function validateNullOrUndefined(value, message) {\n if (value === null || value === undefined) {\n throw new Error('ArgumentException: ' + message + ' cannot be null or undefined');\n }\n}\n","/**\n * Save class provide method to save file\n * ```typescript\n * let blob : Blob = new Blob([''], { type: 'text/plain' });\n * Save.save('fileName.txt',blob);\n */\nvar Save = /** @class */ (function () {\n /**\n * Initialize new instance of {save}\n */\n function Save() {\n // tslint:disable\n }\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName- file name to save.\n * @param {Blob} buffer- the content to write in file\n * @param {boolean} isMicrosoftBrowser- specify whether microsoft browser or not\n * @returns {void}\n */\n Save.save = function (fileName, buffer) {\n if (fileName === null || fileName === undefined || fileName === '') {\n throw new Error('ArgumentException: fileName cannot be undefined, null or empty');\n }\n var extension = fileName.substring(fileName.lastIndexOf('.') + 1, fileName.length);\n var mimeType = this.getMimeType(extension);\n if (mimeType !== '') {\n buffer = new Blob([buffer], { type: mimeType });\n }\n if (this.isMicrosoftBrowser) {\n navigator.msSaveBlob(buffer, fileName);\n }\n else {\n var downloadLink = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');\n this.saveInternal(fileName, extension, buffer, downloadLink, 'download' in downloadLink);\n }\n };\n Save.saveInternal = function (fileName, extension, buffer, downloadLink, hasDownloadAttribute) {\n if (hasDownloadAttribute) {\n downloadLink.download = fileName;\n var dataUrl_1 = window.URL.createObjectURL(buffer);\n downloadLink.href = dataUrl_1;\n var event_1 = document.createEvent('MouseEvent');\n event_1.initEvent('click', true, true);\n downloadLink.dispatchEvent(event_1);\n setTimeout(function () {\n window.URL.revokeObjectURL(dataUrl_1);\n dataUrl_1 = undefined;\n });\n }\n else {\n if (extension !== 'docx' && extension !== 'xlsx') {\n var url = window.URL.createObjectURL(buffer);\n var isPopupBlocked = window.open(url, '_blank');\n if (!isPopupBlocked) {\n window.location.href = url;\n }\n }\n else {\n var reader_1 = new FileReader();\n reader_1.onloadend = function () {\n var isPopupBlocked = window.open(reader_1.result, '_blank');\n if (!isPopupBlocked) {\n window.location.href = reader_1.result;\n }\n };\n reader_1.readAsDataURL(buffer);\n }\n }\n };\n /**\n *\n * @param {string} extension - get mime type of the specified extension\n * @private\n */\n Save.getMimeType = function (extension) {\n var mimeType = '';\n switch (extension) {\n case 'html':\n mimeType = 'text/html';\n break;\n case 'pdf':\n mimeType = 'application/pdf';\n break;\n case 'docx':\n mimeType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n break;\n case 'xlsx':\n mimeType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n break;\n case 'txt':\n mimeType = 'text/plain';\n break;\n }\n return mimeType;\n };\n return Save;\n}());\nexport { Save };\n","/**\n * `PdfString` class is used to perform string related primitive operations.\n * @private\n */\nexport var InternalEnum;\n(function (InternalEnum) {\n //Internals\n /**\n * public Enum for `ForceEncoding`.\n * @private\n */\n var ForceEncoding;\n (function (ForceEncoding) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Ascii`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"Ascii\"] = 1] = \"Ascii\";\n /**\n * Specifies the type of `Unicode`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"Unicode\"] = 2] = \"Unicode\";\n })(ForceEncoding = InternalEnum.ForceEncoding || (InternalEnum.ForceEncoding = {}));\n /**\n * public Enum for `SourceType`.\n * @private\n */\n var SourceType;\n (function (SourceType) {\n /**\n * Specifies the type of `StringValue`.\n * @private\n */\n SourceType[SourceType[\"StringValue\"] = 0] = \"StringValue\";\n /**\n * Specifies the type of `ByteBuffer`.\n * @private\n */\n SourceType[SourceType[\"ByteBuffer\"] = 1] = \"ByteBuffer\";\n })(SourceType || (SourceType = {}));\n})(InternalEnum || (InternalEnum = {}));\nvar PdfString = /** @class */ (function () {\n function PdfString(value) {\n /**\n * Value indicating whether the string was converted to hex.\n * @default false\n * @private\n */\n this.bHex = false;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position1 = -1;\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.clonedObject1 = null;\n /**\n * `Shows` if the data of the stream was decrypted.\n * @default false\n * @private\n */\n this.bDecrypted = false;\n /**\n * Shows if the data of the stream `was decrypted`.\n * @default false\n * @private\n */\n this.isParentDecrypted = false;\n /**\n * Gets a value indicating whether the object is `packed or not`.\n * @default false\n * @private\n */\n this.isPacked = false;\n /**\n * @hidden\n * @private\n */\n this.isFormField = false;\n /**\n * @hidden\n * @private\n */\n this.isColorSpace = false;\n /**\n * @hidden\n * @private\n */\n this.isHexString = true;\n if (typeof value === 'undefined') {\n this.bHex = false;\n }\n else {\n if (!(value.length > 0 && value[0] === '0xfeff')) {\n this.stringValue = value;\n this.data = [];\n for (var i = 0; i < value.length; ++i) {\n this.data.push(value.charCodeAt(i));\n }\n }\n }\n }\n Object.defineProperty(PdfString.prototype, \"hex\", {\n //Property\n /**\n * Gets a value indicating whether string is in `hex`.\n * @private\n */\n get: function () {\n return this.bHex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"value\", {\n /**\n * Gets or sets string `value` of the object.\n * @private\n */\n get: function () {\n return this.stringValue;\n },\n set: function (value) {\n this.stringValue = value;\n this.data = null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status1;\n },\n set: function (value) {\n this.status1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving1;\n },\n set: function (value) {\n this.isSaving1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index1;\n },\n set: function (value) {\n this.index1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.clonedObject1;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position1;\n },\n set: function (value) {\n this.position1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"CrossTable\", {\n /**\n * Returns `PdfCrossTable` associated with the object.\n * @private\n */\n get: function () {\n return this.crossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"converted\", {\n /**\n * Gets a value indicating whether to check if the value has unicode characters.\n * @private\n */\n get: function () {\n return this.bConverted;\n },\n /**\n * sets a value indicating whether to check if the value has unicode characters.\n * @private\n */\n set: function (value) {\n this.bConverted = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"encode\", {\n /**\n * Gets value indicating whether we should convert data to Unicode.\n */\n get: function () {\n return this.bForceEncoding;\n },\n set: function (value) {\n this.bForceEncoding = value;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * Converts `bytes to string using hex format` for representing string.\n * @private\n */\n PdfString.bytesToHex = function (bytes) {\n if (bytes == null) {\n return '';\n }\n var builder = '';\n return builder;\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfString.prototype.save = function (writer) {\n if (writer === null) {\n throw new Error('ArgumentNullException : writer');\n }\n if (this.encode !== undefined && this.encode === InternalEnum.ForceEncoding.Ascii) {\n writer.write(this.pdfEncode());\n }\n else {\n writer.write(PdfString.stringMark[0] + this.value + PdfString.stringMark[1]);\n }\n };\n PdfString.prototype.pdfEncode = function () {\n var result = '';\n if (this.encode !== undefined && this.encode === InternalEnum.ForceEncoding.Ascii) {\n var data = this.escapeSymbols(this.value);\n for (var i = 0; i < data.length; i++) {\n result += String.fromCharCode(data[i]);\n }\n result = PdfString.stringMark[0] + result + PdfString.stringMark[1];\n }\n else {\n result = this.value;\n }\n return result;\n };\n PdfString.prototype.escapeSymbols = function (value) {\n var data = [];\n for (var i = 0; i < value.length; i++) {\n var currentData = value.charCodeAt(i);\n switch (currentData) {\n case 40:\n case 41:\n data.push(92);\n data.push(currentData);\n break;\n case 13:\n data.push(92);\n data.push(114);\n break;\n case 92:\n data.push(92);\n data.push(currentData);\n break;\n default:\n data.push(currentData);\n break;\n }\n }\n return data;\n };\n /**\n * Creates a `copy of PdfString`.\n * @private\n */\n PdfString.prototype.clone = function (crossTable) {\n if (this.clonedObject1 !== null && this.clonedObject1.CrossTable === crossTable) {\n return this.clonedObject1;\n }\n else {\n this.clonedObject1 = null;\n }\n var newString = new PdfString(this.stringValue);\n newString.bHex = this.bHex;\n newString.crossTable = crossTable;\n newString.isColorSpace = this.isColorSpace;\n this.clonedObject1 = newString;\n return newString;\n };\n /**\n * Converts string to array of unicode symbols.\n */\n PdfString.toUnicodeArray = function (value, bAddPrefix) {\n if (value == null) {\n throw new Error('Argument Null Exception : value');\n }\n var startIndex = 0;\n var output = [];\n for (var i = 0; i < value.length; i++) {\n var code = value.charCodeAt(i);\n output.push(code / 256 >>> 0);\n output.push(code & 0xff);\n }\n return output;\n };\n /**\n * Converts byte data to string.\n */\n PdfString.byteToString = function (data) {\n if (data == null) {\n throw new Error('Argument Null Exception : stream');\n }\n var result = '';\n for (var i = 0; i < data.length; ++i) {\n result += String.fromCharCode(data[i]);\n }\n return result;\n };\n //constants = ;\n /**\n * `General markers` for string.\n * @private\n */\n PdfString.stringMark = '()';\n /**\n * `Hex markers` for string.\n * @private\n */\n PdfString.hexStringMark = '<>';\n /**\n * Format of password data.\n * @private\n */\n PdfString.hexFormatPattern = '{0:X2}';\n return PdfString;\n}());\nexport { PdfString };\n","import { Encoding, validateNullOrUndefined } from './encoding';\nimport { Save } from './save';\n/**\n * StreamWriter class contains the implementation for writing characters to a file in a particular encoding\n * ```typescript\n * let writer = new StreamWriter();\n * writer.write('Hello World');\n * writer.save('Sample.txt');\n * writer.dispose();\n * ```\n */\nvar StreamWriter = /** @class */ (function () {\n /**\n * Initializes a new instance of the StreamWriter class by using the specified encoding.\n * @param {Encoding} encoding?- The character encoding to use.\n */\n function StreamWriter(encoding) {\n this.bufferBlob = new Blob(['']);\n this.bufferText = '';\n this.init(encoding);\n Save.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n }\n Object.defineProperty(StreamWriter.prototype, \"buffer\", {\n /**\n * Gets the content written to the StreamWriter as Blob.\n * @returns Blob\n */\n get: function () {\n this.flush();\n return this.bufferBlob;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StreamWriter.prototype, \"encoding\", {\n /**\n * Gets the encoding.\n * @returns Encoding\n */\n get: function () {\n return this.enc;\n },\n enumerable: true,\n configurable: true\n });\n StreamWriter.prototype.init = function (encoding) {\n if (encoding === null || encoding === undefined) {\n this.enc = new Encoding(false);\n this.enc.type = 'Utf8';\n }\n else {\n this.enc = encoding;\n this.setBomByte();\n }\n };\n /**\n * Private method to set Byte Order Mark(BOM) value based on EncodingType\n */\n StreamWriter.prototype.setBomByte = function () {\n if (this.encoding.includeBom) {\n switch (this.encoding.type) {\n case 'Unicode':\n var arrayUnicode = new ArrayBuffer(2);\n var uint8 = new Uint8Array(arrayUnicode);\n uint8[0] = 255;\n uint8[1] = 254;\n this.bufferBlob = new Blob([arrayUnicode]);\n break;\n case 'Utf8':\n var arrayUtf8 = new ArrayBuffer(3);\n var utf8 = new Uint8Array(arrayUtf8);\n utf8[0] = 239;\n utf8[1] = 187;\n utf8[2] = 191;\n this.bufferBlob = new Blob([arrayUtf8]);\n break;\n default:\n this.bufferBlob = new Blob(['']);\n break;\n }\n }\n };\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName - The file name to save\n * @returns {void}\n */\n StreamWriter.prototype.save = function (fileName) {\n if (this.bufferText !== '') {\n this.flush();\n }\n Save.save(fileName, this.buffer);\n };\n /**\n * Writes the specified string.\n * @param {string} value - The string to write. If value is null or undefined, nothing is written.\n * @returns {void}\n */\n StreamWriter.prototype.write = function (value) {\n if (this.encoding === undefined) {\n throw new Error('Object Disposed Exception: current writer is disposed');\n }\n validateNullOrUndefined(value, 'string');\n this.bufferText += value;\n if (this.bufferText.length >= 10240) {\n this.flush();\n }\n };\n StreamWriter.prototype.flush = function () {\n if (this.bufferText === undefined || this.bufferText === null || this.bufferText.length === 0) {\n return;\n }\n var bufferArray = this.encoding.getBytes(this.bufferText, 0, this.bufferText.length);\n this.bufferText = '';\n this.bufferBlob = new Blob([this.bufferBlob, bufferArray]);\n };\n /**\n * Writes the specified string followed by a line terminator\n * @param {string} value - The string to write. If value is null or undefined, nothing is written\n * @returns {void}\n */\n StreamWriter.prototype.writeLine = function (value) {\n if (this.encoding === undefined) {\n throw new Error('Object Disposed Exception: current writer is disposed');\n }\n validateNullOrUndefined(value, 'string');\n this.bufferText = this.bufferText + value + '\\r\\n';\n if (this.bufferText.length >= 10240) {\n this.flush();\n }\n };\n /**\n * Releases the resources used by the StreamWriter\n * @returns {void}\n */\n StreamWriter.prototype.destroy = function () {\n this.bufferBlob = undefined;\n this.bufferText = undefined;\n if (this.enc instanceof Encoding) {\n this.enc.destroy();\n }\n this.enc = undefined;\n };\n return StreamWriter;\n}());\nexport { StreamWriter };\n","import { Encoding, StreamWriter } from '@syncfusion/ej2-file-utils';\nimport { PdfDocument } from './pdf-document';\n/**\n * `PdfDocumentBase` class represent common properties of PdfDocument classes.\n * @private\n */\nvar PdfDocumentBase = /** @class */ (function () {\n function PdfDocumentBase(document) {\n /**\n * If the stream is copied, then it specifies true.\n * @private\n */\n this.isStreamCopied = false;\n if (document instanceof PdfDocument) {\n this.document = document;\n }\n }\n Object.defineProperty(PdfDocumentBase.prototype, \"pdfObjects\", {\n //Prpperties\n /**\n * Gets the `PDF objects` collection, which stores all objects and references to it..\n * @private\n */\n get: function () {\n return this.objects;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"crossTable\", {\n /**\n * Gets the `cross-reference` table.\n * @private\n */\n get: function () {\n return this.pdfCrossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"currentSavingObj\", {\n /**\n * Gets or sets the current saving `object number`.\n * @private\n */\n get: function () {\n return this.currentSavingObject;\n },\n set: function (value) {\n this.currentSavingObject = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"catalog\", {\n /**\n * Gets the PDF document `catalog`.\n * @private\n */\n get: function () {\n return this.pdfCatalog;\n },\n set: function (value) {\n this.pdfCatalog = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"viewerPreferences\", {\n /**\n * Gets viewer preferences for presenting the PDF document in a viewer.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets viewer preferences\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.pdfCatalog.viewerPreferences;\n },\n enumerable: true,\n configurable: true\n });\n //Public methods\n /**\n * Sets the `main object collection`.\n * @private\n */\n PdfDocumentBase.prototype.setMainObjectCollection = function (mainObjectCollection) {\n this.objects = mainObjectCollection;\n };\n /**\n * Sets the `cross table`.\n * @private\n */\n PdfDocumentBase.prototype.setCrossTable = function (cTable) {\n this.pdfCrossTable = cTable;\n };\n /**\n * Sets the `catalog`.\n * @private\n */\n PdfDocumentBase.prototype.setCatalog = function (catalog) {\n this.pdfCatalog = catalog;\n };\n PdfDocumentBase.prototype.save = function (filename) {\n var _this = this;\n var encoding = new Encoding(true);\n var SW = new StreamWriter(encoding);\n if (typeof filename === 'undefined') {\n var encoding_1 = new Encoding(true);\n var SW_1 = new StreamWriter(encoding_1);\n return new Promise(function (resolve, reject) {\n /* tslint:disable-next-line:no-any */\n var obj = {};\n obj.blobData = new Blob([_this.document.docSave(SW_1, true)], { type: 'application/pdf' });\n resolve(obj);\n });\n }\n else {\n this.document.docSave(SW, filename, true);\n }\n };\n /**\n * `Clone` of parent object - PdfDocument.\n * @private\n */\n PdfDocumentBase.prototype.clone = function () {\n return this.document;\n };\n return PdfDocumentBase;\n}());\nexport { PdfDocumentBase };\n","/**\n * `PdfName` class is used to perform name (element names) related primitive operations.\n * @private\n */\nvar PdfName = /** @class */ (function () {\n function PdfName(value) {\n /**\n * `Start symbol` of the name object.\n * @default /\n * @private\n */\n this.stringStartMark = '/';\n /**\n * `Value` of the element.\n * @private\n */\n this.internalValue = '';\n /**\n * Indicates if the object is currently in `saving state or not`.\n * @default false\n * @private\n */\n this.isSaving6 = false;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position6 = -1;\n this.internalValue = this.normalizeValue(value);\n }\n Object.defineProperty(PdfName.prototype, \"status\", {\n //property\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status6;\n },\n set: function (value) {\n this.status6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving6;\n },\n set: function (value) {\n this.isSaving6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index6;\n },\n set: function (value) {\n this.index6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position6;\n },\n set: function (value) {\n this.position6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"value\", {\n /**\n * Gets or sets the `value` of the object.\n * @private\n */\n get: function () {\n return this.internalValue;\n },\n set: function (value) {\n // if (value !== this.value) {\n var val = value;\n if (value !== null && value.length > 0) {\n // val = (value.substring(0, 1) === this.stringStartMark) ? value.substring(1) : value;\n val = value;\n this.internalValue = this.normalizeValue(val);\n }\n else {\n this.internalValue = val;\n }\n // }\n },\n enumerable: true,\n configurable: true\n });\n //public methods\n /**\n * `Saves` the name using the specified writer.\n * @private\n */\n PdfName.prototype.save = function (writer) {\n // if (writer === null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n writer.write(this.toString());\n };\n /**\n * Gets `string` representation of the primitive.\n * @private\n */\n PdfName.prototype.toString = function () {\n return (this.stringStartMark + this.escapeString(this.value));\n };\n /**\n * Creates a `copy of PdfName`.\n * @private\n */\n PdfName.prototype.clone = function (crossTable) {\n var newName = new PdfName();\n newName.value = this.internalValue;\n return newName;\n };\n /**\n * Replace some characters with its `escape sequences`.\n * @private\n */\n PdfName.prototype.escapeString = function (stringValue) {\n // if (str === null) {\n // throw new Error('ArgumentNullException : str');\n // }\n // if (str === '') {\n // return str;\n // }\n var result = '';\n var len = 0;\n for (var i = 0, len_1 = stringValue.length; i < len_1; i++) {\n var ch = stringValue[i];\n var index = PdfName.delimiters.indexOf(ch);\n // switch (ch) {\n // case '\\r' :\n // result = result + '\\\\r';\n // break;\n // case '\\n' :\n // result = result + '\\n';\n // break;\n // case '(' :\n // case ')' :\n // case '\\\\' :\n // //result.Append( '\\\\' ).Append( ch );\n // result = result + ch;\n // break;\n // default :\n // result = result + ch;\n // break;\n // }\n result = result + ch;\n }\n return result;\n };\n //methiods\n /**\n * Replace a symbol with its code with the precedence of the `sharp sign`.\n * @private\n */\n PdfName.prototype.normalizeValue = function (value, c) {\n // if (typeof c === undefined) {\n // let str : string = value;\n // for (let i : number = 0; i < PdfName.replacements.length; i++) {\n // str = this.normalizeValue(str, c);\n // }\n // return str;\n // } else {\n var strFormat = '#{0:X}';\n //return value.replace(c.toString(),String.format(strFormat,c));\n return value;\n // }\n };\n /**\n * PDF `special characters`.\n * @private\n */\n PdfName.delimiters = '()<>[]{}/%}';\n /**\n * The symbols that are not allowed in PDF names and `should be replaced`.\n * @private\n */\n PdfName.replacements = [' ', '\\t', '\\n', '\\r'];\n return PdfName;\n}());\nexport { PdfName };\n","/**\n * PdfOperators.ts class for EJ2-PDF\n * Class of string PDF common operators.\n * @private\n */\nvar Operators = /** @class */ (function () {\n /**\n * Create an instance of `PdfOperator` class.\n * @private\n */\n function Operators() {\n /**\n * Specifies the value of `test`.\n * @private\n */\n this.forTest = 'test';\n this.forTest = Operators.obj;\n }\n /**\n * Specifies the value of `obj`.\n * @private\n */\n Operators.obj = 'obj';\n /**\n * Specifies the value of `endObj`.\n * @private\n */\n Operators.endObj = 'endobj';\n /**\n * Specifies the value of `R`.\n * @private\n */\n Operators.r = 'R';\n /**\n * Specifies the value of ` `.\n * @private\n */\n Operators.whiteSpace = ' ';\n /**\n * Specifies the value of `/`.\n * @private\n */\n Operators.slash = '/';\n /**\n * Specifies the value of `\\r\\n`.\n * @private\n */\n Operators.newLine = '\\r\\n';\n /**\n * Specifies the value of `stream`.\n * @private\n */\n Operators.stream = 'stream';\n /**\n * Specifies the value of `endStream`.\n * @private\n */\n Operators.endStream = 'endstream';\n /**\n * Specifies the value of `xref`.\n * @private\n */\n Operators.xref = 'xref';\n /**\n * Specifies the value of `f`.\n * @private\n */\n Operators.f = 'f';\n /**\n * Specifies the value of `n`.\n * @private\n */\n Operators.n = 'n';\n /**\n * Specifies the value of `trailer`.\n * @private\n */\n Operators.trailer = 'trailer';\n /**\n * Specifies the value of `startxref`.\n * @private\n */\n Operators.startxref = 'startxref';\n /**\n * Specifies the value of `eof`.\n * @private\n */\n Operators.eof = '%%EOF';\n /**\n * Specifies the value of `header`.\n * @private\n */\n Operators.header = '%PDF-1.5';\n /**\n * Specifies the value of `beginText`.\n * @private\n */\n Operators.beginText = 'BT';\n /**\n * Specifies the value of `endText`.\n * @private\n */\n Operators.endText = 'ET';\n /**\n * Specifies the value of `m`.\n * @private\n */\n Operators.beginPath = 'm';\n /**\n * Specifies the value of `l`.\n * @private\n */\n Operators.appendLineSegment = 'l';\n /**\n * Specifies the value of `S`.\n * @private\n */\n Operators.stroke = 'S';\n /**\n * Specifies the value of `f`.\n * @private\n */\n Operators.fill = 'f';\n /**\n * Specifies the value of `f*`.\n * @private\n */\n Operators.fillEvenOdd = 'f*';\n /**\n * Specifies the value of `B`.\n * @private\n */\n Operators.fillStroke = 'B';\n /**\n * Specifies the value of `B*`.\n * @private\n */\n Operators.fillStrokeEvenOdd = 'B*';\n /**\n * Specifies the value of `c`.\n * @private\n */\n Operators.appendbeziercurve = 'c';\n /**\n * Specifies the value of `re`.\n * @private\n */\n Operators.appendRectangle = 're';\n /**\n * Specifies the value of `q`.\n * @private\n */\n Operators.saveState = 'q';\n /**\n * Specifies the value of `Q`.\n * @private\n */\n Operators.restoreState = 'Q';\n /**\n * Specifies the value of `Do`.\n * @private\n */\n Operators.paintXObject = 'Do';\n /**\n * Specifies the value of `cm`.\n * @private\n */\n Operators.modifyCtm = 'cm';\n /**\n * Specifies the value of `Tm`.\n * @private\n */\n Operators.modifyTM = 'Tm';\n /**\n * Specifies the value of `w`.\n * @private\n */\n Operators.setLineWidth = 'w';\n /**\n * Specifies the value of `J`.\n * @private\n */\n Operators.setLineCapStyle = 'J';\n /**\n * Specifies the value of `j`.\n * @private\n */\n Operators.setLineJoinStyle = 'j';\n /**\n * Specifies the value of `d`.\n * @private\n */\n Operators.setDashPattern = 'd';\n /**\n * Specifies the value of `i`.\n * @private\n */\n Operators.setFlatnessTolerance = 'i';\n /**\n * Specifies the value of `h`.\n * @private\n */\n Operators.closePath = 'h';\n /**\n * Specifies the value of `s`.\n * @private\n */\n Operators.closeStrokePath = 's';\n /**\n * Specifies the value of `b`.\n * @private\n */\n Operators.closeFillStrokePath = 'b';\n /**\n * Specifies the value of `setCharacterSpace`.\n * @private\n */\n Operators.setCharacterSpace = 'Tc';\n /**\n * Specifies the value of `setWordSpace`.\n * @private\n */\n Operators.setWordSpace = 'Tw';\n /**\n * Specifies the value of `setHorizontalScaling`.\n * @private\n */\n Operators.setHorizontalScaling = 'Tz';\n /**\n * Specifies the value of `setTextLeading`.\n * @private\n */\n Operators.setTextLeading = 'TL';\n /**\n * Specifies the value of `setFont`.\n * @private\n */\n Operators.setFont = 'Tf';\n /**\n * Specifies the value of `setRenderingMode`.\n * @private\n */\n Operators.setRenderingMode = 'Tr';\n /**\n * Specifies the value of `setTextRise`.\n * @private\n */\n Operators.setTextRise = 'Ts';\n /**\n * Specifies the value of `setTextScaling`.\n * @private\n */\n Operators.setTextScaling = 'Tz';\n /**\n * Specifies the value of `setCoords`.\n * @private\n */\n Operators.setCoords = 'Td';\n /**\n * Specifies the value of `goToNextLine`.\n * @private\n */\n Operators.goToNextLine = 'T*';\n /**\n * Specifies the value of `setText`.\n * @private\n */\n Operators.setText = 'Tj';\n /**\n * Specifies the value of `setTextWithFormatting`.\n * @private\n */\n Operators.setTextWithFormatting = 'TJ';\n /**\n * Specifies the value of `setTextOnNewLine`.\n * @private\n */\n Operators.setTextOnNewLine = '\\'';\n /**\n * Specifies the value of `selectcolorspaceforstroking`.\n * @private\n */\n Operators.selectcolorspaceforstroking = 'CS';\n /**\n * Specifies the value of `selectcolorspacefornonstroking`.\n * @private\n */\n Operators.selectcolorspacefornonstroking = 'cs';\n /**\n * Specifies the value of `setrbgcolorforstroking`.\n * @private\n */\n Operators.setrbgcolorforstroking = 'RG';\n /**\n * Specifies the value of `setrbgcolorfornonstroking`.\n * @private\n */\n Operators.setrbgcolorfornonstroking = 'rg';\n /**\n * Specifies the value of `K`.\n * @private\n */\n Operators.setcmykcolorforstroking = 'K';\n /**\n * Specifies the value of `k`.\n * @private\n */\n Operators.setcmykcolorfornonstroking = 'k';\n /**\n * Specifies the value of `G`.\n * @private\n */\n Operators.setgraycolorforstroking = 'G';\n /**\n * Specifies the value of `g`.\n * @private\n */\n Operators.setgraycolorfornonstroking = 'g';\n /**\n * Specifies the value of `W`.\n * @private\n */\n Operators.clipPath = 'W';\n /**\n * Specifies the value of `clipPathEvenOdd`.\n * @private\n */\n Operators.clipPathEvenOdd = 'W*';\n /**\n * Specifies the value of `n`.\n * @private\n */\n Operators.endPath = 'n';\n /**\n * Specifies the value of `setGraphicsState`.\n * @private\n */\n Operators.setGraphicsState = 'gs';\n /**\n * Specifies the value of `%`.\n * @private\n */\n Operators.comment = '%';\n /**\n * Specifies the value of `*`.\n * @private\n */\n Operators.evenOdd = '*';\n /**\n * Specifies the value of `M`.\n * @private\n */\n Operators.setMiterLimit = 'M';\n /**\n * Same as SC, but also supports Pattern, Separation, DeviceN, and ICCBased color spaces. For non-stroking operations.\n * @public\n */\n Operators.setColorAndPattern = 'scn';\n /**\n * Same as SC, but also supports Pattern, Separation, DeviceN, and ICCBased color spaces. For stroking.\n */\n Operators.setColorAndPatternStroking = 'SCN';\n return Operators;\n}());\nexport { Operators };\n","/**\n * dictionaryProperties.ts class for EJ2-PDF\n * PDF dictionary properties.\n * @private\n */\nvar DictionaryProperties = /** @class */ (function () {\n /**\n * Initialize an instance for `PdfDictionaryProperties` class.\n * @private\n */\n function DictionaryProperties() {\n /**\n * Specifies the value of `Pages`.\n * @private\n */\n this.pages = 'Pages';\n /**\n * Specifies the value of `Kids`.\n * @private\n */\n this.kids = 'Kids';\n /**\n * Specifies the value of `Count`.\n * @private\n */\n this.count = 'Count';\n /**\n * Specifies the value of `Resources`.\n * @private\n */\n this.resources = 'Resources';\n /**\n * Specifies the value of `Type`.\n * @private\n */\n this.type = 'Type';\n /**\n * Specifies the value of `Size`.\n * @private\n */\n this.size = 'Size';\n /**\n * Specifies the value of `MediaBox`.\n * @private\n */\n this.mediaBox = 'MediaBox';\n /**\n * Specifies the value of `Parent`.\n * @private\n */\n this.parent = 'Parent';\n /**\n * Specifies the value of `Root`.\n * @private\n */\n this.root = 'Root';\n /**\n * Specifies the value of `DecodeParms`.\n * @private\n */\n this.decodeParms = 'DecodeParms';\n /**\n * Specifies the value of `Filter`.\n * @private\n */\n this.filter = 'Filter';\n /**\n * Specifies the value of `Font`.\n * @private\n */\n this.font = 'Font';\n /**\n * Specifies the value of `Type1`.\n * @private\n */\n this.type1 = 'Type1';\n /**\n * Specifies the value of `BaseFont`.\n * @private\n */\n this.baseFont = 'BaseFont';\n /**\n * Specifies the value of `Encoding`.\n * @private\n */\n this.encoding = 'Encoding';\n /**\n * Specifies the value of `Subtype`.\n * @private\n */\n this.subtype = 'Subtype';\n /**\n * Specifies the value of `Contents`.\n * @private\n */\n this.contents = 'Contents';\n /**\n * Specifies the value of `ProcSet`.\n * @private\n */\n this.procset = 'ProcSet';\n /**\n * Specifies the value of `ColorSpace`.\n * @private\n */\n this.colorSpace = 'ColorSpace';\n /**\n * Specifies the value of `ExtGState`.\n * @private\n */\n this.extGState = 'ExtGState';\n /**\n * Specifies the value of `Pattern`.\n * @private\n */\n this.pattern = 'Pattern';\n /**\n * Specifies the value of `XObject`.\n * @private\n */\n this.xObject = 'XObject';\n /**\n * Specifies the value of `Length`.\n * @private\n */\n this.length = 'Length';\n /**\n * Specifies the value of `Width`.\n * @private\n */\n this.width = 'Width';\n /**\n * Specifies the value of `Height`.\n * @private\n */\n this.height = 'Height';\n /**\n * Specifies the value of `BitsPerComponent`.\n * @private\n */\n this.bitsPerComponent = 'BitsPerComponent';\n /**\n * Specifies the value of `Image`.\n * @private\n */\n this.image = 'Image';\n /**\n * Specifies the value of `dctdecode`.\n * @private\n */\n this.dctdecode = 'DCTDecode';\n /**\n * Specifies the value of `Columns`.\n * @private\n */\n this.columns = 'Columns';\n /**\n * Specifies the value of `BlackIs1`.\n * @private\n */\n this.blackIs1 = 'BlackIs1';\n /**\n * Specifies the value of `K`.\n * @private\n */\n this.k = 'K';\n /**\n * Specifies the value of `S`.\n * @private\n */\n this.s = 'S';\n /**\n * Specifies the value of `Predictor`.\n * @private\n */\n this.predictor = 'Predictor';\n /**\n * Specifies the value of `DeviceRGB`.\n * @private\n */\n this.deviceRgb = 'DeviceRGB';\n /**\n * Specifies the value of `Next`.\n * @private\n */\n this.next = 'Next';\n /**\n * Specifies the value of `Action`.\n * @private\n */\n this.action = 'Action';\n /**\n * Specifies the value of `Link`.\n * @private\n */\n this.link = 'Link';\n /**\n *\n * Specifies the value of `A`.\n * @private\n */\n this.a = 'A';\n /**\n * Specifies the value of `Annot`.\n * @private\n */\n this.annot = 'Annot';\n /**\n * Specifies the value of `P`.\n * @private\n */\n this.p = 'P';\n /**\n * Specifies the value of `C`.\n * @private\n */\n this.c = 'C';\n /**\n * Specifies the value of `Rect`.\n * @private\n */\n this.rect = 'Rect';\n /**\n * Specifies the value of `URI`.\n * @private\n */\n this.uri = 'URI';\n /**\n * Specifies the value of `Annots`.\n * @private\n */\n this.annots = 'Annots';\n /**\n * Specifies the value of `ca`.\n * @private\n */\n this.ca = 'ca';\n /**\n * Specifies the value of `CA`.\n * @private\n */\n this.CA = 'CA';\n /**\n * Specifies the value of `XYZ`.\n * @private\n */\n this.xyz = 'XYZ';\n /**\n * Specifies the value of `Fit`.\n * @private\n */\n this.fit = 'Fit';\n /**\n * Specifies the value of `Dest`.\n * @private\n */\n this.dest = 'Dest';\n /**\n * Specifies the value of `BM`.\n * @private\n */\n this.BM = 'BM';\n /**\n * Specifies the value of `flatedecode`.\n * @private\n */\n this.flatedecode = 'FlateDecode';\n /**\n * Specifies the value of `Rotate`.\n * @private\n */\n this.rotate = 'Rotate';\n /**\n * Specifies the value of 'bBox'.\n * @private\n */\n this.bBox = 'BBox';\n /**\n * Specifies the value of 'form'.\n * @private\n */\n this.form = 'Form';\n /**\n * Specifies the value of 'w'.\n * @private\n */\n this.w = 'W';\n /**\n * Specifies the value of 'cIDFontType2'.\n * @private\n */\n this.cIDFontType2 = 'CIDFontType2';\n /**\n * Specifies the value of 'cIDToGIDMap'.\n * @private\n */\n this.cIDToGIDMap = 'CIDToGIDMap';\n /**\n * Specifies the value of 'identity'.\n * @private\n */\n this.identity = 'Identity';\n /**\n * Specifies the value of 'dw'.\n * @private\n */\n this.dw = 'DW';\n /**\n * Specifies the value of 'fontDescriptor'.\n * @private\n */\n this.fontDescriptor = 'FontDescriptor';\n /**\n * Specifies the value of 'cIDSystemInfo'.\n * @private\n */\n this.cIDSystemInfo = 'CIDSystemInfo';\n /**\n * Specifies the value of 'fontName'.\n * @private\n */\n this.fontName = 'FontName';\n /**\n * Specifies the value of 'flags'.\n * @private\n */\n this.flags = 'Flags';\n /**\n * Specifies the value of 'fontBBox'.\n * @private\n */\n this.fontBBox = 'FontBBox';\n /**\n * Specifies the value of 'missingWidth'.\n * @private\n */\n this.missingWidth = 'MissingWidth';\n /**\n * Specifies the value of 'stemV'.\n * @private\n */\n this.stemV = 'StemV';\n /**\n * Specifies the value of 'italicAngle'.\n * @private\n */\n this.italicAngle = 'ItalicAngle';\n /**\n * Specifies the value of 'capHeight'.\n * @private\n */\n this.capHeight = 'CapHeight';\n /**\n * Specifies the value of 'ascent'.\n * @private\n */\n this.ascent = 'Ascent';\n /**\n * Specifies the value of 'descent'.\n * @private\n */\n this.descent = 'Descent';\n /**\n * Specifies the value of 'leading'.\n * @private\n */\n this.leading = 'Leading';\n /**\n * Specifies the value of 'avgWidth'.\n * @private\n */\n this.avgWidth = 'AvgWidth';\n /**\n * Specifies the value of 'fontFile2'.\n * @private\n */\n this.fontFile2 = 'FontFile2';\n /**\n * Specifies the value of 'maxWidth'.\n * @private\n */\n this.maxWidth = 'MaxWidth';\n /**\n * Specifies the value of 'xHeight'.\n * @private\n */\n this.xHeight = 'XHeight';\n /**\n * Specifies the value of 'stemH'.\n * @private\n */\n this.stemH = 'StemH';\n /**\n * Specifies the value of 'registry'.\n * @private\n */\n this.registry = 'Registry';\n /**\n * Specifies the value of 'ordering'.\n * @private\n */\n this.ordering = 'Ordering';\n /**\n * Specifies the value of 'supplement'.\n * @private\n */\n this.supplement = 'Supplement';\n /**\n * Specifies the value of 'type0'.\n * @private\n */\n this.type0 = 'Type0';\n /**\n * Specifies the value of 'identityH'.\n * @private\n */\n this.identityH = 'Identity-H';\n /**\n * Specifies the value of 'toUnicode'.\n * @private\n */\n this.toUnicode = 'ToUnicode';\n /**\n * Specifies the value of 'descendantFonts'.\n * @private\n */\n this.descendantFonts = 'DescendantFonts';\n /**\n * Specifies the value of 'background'.\n * @private\n */\n this.background = 'Background';\n /**\n * Specifies the value of 'shading'.\n * @private\n */\n this.shading = 'Shading';\n /**\n * Specifies the value of 'matrix'.\n * @private\n */\n this.matrix = 'Matrix';\n /**\n * Specifies the value of 'antiAlias'.\n * @private\n */\n this.antiAlias = 'AntiAlias';\n /**\n * Specifies the value of 'function'.\n * @private\n */\n this.function = 'Function';\n /**\n * Specifies the value of 'extend'.\n * @private\n */\n this.extend = 'Extend';\n /**\n * Specifies the value of 'shadingType'.\n * @private\n */\n this.shadingType = 'ShadingType';\n /**\n * Specifies the value of 'coords'.\n * @private\n */\n this.coords = 'Coords';\n /**\n * Specifies the value of 'domain'.\n * @private\n */\n this.domain = 'Domain';\n /**\n * Specifies the value of 'range'.\n * @private\n */\n this.range = 'Range';\n /**\n * Specifies the value of 'functionType'.\n * @private\n */\n this.functionType = 'FunctionType';\n /**\n * Specifies the value of 'bitsPerSample'.\n * @private\n */\n this.bitsPerSample = 'BitsPerSample';\n /**\n * Specifies the value of 'patternType'.\n * @private\n */\n this.patternType = 'PatternType';\n /**\n * Specifies the value of 'paintType'.\n * @private\n */\n this.paintType = 'PaintType';\n /**\n * Specifies the value of 'tilingType'.\n * @private\n */\n this.tilingType = 'TilingType';\n /**\n * Specifies the value of 'xStep'.\n * @private\n */\n this.xStep = 'XStep';\n /**\n * Specifies the value of 'yStep'.\n * @private\n */\n this.yStep = 'YStep';\n /**\n * Specifies the value of viewer preferences.\n * @private\n */\n this.viewerPreferences = 'ViewerPreferences';\n /**\n * Specifies the value of center window.\n * @private\n */\n this.centerWindow = 'CenterWindow';\n /**\n * Specifies the value of display title.\n * @private\n */\n this.displayTitle = 'DisplayTitle';\n /**\n * Specifies the value of fit window.\n * @private\n */\n this.fitWindow = 'FitWindow';\n /**\n * Specifies the value of hide menu bar.\n * @private\n */\n this.hideMenuBar = 'HideMenubar';\n /**\n * Specifies the value of hide tool bar.\n * @private\n */\n this.hideToolBar = 'HideToolbar';\n /**\n * Specifies the value of hide window UI.\n * @private\n */\n this.hideWindowUI = 'HideWindowUI';\n /**\n * Specifies the value of page mode.\n * @private\n */\n this.pageMode = 'PageMode';\n /**\n * Specifies the value of page layout.\n * @private\n */\n this.pageLayout = 'PageLayout';\n /**\n * Specifies the value of duplex.\n * @private\n */\n this.duplex = 'Duplex';\n /**\n * Specifies the value of print scaling.\n * @private\n */\n this.printScaling = 'PrintScaling';\n //\n }\n return DictionaryProperties;\n}());\nexport { DictionaryProperties };\n","import { Dictionary } from './../collections/dictionary';\nimport { PdfName } from './pdf-name';\nimport { Operators } from './../input-output/pdf-operators';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * `PdfDictionary` class is used to perform primitive operations.\n * @private\n */\nvar PdfDictionary = /** @class */ (function () {\n function PdfDictionary(dictionary) {\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position7 = -1;\n /**\n * The `IPdfSavable` with the specified key.\n * @private\n */\n this.primitiveItems = new Dictionary();\n /**\n * `Start marker` for dictionary.\n * @private\n */\n this.prefix = '<<';\n /**\n * `End marker` for dictionary.\n * @private\n */\n this.suffix = '>>';\n /**\n * @hidden\n * @private\n */\n this.resources = [];\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.object = null;\n /**\n * Flag for PDF file formar 1.5 is dictionary `archiving` needed.\n * @default true\n * @private\n */\n this.archive = true;\n /**\n * Represents the Font dictionary.\n * @hidden\n * @private\n */\n this.isResource = false;\n if (typeof dictionary === 'undefined') {\n this.primitiveItems = new Dictionary();\n this.encrypt = true;\n this.dictionaryProperties = new DictionaryProperties();\n }\n else {\n this.primitiveItems = new Dictionary();\n var keys = dictionary.items.keys();\n var values = dictionary.items.values();\n for (var index = 0; index < dictionary.items.size(); index++) {\n this.primitiveItems.setValue(keys[index], values[index]);\n }\n this.status = dictionary.status;\n this.freezeChanges(this);\n this.encrypt = true;\n this.dictionaryProperties = new DictionaryProperties();\n }\n }\n Object.defineProperty(PdfDictionary.prototype, \"items\", {\n //Properties\n /**\n * Gets or sets the `IPdfSavable` with the specified key.\n * @private\n */\n get: function () {\n return this.primitiveItems;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status7;\n },\n set: function (value) {\n this.status7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving7;\n },\n set: function (value) {\n this.isSaving7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index7;\n },\n set: function (value) {\n this.index7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.object;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position7;\n },\n set: function (value) {\n this.position7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"Count\", {\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.primitiveItems.size();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"Dictionary\", {\n /**\n * Collection of `items` in the object.\n * @private\n */\n get: function () {\n return this;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Get flag if need to `archive` dictionary.\n * @private\n */\n PdfDictionary.prototype.getArchive = function () {\n return this.archive;\n };\n /**\n * Set flag if need to `archive` dictionary.\n * @private\n */\n PdfDictionary.prototype.setArchive = function (value) {\n this.archive = value;\n };\n /**\n * Sets flag if `encryption` is needed.\n * @private\n */\n PdfDictionary.prototype.setEncrypt = function (value) {\n this.encrypt = value;\n this.modify();\n };\n /**\n * Gets flag if `encryption` is needed.\n * @private\n */\n PdfDictionary.prototype.getEncrypt = function () {\n return this.encrypt;\n };\n /**\n * `Freezes` the changes.\n * @private\n */\n PdfDictionary.prototype.freezeChanges = function (freezer) {\n this.bChanged = false;\n };\n /**\n * Creates a `copy of PdfDictionary`.\n * @private\n */\n PdfDictionary.prototype.clone = function (crossTable) {\n //Need to add more codings\n var newDict = new PdfDictionary();\n return newDict;\n };\n /**\n * `Mark` this instance modified.\n * @private\n */\n PdfDictionary.prototype.modify = function () {\n this.bChanged = true;\n };\n /**\n * `Removes` the specified key.\n * @private\n */\n PdfDictionary.prototype.remove = function (key) {\n if (typeof key !== 'string') {\n this.primitiveItems.remove(key.value);\n this.modify();\n }\n else {\n this.remove(new PdfName(key));\n }\n };\n /**\n * `Determines` whether the dictionary contains the key.\n * @private\n */\n PdfDictionary.prototype.containsKey = function (key) {\n var returnValue = false;\n returnValue = this.primitiveItems.containsKey(key.toString());\n return returnValue;\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onBeginSave = function () {\n this.beginSave.sender.beginSave();\n };\n /**\n * Raises event `Font Dictionary BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onFontDictionaryBeginSave = function () {\n this.fontDictionaryBeginSave.sender.fontDictionaryBeginSave();\n };\n /**\n * Raises event `Descendant Font BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onDescendantFontBeginSave = function () {\n this.descendantFontBeginSave.sender.descendantFontBeginSave();\n };\n /**\n * Raises event 'BeginSave'.\n * @private\n */\n PdfDictionary.prototype.onTemplateBeginSave = function () {\n this.pageBeginDrawTemplate.sender.pageBeginSave();\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onBeginAnnotationSave = function () {\n this.annotationBeginSave.sender.beginSave();\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onSectionBeginSave = function (writer) {\n var saveEvent = this.sectionBeginSave;\n saveEvent.sender.beginSave(saveEvent.state, writer);\n };\n PdfDictionary.prototype.save = function (writer, bRaiseEvent) {\n if (typeof bRaiseEvent === 'undefined') {\n this.save(writer, true);\n }\n else {\n writer.write(this.prefix);\n if (typeof this.beginSave !== 'undefined') {\n this.onBeginSave();\n }\n if (typeof this.descendantFontBeginSave !== 'undefined') {\n this.onDescendantFontBeginSave();\n }\n if (typeof this.fontDictionaryBeginSave !== 'undefined') {\n this.onFontDictionaryBeginSave();\n }\n if (typeof this.annotationBeginSave !== 'undefined') {\n this.onBeginAnnotationSave();\n }\n if (typeof this.sectionBeginSave !== 'undefined') {\n this.onSectionBeginSave(writer);\n }\n if (typeof this.pageBeginDrawTemplate !== 'undefined') {\n this.onTemplateBeginSave();\n }\n // }\n if (this.Count > 0) {\n this.saveItems(writer);\n }\n writer.write(this.suffix);\n writer.write(Operators.newLine);\n }\n };\n /**\n * `Save dictionary items`.\n * @private\n */\n PdfDictionary.prototype.saveItems = function (writer) {\n writer.write(Operators.newLine);\n var keys = this.primitiveItems.keys();\n var values = this.primitiveItems.values();\n for (var index = 0; index < keys.length; index++) {\n var key = keys[index];\n var name_1 = new PdfName(key);\n name_1.save(writer);\n writer.write(Operators.whiteSpace);\n var resources = values[index];\n resources.save(writer);\n writer.write(Operators.newLine);\n }\n };\n return PdfDictionary;\n}());\nexport { PdfDictionary };\nvar SaveSectionCollectionEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveSectionCollectionEventHandler(sender) {\n this.sender = sender;\n }\n return SaveSectionCollectionEventHandler;\n}());\nexport { SaveSectionCollectionEventHandler };\nvar SaveDescendantFontEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveDescendantFontEventHandler(sender) {\n this.sender = sender;\n }\n return SaveDescendantFontEventHandler;\n}());\nexport { SaveDescendantFontEventHandler };\nvar SaveFontDictionaryEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveFontDictionaryEventHandler(sender) {\n this.sender = sender;\n }\n return SaveFontDictionaryEventHandler;\n}());\nexport { SaveFontDictionaryEventHandler };\nvar SaveAnnotationEventHandler = /** @class */ (function () {\n /**\n * New instance for `save annotation event handler` class.\n * @private\n */\n function SaveAnnotationEventHandler(sender) {\n this.sender = sender;\n }\n return SaveAnnotationEventHandler;\n}());\nexport { SaveAnnotationEventHandler };\nvar SaveSectionEventHandler = /** @class */ (function () {\n // constructors\n /**\n * New instance for `save section event handler` class.\n * @private\n */\n function SaveSectionEventHandler(sender, state) {\n this.sender = sender;\n this.state = state;\n }\n return SaveSectionEventHandler;\n}());\nexport { SaveSectionEventHandler };\n/**\n * SaveTemplateEventHandler class used to store information about template elements.\n * @private\n * @hidden\n */\nvar SaveTemplateEventHandler = /** @class */ (function () {\n /**\n * New instance for save section collection event handler class.\n * @public\n */\n function SaveTemplateEventHandler(sender) {\n this.sender = sender;\n }\n return SaveTemplateEventHandler;\n}());\nexport { SaveTemplateEventHandler };\n","/**\n * `PdfNumber` class is used to perform number related primitive operations.\n * @private\n */\nvar PdfNumber = /** @class */ (function () {\n /**\n * Initializes a new instance of the `PdfNumber` class.\n * @private\n */\n function PdfNumber(value) {\n /**\n * Sotres the `position`.\n * @default -1\n * @private\n */\n this.position5 = -1;\n this.value = value;\n }\n Object.defineProperty(PdfNumber.prototype, \"intValue\", {\n /**\n * Gets or sets the `integer` value.\n * @private\n */\n get: function () {\n return this.value;\n },\n set: function (value) {\n this.value = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"isInteger\", {\n /**\n * Gets or sets a value indicating whether this instance `is integer`.\n * @private\n */\n get: function () {\n return this.integer;\n },\n set: function (value) {\n this.integer = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status5;\n },\n set: function (value) {\n this.status5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving5;\n },\n set: function (value) {\n this.isSaving5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index5;\n },\n set: function (value) {\n this.index5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position5;\n },\n set: function (value) {\n this.position5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n var rValue = null;\n return rValue;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Saves the object`.\n * @private\n */\n PdfNumber.prototype.save = function (writer) {\n writer.write(this.intValue.toString()); //tostring(CultureInfo.InletiantCulture)\n };\n /**\n * Creates a `copy of PdfNumber`.\n * @private\n */\n PdfNumber.prototype.clone = function (crossTable) {\n var newNumber = new PdfNumber(this.value);\n return newNumber;\n };\n /**\n * Converts a `float value to a string` using Adobe PDF rules.\n * @private\n */\n PdfNumber.floatToString = function (number) {\n // let tempString1 : string = number.toString();\n // let tempString2 : string = tempString1.indexOf('.') != -1 ? tempString1.substring(0, tempString1.indexOf('.')) : tempString1;\n var returnString = number.toFixed(2);\n if (returnString === '0.00') {\n returnString = '.00';\n }\n // let prefixLength : number = (22 - tempString2.length) >= 0 ? (22 - tempString2.length) : 0;\n // for (let index : number = 0; index < prefixLength; index++) {\n // returnString += '0';\n // }\n // returnString += tempString2 + '.00';\n // returnString += (tempString3.length > 6) ? tempString3.substring(0,6) : tempString3;\n // let suffixLength : number = (6 - tempString3.length) >= 0 ? (6 - tempString3.length) : 0;\n // for (let index : number = 0; index < suffixLength; index++) {\n // returnString += '0';\n // }\n return returnString;\n };\n /**\n * Determines the `minimum of the three values`.\n * @private\n */\n PdfNumber.min = function (x, y, z) {\n var r = Math.min(x, y);\n return Math.min(z, r);\n };\n return PdfNumber;\n}());\nexport { PdfNumber };\n","import { PdfNumber } from './pdf-number';\nimport { Operators } from './../input-output/pdf-operators';\n/**\n * `PdfArray` class is used to perform array related primitive operations.\n * @private\n */\nvar PdfArray = /** @class */ (function () {\n function PdfArray(array) {\n //Fields\n /**\n * `startMark` - '['\n * @private\n */\n this.startMark = '[';\n /**\n * `endMark` - ']'.\n * @private\n */\n this.endMark = ']';\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position9 = -1;\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.clonedObject9 = null;\n /**\n * Represents the Font dictionary.\n * @hidden\n * @private\n */\n this.isFont = false;\n if (typeof array === 'undefined') {\n this.internalElements = [];\n }\n else {\n if (typeof array !== 'undefined' && !(array instanceof PdfArray)) {\n var tempNumberArray = array;\n for (var index = 0; index < tempNumberArray.length; index++) {\n var pdfNumber = new PdfNumber(tempNumberArray[index]);\n this.add(pdfNumber);\n }\n // } else if (typeof array !== 'undefined' && (array instanceof PdfArray)) {\n }\n else {\n var tempArray = array;\n // if (tempArray.Elements.length > 0) {\n this.internalElements = [];\n for (var index = 0; index < tempArray.elements.length; index++) {\n this.internalElements.push(tempArray.elements[index]);\n }\n // }\n }\n }\n }\n //property\n /**\n * Gets the `IPdfSavable` at the specified index.\n * @private\n */\n PdfArray.prototype.items = function (index) {\n // if (index < 0 || index >= this.Count) {\n // throw new Error('ArgumentOutOfRangeException : index, The index can\"t be less then zero or greater then Count.');\n // }\n return this.internalElements[index];\n };\n Object.defineProperty(PdfArray.prototype, \"count\", {\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.internalElements.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status9;\n },\n set: function (value) {\n this.status9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving9;\n },\n set: function (value) {\n this.isSaving9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.clonedObject9;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position9;\n },\n set: function (value) {\n this.position9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index9;\n },\n set: function (value) {\n this.index9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"CrossTable\", {\n /**\n * Returns `PdfCrossTable` associated with the object.\n * @private\n */\n get: function () {\n return this.pdfCrossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"elements\", {\n /**\n * Gets the `elements` of the Pdf Array.\n * @private\n */\n get: function () {\n return this.internalElements;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Adds` the specified element to the PDF array.\n * @private\n */\n PdfArray.prototype.add = function (element) {\n // if (element === null) {\n // throw new Error('ArgumentNullException : obj');\n // }\n if (typeof this.internalElements === 'undefined') {\n this.internalElements = [];\n }\n this.internalElements.push(element);\n this.markedChange();\n };\n /**\n * `Marks` the object changed.\n * @private\n */\n PdfArray.prototype.markedChange = function () {\n this.bChanged = true;\n };\n /**\n * `Determines` whether the specified element is within the array.\n * @private\n */\n PdfArray.prototype.contains = function (element) {\n var returnValue = false;\n for (var index = 0; index < this.internalElements.length; index++) {\n var tempElement = this.internalElements[index];\n var inputElement = element;\n if (tempElement != null && typeof tempElement !== 'undefined' && inputElement != null && typeof inputElement !== 'undefined') {\n if (tempElement.value === inputElement.value) {\n return true;\n }\n }\n // if (this.internalElements[index] === element) {\n // returnValue = true;\n // }\n }\n return returnValue;\n };\n /**\n * Returns the `primitive object` of input index.\n * @private\n */\n PdfArray.prototype.getItems = function (index) {\n // if (index < 0 || index >= this.Count) {\n // throw new Error('ArgumentOutOfRangeException : index , The index can\"t be less then zero or greater then Count.');\n // }\n return this.internalElements[index];\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfArray.prototype.save = function (writer) {\n // if (writer === null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n writer.write(this.startMark);\n for (var i = 0, len = this.count; i < len; i++) {\n this.getItems(i).save(writer);\n if (i + 1 !== len) {\n writer.write(Operators.whiteSpace);\n }\n }\n writer.write(this.endMark);\n };\n /**\n * Creates a `copy of PdfArray`.\n * @private\n */\n PdfArray.prototype.clone = function (crossTable) {\n // if (this.clonedObject9 !== null && this.clonedObject9.CrossTable === crossTable) {\n // return this.clonedObject9;\n // } else {\n this.clonedObject9 = null;\n // Else clone the object.\n var newArray = new PdfArray();\n for (var index = 0; index < this.internalElements.length; index++) {\n var obj = this.internalElements[index];\n newArray.add(obj.clone(crossTable));\n }\n newArray.pdfCrossTable = crossTable;\n this.clonedObject9 = newArray;\n return newArray;\n };\n /**\n * Creates filled PDF array `from the rectangle`.\n * @private\n */\n PdfArray.fromRectangle = function (bounds) {\n var values = [bounds.x, bounds.y, bounds.width, bounds.height];\n var array = new PdfArray(values);\n return array;\n };\n // /**\n // * Creates the rectangle from filled PDF array.\n // * @private\n // */\n // public ToRectangle() : RectangleF {\n // if (this.Count < 4) {\n // throw Error('InvalidOperationException-Can not convert to rectangle.');\n // }\n // let x1 : number;\n // let x2 : number;\n // let y1 : number;\n // let y2 : number;\n // let num : PdfNumber = this.getItems(0) as PdfNumber;\n // x1 = num.IntValue;\n // num = this.getItems(1) as PdfNumber;\n // y1 = num.IntValue;\n // num = this.getItems(2) as PdfNumber;\n // x2 = num.IntValue;\n // num = this.getItems(3) as PdfNumber;\n // y2 = num.IntValue;\n // let x : number = Math.min(x1, x2);\n // let y : number = Math.min(y1, y2);\n // let width : number = Math.abs(x1 - x2);\n // let height : number = Math.abs(y1 - y2);\n // let rect : RectangleF = new RectangleF(new PointF(x, y), new SizeF(width, height));\n // return rect;\n // }\n /**\n * `Inserts` the element into the array.\n * @private\n */\n PdfArray.prototype.insert = function (index, element) {\n if (index < this.internalElements.length && index > 0) {\n var tempElements = [];\n for (var i = 0; i < index; i++) {\n tempElements.push(this.internalElements[i]);\n }\n tempElements.push(element);\n for (var i = index; i < this.internalElements.length; i++) {\n tempElements.push(this.internalElements[i]);\n }\n this.internalElements = tempElements;\n }\n else {\n this.internalElements.push(element);\n }\n this.markChanged();\n };\n /**\n * `Checks whether array contains the element`.\n * @private\n */\n PdfArray.prototype.indexOf = function (element) {\n return this.internalElements.indexOf(element);\n };\n /**\n * `Removes` element from the array.\n * @private\n */\n PdfArray.prototype.remove = function (element) {\n // if (element === null) {\n // throw new Error('ArgumentNullException : element');\n // }\n var index = this.internalElements.indexOf(element);\n // if (index >= 0 && index < this.internalElements.length) {\n this.internalElements[index] = null;\n // }\n this.markChanged();\n };\n /**\n * `Remove` the element from the array by its index.\n * @private\n */\n PdfArray.prototype.removeAt = function (index) {\n // this.internalElements.RemoveAt(index);\n if (this.internalElements.length > index) {\n var tempArray = [];\n for (var i = 0; i < index; i++) {\n tempArray.push(this.internalElements[i]);\n }\n for (var i = index + 1; i < this.internalElements.length; i++) {\n tempArray.push(this.internalElements[i]);\n }\n this.internalElements = tempArray;\n }\n this.markChanged();\n };\n /**\n * `Clear` the array.\n * @private\n */\n PdfArray.prototype.clear = function () {\n this.internalElements = [];\n this.markChanged();\n };\n /**\n * `Marks` the object changed.\n * @private\n */\n PdfArray.prototype.markChanged = function () {\n this.bChanged = true;\n };\n return PdfArray;\n}());\nexport { PdfArray };\n","/* eslint-disable */\nimport { Encoding } from '@syncfusion/ej2-file-utils';\n/**\n * array literal codes\n */\nvar ARR_LITERAL_CODES = new Int16Array(286);\nvar ARR_LITERAL_LENGTHS = new Uint8Array(286);\nvar ARR_DISTANCE_CODES = new Int16Array(30);\nvar ARR_DISTANCE_LENGTHS = new Uint8Array(30);\n/**\n * represent compression stream writer\n * ```typescript\n * let compressedWriter = new CompressedStreamWriter();\n * let text: string = 'Hello world!!!';\n * compressedWriter.write(text, 0, text.length);\n * compressedWriter.close();\n * ```\n */\nvar CompressedStreamWriter = /** @class */ (function () {\n /**\n * Initializes compressor and writes ZLib header if needed.\n * @param {boolean} noWrap - optional if true, ZLib header and checksum will not be written.\n */\n function CompressedStreamWriter(noWrap) {\n this.pendingBuffer = new Uint8Array(1 << 16);\n this.pendingBufLength = 0;\n this.pendingBufCache = 0;\n this.pendingBufBitsInCache = 0;\n this.bufferPosition = 0;\n this.extraBits = 0;\n this.currentHash = 0;\n this.matchStart = 0;\n this.matchLength = 0;\n this.matchPrevAvail = false;\n this.blockStart = 0;\n this.stringStart = 0;\n this.lookAhead = 0;\n this.totalBytesIn = 0;\n this.inputOffset = 0;\n this.inputEnd = 0;\n this.windowSize = 1 << 15;\n this.windowMask = this.windowSize - 1;\n this.hashSize = 1 << 15;\n this.hashMask = this.hashSize - 1;\n this.hashShift = Math.floor((15 + 3 - 1) / 3);\n this.maxDist = this.windowSize - 262;\n this.checkSum = 1;\n this.noWrap = false;\n if (!CompressedStreamWriter.isHuffmanTreeInitiated) {\n CompressedStreamWriter.initHuffmanTree();\n CompressedStreamWriter.isHuffmanTreeInitiated = true;\n }\n this.treeLiteral = new CompressorHuffmanTree(this, 286, 257, 15);\n this.treeDistances = new CompressorHuffmanTree(this, 30, 1, 15);\n this.treeCodeLengths = new CompressorHuffmanTree(this, 19, 4, 7);\n this.arrDistances = new Uint16Array((1 << 14));\n this.arrLiterals = new Uint8Array((1 << 14));\n this.stream = [];\n this.dataWindow = new Uint8Array(2 * this.windowSize);\n this.hashHead = new Int16Array(this.hashSize);\n this.hashPrevious = new Int16Array(this.windowSize);\n this.blockStart = this.stringStart = 1;\n this.noWrap = noWrap;\n if (!noWrap) {\n this.writeZLibHeader();\n }\n }\n Object.defineProperty(CompressedStreamWriter.prototype, \"compressedData\", {\n /**\n * get compressed data\n */\n get: function () {\n return this.stream;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressedStreamWriter.prototype, \"getCompressedString\", {\n get: function () {\n var compressedString = '';\n if (this.stream !== undefined) {\n for (var i = 0; i < this.stream.length; i++) {\n compressedString += String.fromCharCode.apply(null, this.stream[i]);\n }\n }\n return compressedString;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Compresses data and writes it to the stream.\n * @param {Uint8Array} data - data to compress\n * @param {number} offset - offset in data\n * @param {number} length - length of the data\n * @returns {void}\n */\n CompressedStreamWriter.prototype.write = function (data, offset, length) {\n if (data === undefined || data === null) {\n throw new Error('ArgumentException: data cannot null or undefined');\n }\n var end = offset + length;\n if (0 > offset || offset > end || end > data.length) {\n throw new Error('ArgumentOutOfRangeException: Offset or length is incorrect');\n }\n if (typeof data === 'string') {\n var encode = new Encoding(false);\n encode.type = 'Utf8';\n data = new Uint8Array(encode.getBytes(data, 0, data.length));\n end = offset + data.length;\n }\n this.inputBuffer = data;\n this.inputOffset = offset;\n this.inputEnd = end;\n if (!this.noWrap) {\n this.checkSum = ChecksumCalculator.checksumUpdate(this.checkSum, this.inputBuffer, this.inputOffset, end);\n }\n while (!(this.inputEnd === this.inputOffset) || !(this.pendingBufLength === 0)) {\n this.pendingBufferFlush();\n this.compressData(false);\n }\n };\n /**\n * write ZLib header to the compressed data\n * @return {void}\n */\n CompressedStreamWriter.prototype.writeZLibHeader = function () {\n /* Initialize header.*/\n var headerDate = (8 + (7 << 4)) << 8;\n /* Save compression level.*/\n headerDate |= ((5 >> 2) & 3) << 6;\n /* Align header.*/\n headerDate += 31 - (headerDate % 31);\n /* Write header to stream.*/\n this.pendingBufferWriteShortBytes(headerDate);\n };\n /**\n * Write Most Significant Bytes in to stream\n * @param {number} s - check sum value\n */\n CompressedStreamWriter.prototype.pendingBufferWriteShortBytes = function (s) {\n this.pendingBuffer[this.pendingBufLength++] = s >> 8;\n this.pendingBuffer[this.pendingBufLength++] = s;\n };\n CompressedStreamWriter.prototype.compressData = function (finish) {\n var success;\n do {\n this.fillWindow();\n var canFlush = (finish && this.inputEnd === this.inputOffset);\n success = this.compressSlow(canFlush, finish);\n } while (this.pendingBufLength === 0 && success);\n return success;\n };\n CompressedStreamWriter.prototype.compressSlow = function (flush, finish) {\n if (this.lookAhead < 262 && !flush) {\n return false;\n }\n while (this.lookAhead >= 262 || flush) {\n if (this.lookAhead === 0) {\n return this.lookAheadCompleted(finish);\n }\n if (this.stringStart >= 2 * this.windowSize - 262) {\n this.slideWindow();\n }\n var prevMatch = this.matchStart;\n var prevLen = this.matchLength;\n if (this.lookAhead >= 3) {\n this.discardMatch();\n }\n if (prevLen >= 3 && this.matchLength <= prevLen) {\n prevLen = this.matchPreviousBest(prevMatch, prevLen);\n }\n else {\n this.matchPreviousAvailable();\n }\n if (this.bufferPosition >= (1 << 14)) {\n return this.huffmanIsFull(finish);\n }\n }\n return true;\n };\n CompressedStreamWriter.prototype.discardMatch = function () {\n var hashHead = this.insertString();\n if (hashHead !== 0 && this.stringStart - hashHead <= this.maxDist && this.findLongestMatch(hashHead)) {\n if (this.matchLength <= 5 && (this.matchLength === 3 && this.stringStart - this.matchStart > 4096)) {\n this.matchLength = 3 - 1;\n }\n }\n };\n CompressedStreamWriter.prototype.matchPreviousAvailable = function () {\n if (this.matchPrevAvail) {\n this.huffmanTallyLit(this.dataWindow[this.stringStart - 1] & 0xff);\n }\n this.matchPrevAvail = true;\n this.stringStart++;\n this.lookAhead--;\n };\n CompressedStreamWriter.prototype.matchPreviousBest = function (prevMatch, prevLen) {\n this.huffmanTallyDist(this.stringStart - 1 - prevMatch, prevLen);\n prevLen -= 2;\n do {\n this.stringStart++;\n this.lookAhead--;\n if (this.lookAhead >= 3) {\n this.insertString();\n }\n } while (--prevLen > 0);\n this.stringStart++;\n this.lookAhead--;\n this.matchPrevAvail = false;\n this.matchLength = 3 - 1;\n return prevLen;\n };\n CompressedStreamWriter.prototype.lookAheadCompleted = function (finish) {\n if (this.matchPrevAvail) {\n this.huffmanTallyLit(this.dataWindow[this.stringStart - 1] & 0xff);\n }\n this.matchPrevAvail = false;\n this.huffmanFlushBlock(this.dataWindow, this.blockStart, this.stringStart - this.blockStart, finish);\n this.blockStart = this.stringStart;\n return false;\n };\n CompressedStreamWriter.prototype.huffmanIsFull = function (finish) {\n var len = this.stringStart - this.blockStart;\n if (this.matchPrevAvail) {\n len--;\n }\n var lastBlock = (finish && this.lookAhead === 0 && !this.matchPrevAvail);\n this.huffmanFlushBlock(this.dataWindow, this.blockStart, len, lastBlock);\n this.blockStart += len;\n return !lastBlock;\n };\n CompressedStreamWriter.prototype.fillWindow = function () {\n if (this.stringStart >= this.windowSize + this.maxDist) {\n this.slideWindow();\n }\n while (this.lookAhead < 262 && this.inputOffset < this.inputEnd) {\n var more = 2 * this.windowSize - this.lookAhead - this.stringStart;\n if (more > this.inputEnd - this.inputOffset) {\n more = this.inputEnd - this.inputOffset;\n }\n this.dataWindow.set(this.inputBuffer.subarray(this.inputOffset, this.inputOffset + more), this.stringStart + this.lookAhead);\n this.inputOffset += more;\n this.totalBytesIn += more;\n this.lookAhead += more;\n }\n if (this.lookAhead >= 3) {\n this.updateHash();\n }\n };\n CompressedStreamWriter.prototype.slideWindow = function () {\n this.dataWindow.set(this.dataWindow.subarray(this.windowSize, this.windowSize + this.windowSize), 0);\n this.matchStart -= this.windowSize;\n this.stringStart -= this.windowSize;\n this.blockStart -= this.windowSize;\n for (var i = 0; i < this.hashSize; ++i) {\n var m = this.hashHead[i] & 0xffff;\n this.hashHead[i] = (((m >= this.windowSize) ? (m - this.windowSize) : 0));\n }\n for (var i = 0; i < this.windowSize; i++) {\n var m = this.hashPrevious[i] & 0xffff;\n this.hashPrevious[i] = ((m >= this.windowSize) ? (m - this.windowSize) : 0);\n }\n };\n CompressedStreamWriter.prototype.insertString = function () {\n var match;\n var hash = ((this.currentHash << this.hashShift) ^ this.dataWindow[this.stringStart + (3 - 1)]) & this.hashMask;\n this.hashPrevious[this.stringStart & this.windowMask] = match = this.hashHead[hash];\n this.hashHead[hash] = this.stringStart;\n this.currentHash = hash;\n return match & 0xffff;\n };\n CompressedStreamWriter.prototype.findLongestMatch = function (curMatch) {\n var chainLen = 4096;\n var niceLen = 258;\n var scan = this.stringStart;\n var match;\n var bestEnd = this.stringStart + this.matchLength;\n var bestLength = Math.max(this.matchLength, 3 - 1);\n var limit = Math.max(this.stringStart - this.maxDist, 0);\n var stringEnd = this.stringStart + 258 - 1;\n var scanEnd1 = this.dataWindow[bestEnd - 1];\n var scanEnd = this.dataWindow[bestEnd];\n var data = this.dataWindow;\n if (bestLength >= 32) {\n chainLen >>= 2;\n }\n if (niceLen > this.lookAhead) {\n niceLen = this.lookAhead;\n }\n do {\n if (data[curMatch + bestLength] !== scanEnd ||\n data[curMatch + bestLength - 1] !== scanEnd1 ||\n data[curMatch] !== data[scan] ||\n data[curMatch + 1] !== data[scan + 1]) {\n continue;\n }\n match = curMatch + 2;\n scan += 2;\n /* tslint:disable */\n while (data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] && scan < stringEnd) {\n /* tslint:disable */\n }\n if (scan > bestEnd) {\n this.matchStart = curMatch;\n bestEnd = scan;\n bestLength = scan - this.stringStart;\n if (bestLength >= niceLen) {\n break;\n }\n scanEnd1 = data[bestEnd - 1];\n scanEnd = data[bestEnd];\n }\n scan = this.stringStart;\n } while ((curMatch = (this.hashPrevious[curMatch & this.windowMask] & 0xffff)) > limit && --chainLen !== 0);\n this.matchLength = Math.min(bestLength, this.lookAhead);\n return this.matchLength >= 3;\n };\n CompressedStreamWriter.prototype.updateHash = function () {\n this.currentHash = (this.dataWindow[this.stringStart] << this.hashShift) ^ this.dataWindow[this.stringStart + 1];\n };\n CompressedStreamWriter.prototype.huffmanTallyLit = function (literal) {\n this.arrDistances[this.bufferPosition] = 0;\n this.arrLiterals[this.bufferPosition++] = literal;\n this.treeLiteral.codeFrequencies[literal]++;\n return this.bufferPosition >= (1 << 14);\n };\n CompressedStreamWriter.prototype.huffmanTallyDist = function (dist, len) {\n this.arrDistances[this.bufferPosition] = dist;\n this.arrLiterals[this.bufferPosition++] = (len - 3);\n var lc = this.huffmanLengthCode(len - 3);\n this.treeLiteral.codeFrequencies[lc]++;\n if (lc >= 265 && lc < 285) {\n this.extraBits += Math.floor((lc - 261) / 4);\n }\n var dc = this.huffmanDistanceCode(dist - 1);\n this.treeDistances.codeFrequencies[dc]++;\n if (dc >= 4) {\n this.extraBits += Math.floor((dc / 2 - 1));\n }\n return this.bufferPosition >= (1 << 14);\n };\n CompressedStreamWriter.prototype.huffmanFlushBlock = function (stored, storedOffset, storedLength, lastBlock) {\n this.treeLiteral.codeFrequencies[256]++;\n this.treeLiteral.buildTree();\n this.treeDistances.buildTree();\n this.treeLiteral.calculateBLFreq(this.treeCodeLengths);\n this.treeDistances.calculateBLFreq(this.treeCodeLengths);\n this.treeCodeLengths.buildTree();\n var blTreeCodes = 4;\n for (var i = 18; i > blTreeCodes; i--) {\n if (this.treeCodeLengths.codeLengths[CompressorHuffmanTree.huffCodeLengthOrders[i]] > 0) {\n blTreeCodes = i + 1;\n }\n }\n var opt_len = 14 + blTreeCodes * 3 + this.treeCodeLengths.getEncodedLength() +\n this.treeLiteral.getEncodedLength() + this.treeDistances.getEncodedLength() + this.extraBits;\n var static_len = this.extraBits;\n for (var i = 0; i < 286; i++) {\n static_len += this.treeLiteral.codeFrequencies[i] * ARR_LITERAL_LENGTHS[i];\n }\n for (var i = 0; i < 30; i++) {\n static_len += this.treeDistances.codeFrequencies[i] * ARR_DISTANCE_LENGTHS[i];\n }\n if (opt_len >= static_len) {\n // Force static trees.\n opt_len = static_len;\n }\n if (storedOffset >= 0 && storedLength + 4 < opt_len >> 3) {\n this.huffmanFlushStoredBlock(stored, storedOffset, storedLength, lastBlock);\n }\n else if (opt_len == static_len) {\n // Encode with static tree.\n this.pendingBufferWriteBits((1 << 1) + (lastBlock ? 1 : 0), 3);\n this.treeLiteral.setStaticCodes(ARR_LITERAL_CODES, ARR_LITERAL_LENGTHS);\n this.treeDistances.setStaticCodes(ARR_DISTANCE_CODES, ARR_DISTANCE_LENGTHS);\n this.huffmanCompressBlock();\n this.huffmanReset();\n }\n else {\n this.pendingBufferWriteBits((2 << 1) + (lastBlock ? 1 : 0), 3);\n this.huffmanSendAllTrees(blTreeCodes);\n this.huffmanCompressBlock();\n this.huffmanReset();\n }\n };\n CompressedStreamWriter.prototype.huffmanFlushStoredBlock = function (stored, storedOffset, storedLength, lastBlock) {\n this.pendingBufferWriteBits((0 << 1) + (lastBlock ? 1 : 0), 3);\n this.pendingBufferAlignToByte();\n this.pendingBufferWriteShort(storedLength);\n this.pendingBufferWriteShort(~storedLength);\n this.pendingBufferWriteByteBlock(stored, storedOffset, storedLength);\n this.huffmanReset();\n };\n CompressedStreamWriter.prototype.huffmanLengthCode = function (len) {\n if (len === 255) {\n return 285;\n }\n var code = 257;\n while (len >= 8) {\n code += 4;\n len >>= 1;\n }\n return code + len;\n };\n CompressedStreamWriter.prototype.huffmanDistanceCode = function (distance) {\n var code = 0;\n while (distance >= 4) {\n code += 2;\n distance >>= 1;\n }\n return code + distance;\n };\n CompressedStreamWriter.prototype.huffmanSendAllTrees = function (blTreeCodes) {\n this.treeCodeLengths.buildCodes();\n this.treeLiteral.buildCodes();\n this.treeDistances.buildCodes();\n this.pendingBufferWriteBits(this.treeLiteral.treeLength - 257, 5);\n this.pendingBufferWriteBits(this.treeDistances.treeLength - 1, 5);\n this.pendingBufferWriteBits(blTreeCodes - 4, 4);\n for (var rank = 0; rank < blTreeCodes; rank++) {\n this.pendingBufferWriteBits(this.treeCodeLengths.codeLengths[CompressorHuffmanTree.huffCodeLengthOrders[rank]], 3);\n }\n this.treeLiteral.writeTree(this.treeCodeLengths);\n this.treeDistances.writeTree(this.treeCodeLengths);\n };\n CompressedStreamWriter.prototype.huffmanReset = function () {\n this.bufferPosition = 0;\n this.extraBits = 0;\n this.treeLiteral.reset();\n this.treeDistances.reset();\n this.treeCodeLengths.reset();\n };\n CompressedStreamWriter.prototype.huffmanCompressBlock = function () {\n for (var i = 0; i < this.bufferPosition; i++) {\n var literalLen = this.arrLiterals[i] & 255;\n var dist = this.arrDistances[i];\n if (dist-- !== 0) {\n var lc = this.huffmanLengthCode(literalLen);\n this.treeLiteral.writeCodeToStream(lc);\n var bits = Math.floor((lc - 261) / 4);\n if (bits > 0 && bits <= 5) {\n this.pendingBufferWriteBits(literalLen & ((1 << bits) - 1), bits);\n }\n var dc = this.huffmanDistanceCode(dist);\n this.treeDistances.writeCodeToStream(dc);\n bits = Math.floor(dc / 2 - 1);\n if (bits > 0) {\n this.pendingBufferWriteBits(dist & ((1 << bits) - 1), bits);\n }\n }\n else {\n this.treeLiteral.writeCodeToStream(literalLen);\n }\n }\n this.treeLiteral.writeCodeToStream(256);\n };\n /**\n * write bits in to internal buffer\n * @param {number} b - source of bits\n * @param {number} count - count of bits to write\n */\n CompressedStreamWriter.prototype.pendingBufferWriteBits = function (b, count) {\n var uint = new Uint32Array(1);\n uint[0] = this.pendingBufCache | (b << this.pendingBufBitsInCache);\n this.pendingBufCache = uint[0];\n this.pendingBufBitsInCache += count;\n this.pendingBufferFlushBits();\n };\n CompressedStreamWriter.prototype.pendingBufferFlush = function (isClose) {\n this.pendingBufferFlushBits();\n if (this.pendingBufLength > 0) {\n var array = new Uint8Array(this.pendingBufLength);\n array.set(this.pendingBuffer.subarray(0, this.pendingBufLength), 0);\n this.stream.push(array);\n }\n this.pendingBufLength = 0;\n };\n CompressedStreamWriter.prototype.pendingBufferFlushBits = function () {\n var result = 0;\n while (this.pendingBufBitsInCache >= 8 && this.pendingBufLength < (1 << 16)) {\n this.pendingBuffer[this.pendingBufLength++] = this.pendingBufCache;\n this.pendingBufCache >>= 8;\n this.pendingBufBitsInCache -= 8;\n result++;\n }\n return result;\n };\n CompressedStreamWriter.prototype.pendingBufferWriteByteBlock = function (data, offset, length) {\n var array = data.subarray(offset, offset + length);\n this.pendingBuffer.set(array, this.pendingBufLength);\n this.pendingBufLength += length;\n };\n CompressedStreamWriter.prototype.pendingBufferWriteShort = function (s) {\n this.pendingBuffer[this.pendingBufLength++] = s;\n this.pendingBuffer[this.pendingBufLength++] = (s >> 8);\n };\n CompressedStreamWriter.prototype.pendingBufferAlignToByte = function () {\n if (this.pendingBufBitsInCache > 0) {\n this.pendingBuffer[this.pendingBufLength++] = this.pendingBufCache;\n }\n this.pendingBufCache = 0;\n this.pendingBufBitsInCache = 0;\n };\n /**\n * Huffman Tree literal calculation\n * @private\n */\n CompressedStreamWriter.initHuffmanTree = function () {\n var i = 0;\n while (i < 144) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x030 + i) << 8);\n ARR_LITERAL_LENGTHS[i++] = 8;\n }\n while (i < 256) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x190 - 144 + i) << 7);\n ARR_LITERAL_LENGTHS[i++] = 9;\n }\n while (i < 280) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x000 - 256 + i) << 9);\n ARR_LITERAL_LENGTHS[i++] = 7;\n }\n while (i < 286) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x0c0 - 280 + i) << 8);\n ARR_LITERAL_LENGTHS[i++] = 8;\n }\n for (i = 0; i < 30; i++) {\n ARR_DISTANCE_CODES[i] = CompressorHuffmanTree.bitReverse(i << 11);\n ARR_DISTANCE_LENGTHS[i] = 5;\n }\n };\n /**\n * close the stream and write all pending buffer in to stream\n * @returns {void}\n */\n CompressedStreamWriter.prototype.close = function () {\n do {\n this.pendingBufferFlush(true);\n if (!this.compressData(true)) {\n this.pendingBufferFlush(true);\n this.pendingBufferAlignToByte();\n if (!this.noWrap) {\n this.pendingBufferWriteShortBytes(this.checkSum >> 16);\n this.pendingBufferWriteShortBytes(this.checkSum & 0xffff);\n }\n this.pendingBufferFlush(true);\n }\n } while (!(this.inputEnd === this.inputOffset) ||\n !(this.pendingBufLength === 0));\n };\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n CompressedStreamWriter.prototype.destroy = function () {\n this.stream = [];\n this.stream = undefined;\n this.pendingBuffer = undefined;\n this.treeLiteral = undefined;\n this.treeDistances = undefined;\n this.treeCodeLengths = undefined;\n this.arrLiterals = undefined;\n this.arrDistances = undefined;\n this.hashHead = undefined;\n this.hashPrevious = undefined;\n this.dataWindow = undefined;\n this.inputBuffer = undefined;\n this.pendingBufLength = undefined;\n this.pendingBufCache = undefined;\n this.pendingBufBitsInCache = undefined;\n this.bufferPosition = undefined;\n this.extraBits = undefined;\n this.currentHash = undefined;\n this.matchStart = undefined;\n this.matchLength = undefined;\n this.matchPrevAvail = undefined;\n this.blockStart = undefined;\n this.stringStart = undefined;\n this.lookAhead = undefined;\n this.totalBytesIn = undefined;\n this.inputOffset = undefined;\n this.inputEnd = undefined;\n this.windowSize = undefined;\n this.windowMask = undefined;\n this.hashSize = undefined;\n this.hashMask = undefined;\n this.hashShift = undefined;\n this.maxDist = undefined;\n this.checkSum = undefined;\n this.noWrap = undefined;\n };\n CompressedStreamWriter.isHuffmanTreeInitiated = false;\n return CompressedStreamWriter;\n}());\nexport { CompressedStreamWriter };\n/**\n * represent the Huffman Tree\n */\nvar CompressorHuffmanTree = /** @class */ (function () {\n /**\n * Create new Huffman Tree\n * @param {CompressedStreamWriter} writer instance\n * @param {number} elementCount - element count\n * @param {number} minCodes - minimum count\n * @param {number} maxLength - maximum count\n */\n function CompressorHuffmanTree(writer, elementCount, minCodes, maxLength) {\n this.writer = writer;\n this.codeMinCount = minCodes;\n this.maxLength = maxLength;\n this.codeFrequency = new Uint16Array(elementCount);\n this.lengthCount = new Int32Array(maxLength);\n }\n Object.defineProperty(CompressorHuffmanTree.prototype, \"treeLength\", {\n get: function () {\n return this.codeCount;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressorHuffmanTree.prototype, \"codeLengths\", {\n get: function () {\n return this.codeLength;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressorHuffmanTree.prototype, \"codeFrequencies\", {\n get: function () {\n return this.codeFrequency;\n },\n enumerable: true,\n configurable: true\n });\n CompressorHuffmanTree.prototype.setStaticCodes = function (codes, lengths) {\n var temp = new Int16Array(codes.length);\n temp.set(codes, 0);\n this.codes = temp;\n var lengthTemp = new Uint8Array(lengths.length);\n lengthTemp.set(lengths, 0);\n this.codeLength = lengthTemp;\n };\n /**\n * reset all code data in tree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.reset = function () {\n for (var i = 0; i < this.codeFrequency.length; i++) {\n this.codeFrequency[i] = 0;\n }\n this.codes = undefined;\n this.codeLength = undefined;\n };\n /**\n * write code to the compressor output stream\n * @param {number} code - code to be written\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.writeCodeToStream = function (code) {\n this.writer.pendingBufferWriteBits(this.codes[code] & 0xffff, this.codeLength[code]);\n };\n /**\n * calculate code from their frequencies\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.buildCodes = function () {\n var nextCode = new Int32Array(this.maxLength);\n this.codes = new Int16Array(this.codeCount);\n var code = 0;\n for (var bitsCount = 0; bitsCount < this.maxLength; bitsCount++) {\n nextCode[bitsCount] = code;\n code += this.lengthCount[bitsCount] << (15 - bitsCount);\n }\n for (var i = 0; i < this.codeCount; i++) {\n var bits = this.codeLength[i];\n if (bits > 0) {\n this.codes[i] = CompressorHuffmanTree.bitReverse(nextCode[bits - 1]);\n nextCode[bits - 1] += 1 << (16 - bits);\n }\n }\n };\n CompressorHuffmanTree.bitReverse = function (value) {\n return (CompressorHuffmanTree.reverseBits[value & 15] << 12\n | CompressorHuffmanTree.reverseBits[(value >> 4) & 15] << 8\n | CompressorHuffmanTree.reverseBits[(value >> 8) & 15] << 4\n | CompressorHuffmanTree.reverseBits[value >> 12]);\n };\n /**\n * calculate length of compressed data\n * @returns {number}\n */\n CompressorHuffmanTree.prototype.getEncodedLength = function () {\n var len = 0;\n for (var i = 0; i < this.codeFrequency.length; i++) {\n len += this.codeFrequency[i] * this.codeLength[i];\n }\n return len;\n };\n /**\n * calculate code frequencies\n * @param {CompressorHuffmanTree} blTree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.calculateBLFreq = function (blTree) {\n var maxCount;\n var minCount;\n var count;\n var curLen = -1;\n var i = 0;\n while (i < this.codeCount) {\n count = 1;\n var nextLen = this.codeLength[i];\n if (nextLen === 0) {\n maxCount = 138;\n minCount = 3;\n }\n else {\n maxCount = 6;\n minCount = 3;\n if (curLen !== nextLen) {\n blTree.codeFrequency[nextLen]++;\n count = 0;\n }\n }\n curLen = nextLen;\n i++;\n while (i < this.codeCount && curLen === this.codeLength[i]) {\n i++;\n if (++count >= maxCount) {\n break;\n }\n }\n if (count < minCount) {\n blTree.codeFrequency[curLen] += count;\n }\n else if (curLen !== 0) {\n blTree.codeFrequency[16]++;\n }\n else if (count <= 10) {\n blTree.codeFrequency[17]++;\n }\n else {\n blTree.codeFrequency[18]++;\n }\n }\n };\n /**\n * @param {CompressorHuffmanTree} blTree - write tree to output stream\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.writeTree = function (blTree) {\n var maxRepeatCount;\n var minRepeatCount;\n var currentRepeatCount;\n var currentCodeLength = -1;\n var i = 0;\n while (i < this.codeCount) {\n currentRepeatCount = 1;\n var nextLen = this.codeLength[i];\n if (nextLen === 0) {\n maxRepeatCount = 138;\n minRepeatCount = 3;\n }\n else {\n maxRepeatCount = 6;\n minRepeatCount = 3;\n if (currentCodeLength !== nextLen) {\n blTree.writeCodeToStream(nextLen);\n currentRepeatCount = 0;\n }\n }\n currentCodeLength = nextLen;\n i++;\n while (i < this.codeCount && currentCodeLength === this.codeLength[i]) {\n i++;\n if (++currentRepeatCount >= maxRepeatCount) {\n break;\n }\n }\n if (currentRepeatCount < minRepeatCount) {\n while (currentRepeatCount-- > 0) {\n blTree.writeCodeToStream(currentCodeLength);\n }\n }\n else if (currentCodeLength !== 0) {\n blTree.writeCodeToStream(16);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 3, 2);\n }\n else if (currentRepeatCount <= 10) {\n blTree.writeCodeToStream(17);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 3, 3);\n }\n else {\n blTree.writeCodeToStream(18);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 11, 7);\n }\n }\n };\n /**\n * Build huffman tree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.buildTree = function () {\n var codesCount = this.codeFrequency.length;\n var arrTree = new Int32Array(codesCount);\n var treeLength = 0;\n var maxCount = 0;\n for (var n = 0; n < codesCount; n++) {\n var freq = this.codeFrequency[n];\n if (freq !== 0) {\n var pos = treeLength++;\n var pPos = 0;\n while (pos > 0 && this.codeFrequency[arrTree[pPos = Math.floor((pos - 1) / 2)]] > freq) {\n arrTree[pos] = arrTree[pPos];\n pos = pPos;\n }\n arrTree[pos] = n;\n maxCount = n;\n }\n }\n while (treeLength < 2) {\n arrTree[treeLength++] =\n (maxCount < 2) ? ++maxCount : 0;\n }\n this.codeCount = Math.max(maxCount + 1, this.codeMinCount);\n var leafsCount = treeLength;\n var nodesCount = leafsCount;\n var child = new Int32Array(4 * treeLength - 2);\n var values = new Int32Array(2 * treeLength - 1);\n for (var i = 0; i < treeLength; i++) {\n var node = arrTree[i];\n var iIndex = 2 * i;\n child[iIndex] = node;\n child[iIndex + 1] = -1;\n values[i] = (this.codeFrequency[node] << 8);\n arrTree[i] = i;\n }\n this.constructHuffmanTree(arrTree, treeLength, values, nodesCount, child);\n this.buildLength(child);\n };\n CompressorHuffmanTree.prototype.constructHuffmanTree = function (arrTree, treeLength, values, nodesCount, child) {\n do {\n var first = arrTree[0];\n var last = arrTree[--treeLength];\n var lastVal = values[last];\n var pPos = 0;\n var path = 1;\n while (path < treeLength) {\n if (path + 1 < treeLength && values[arrTree[path]] > values[arrTree[path + 1]]) {\n path++;\n }\n arrTree[pPos] = arrTree[path];\n pPos = path;\n path = pPos * 2 + 1;\n }\n while ((path = pPos) > 0 && values[arrTree[pPos = Math.floor((path - 1) / 2)]] > lastVal) {\n arrTree[path] = arrTree[pPos];\n }\n arrTree[path] = last;\n var second = arrTree[0];\n last = nodesCount++;\n child[2 * last] = first;\n child[2 * last + 1] = second;\n var minDepth = Math.min(values[first] & 0xff, values[second] & 0xff);\n values[last] = lastVal = values[first] + values[second] - minDepth + 1;\n pPos = 0;\n path = 1;\n /* tslint:disable */\n while (path < treeLength) {\n if (path + 1 < treeLength && values[arrTree[path]] > values[arrTree[path + 1]]) {\n path++;\n }\n arrTree[pPos] = arrTree[path];\n pPos = path;\n path = pPos * 2 + 1;\n } /* tslint:disable */\n while ((path = pPos) > 0 && values[arrTree[pPos = Math.floor((path - 1) / 2)]] > lastVal) {\n arrTree[path] = arrTree[pPos];\n }\n arrTree[path] = last;\n } while (treeLength > 1);\n };\n CompressorHuffmanTree.prototype.buildLength = function (child) {\n this.codeLength = new Uint8Array(this.codeFrequency.length);\n var numNodes = Math.floor(child.length / 2);\n var numLeafs = Math.floor((numNodes + 1) / 2);\n var overflow = 0;\n for (var i = 0; i < this.maxLength; i++) {\n this.lengthCount[i] = 0;\n }\n overflow = this.calculateOptimalCodeLength(child, overflow, numNodes);\n if (overflow === 0) {\n return;\n }\n var iIncreasableLength = this.maxLength - 1;\n do {\n while (this.lengthCount[--iIncreasableLength] === 0) {\n /* tslint:disable */\n }\n do {\n this.lengthCount[iIncreasableLength]--;\n this.lengthCount[++iIncreasableLength]++;\n overflow -= (1 << (this.maxLength - 1 - iIncreasableLength));\n } while (overflow > 0 && iIncreasableLength < this.maxLength - 1);\n } while (overflow > 0);\n this.recreateTree(child, overflow, numLeafs);\n };\n CompressorHuffmanTree.prototype.recreateTree = function (child, overflow, numLeafs) {\n this.lengthCount[this.maxLength - 1] += overflow;\n this.lengthCount[this.maxLength - 2] -= overflow;\n var nodePtr = 2 * numLeafs;\n for (var bits = this.maxLength; bits !== 0; bits--) {\n var n = this.lengthCount[bits - 1];\n while (n > 0) {\n var childPtr = 2 * child[nodePtr++];\n if (child[childPtr + 1] === -1) {\n this.codeLength[child[childPtr]] = bits;\n n--;\n }\n }\n }\n };\n CompressorHuffmanTree.prototype.calculateOptimalCodeLength = function (child, overflow, numNodes) {\n var lengths = new Int32Array(numNodes);\n lengths[numNodes - 1] = 0;\n for (var i = numNodes - 1; i >= 0; i--) {\n var childIndex = 2 * i + 1;\n if (child[childIndex] !== -1) {\n var bitLength = lengths[i] + 1;\n if (bitLength > this.maxLength) {\n bitLength = this.maxLength;\n overflow++;\n }\n lengths[child[childIndex - 1]] = lengths[child[childIndex]] = bitLength;\n }\n else {\n var bitLength = lengths[i];\n this.lengthCount[bitLength - 1]++;\n this.codeLength[child[childIndex - 1]] = lengths[i];\n }\n }\n return overflow;\n };\n CompressorHuffmanTree.reverseBits = [0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15];\n CompressorHuffmanTree.huffCodeLengthOrders = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n return CompressorHuffmanTree;\n}());\nexport { CompressorHuffmanTree };\n/**\n * Checksum calculator, based on Adler32 algorithm.\n */\nvar ChecksumCalculator = /** @class */ (function () {\n function ChecksumCalculator() {\n }\n /**\n * Updates checksum by calculating checksum of the\n * given buffer and adding it to current value.\n * @param {number} checksum - current checksum.\n * @param {Uint8Array} buffer - data byte array.\n * @param {number} offset - offset in the buffer.\n * @param {number} length - length of data to be used from the stream.\n * @returns {number}\n */\n ChecksumCalculator.checksumUpdate = function (checksum, buffer, offset, length) {\n var uint = new Uint32Array(1);\n uint[0] = checksum;\n var checksum_uint = uint[0];\n var s1 = uint[0] = checksum_uint & 65535;\n var s2 = uint[0] = checksum_uint >> ChecksumCalculator.checkSumBitOffset;\n while (length > 0) {\n var steps = Math.min(length, ChecksumCalculator.checksumIterationCount);\n length -= steps;\n while (--steps >= 0) {\n s1 = s1 + (uint[0] = (buffer[offset++] & 255));\n s2 = s2 + s1;\n }\n s1 %= ChecksumCalculator.checksumBase;\n s2 %= ChecksumCalculator.checksumBase;\n }\n checksum_uint = (s2 << ChecksumCalculator.checkSumBitOffset) | s1;\n return checksum_uint;\n };\n ChecksumCalculator.checkSumBitOffset = 16;\n ChecksumCalculator.checksumBase = 65521;\n ChecksumCalculator.checksumIterationCount = 3800;\n return ChecksumCalculator;\n}());\nexport { ChecksumCalculator };\n/* eslint-enable */ \n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfDictionary } from './pdf-dictionary';\nimport { PdfNumber } from './pdf-number';\nimport { Operators } from './../input-output/pdf-operators';\nimport { PdfName } from './pdf-name';\nimport { PdfArray } from './pdf-array';\nimport { PdfReferenceHolder } from './pdf-reference';\nimport { CompressedStreamWriter } from '@syncfusion/ej2-compression';\n/**\n * `PdfStream` class is used to perform stream related primitive operations.\n * @private\n */\nvar PdfStream = /** @class */ (function (_super) {\n __extends(PdfStream, _super);\n function PdfStream(dictionary, data) {\n var _this = _super.call(this, dictionary) || this;\n //Constants\n /**\n * @hidden\n * @private\n */\n _this.dicPrefix = 'stream';\n /**\n * @hidden\n * @private\n */\n _this.dicSuffix = 'endstream';\n /**\n * Internal variable to hold `cloned object`.\n * @private\n */\n _this.clonedObject2 = null;\n /**\n * @hidden\n * @private\n */\n _this.bCompress = true;\n if (typeof dictionary !== 'undefined' || typeof data !== 'undefined') {\n _this.dataStream2 = [];\n _this.dataStream2 = data;\n _this.bCompress2 = false;\n }\n else {\n _this.dataStream2 = [];\n _this.bCompress2 = true;\n //Pending\n }\n return _this;\n }\n Object.defineProperty(PdfStream.prototype, \"internalStream\", {\n /**\n * Gets the `internal` stream.\n * @private\n */\n get: function () {\n return this.dataStream2;\n },\n set: function (value) {\n this.dataStream2 = [];\n this.dataStream2 = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"compress\", {\n /**\n * Gets or sets `compression` flag.\n * @private\n */\n get: function () {\n return this.bCompress;\n },\n set: function (value) {\n this.bCompress = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"data\", {\n /**\n * Gets or sets the `data`.\n * @private\n */\n get: function () {\n return this.dataStream2;\n },\n set: function (value) {\n this.dataStream2 = [];\n this.dataStream2 = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Clear` the internal stream.\n * @private\n */\n PdfStream.prototype.clearStream = function () {\n this.internalStream = [];\n if (this.items.containsKey(this.dictionaryProperties.filter)) {\n this.remove(this.dictionaryProperties.filter);\n }\n this.bCompress = true;\n this.modify();\n };\n /**\n * `Writes` the specified string.\n * @private\n */\n PdfStream.prototype.write = function (text) {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (text.length <= 0) {\n throw new Error('ArgumentException: Can not write an empty string, text');\n }\n this.dataStream2.push(text);\n this.modify();\n };\n /**\n * `Writes` the specified bytes.\n * @private\n */\n PdfStream.prototype.writeBytes = function (data) {\n if (data === null) {\n throw new Error('ArgumentNullException:data');\n }\n if (data.length <= 0) {\n throw new Error('ArgumentException: Can not write an empty bytes, data');\n }\n var text = '';\n for (var i = 0; i < data.length; i++) {\n text += String.fromCharCode(data[i]);\n }\n this.dataStream2.push(text);\n this.modify();\n };\n /**\n * Raises event `Cmap BeginSave`.\n * @private\n */\n PdfStream.prototype.onCmapBeginSave = function () {\n this.cmapBeginSave.sender.cmapBeginSave();\n };\n /**\n * Raises event `Font Program BeginSave`.\n * @private\n */\n PdfStream.prototype.onFontProgramBeginSave = function () {\n this.fontProgramBeginSave.sender.fontProgramBeginSave();\n };\n /**\n * `Compresses the content` if it's required.\n * @private\n */\n PdfStream.prototype.compressContent = function (data, writer) {\n if (this.bCompress) {\n var byteArray = [];\n for (var i = 0; i < data.length; i++) {\n byteArray.push(data.charCodeAt(i));\n }\n var dataArray = new Uint8Array(byteArray);\n var sw = new CompressedStreamWriter();\n // data = 'Hello World!!!';\n sw.write(dataArray, 0, dataArray.length);\n sw.close();\n data = sw.getCompressedString;\n this.addFilter(this.dictionaryProperties.flatedecode);\n }\n return data;\n };\n /**\n * `Adds a filter` to the filter array.\n * @private\n */\n PdfStream.prototype.addFilter = function (filterName) {\n var obj = this.items.getValue(this.dictionaryProperties.filter);\n if (obj instanceof PdfReferenceHolder) {\n var rh = obj;\n obj = rh.object;\n }\n var array = obj;\n var name = obj;\n if (name != null) {\n array = new PdfArray();\n array.insert(0, name);\n this.items.setValue(this.dictionaryProperties.filter, array);\n }\n name = new PdfName(filterName);\n if (array == null) {\n this.items.setValue(this.dictionaryProperties.filter, name);\n }\n else {\n array.insert(0, name);\n }\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfStream.prototype.save = function (writer) {\n if (typeof this.cmapBeginSave !== 'undefined') {\n this.onCmapBeginSave();\n }\n if (typeof this.fontProgramBeginSave !== 'undefined') {\n this.onFontProgramBeginSave();\n }\n var data = '';\n for (var i = 0; i < this.data.length; i++) {\n data = data + this.data[i];\n }\n if (data.length > 1 && !this.isResource) {\n data = 'q\\r\\n' + data + 'Q\\r\\n';\n }\n data = this.compressContent(data, writer);\n var length = data.length;\n this.items.setValue(this.dictionaryProperties.length, new PdfNumber(length));\n _super.prototype.save.call(this, writer, false);\n writer.write(this.dicPrefix);\n writer.write(Operators.newLine);\n if (data.length > 0) {\n writer.write(data);\n }\n writer.write(Operators.newLine);\n writer.write(this.dicSuffix);\n writer.write(Operators.newLine);\n };\n /**\n * Converts `bytes to string`.\n * @private\n */\n PdfStream.bytesToString = function (byteArray) {\n var output = '';\n for (var i = 0; i < byteArray.length; i++) {\n output = output + String.fromCharCode(byteArray[i]);\n }\n return output;\n };\n return PdfStream;\n}(PdfDictionary));\nexport { PdfStream };\nvar SaveCmapEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveCmapEventHandler(sender) {\n this.sender = sender;\n }\n return SaveCmapEventHandler;\n}());\nexport { SaveCmapEventHandler };\nvar SaveFontProgramEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveFontProgramEventHandler(sender) {\n this.sender = sender;\n }\n return SaveFontProgramEventHandler;\n}());\nexport { SaveFontProgramEventHandler };\n","/**\n * public Enum for `ObjectType`.\n * @private\n */\nexport var ObjectType;\n(function (ObjectType) {\n /**\n * Specifies the type of `Free`.\n * @private\n */\n ObjectType[ObjectType[\"Free\"] = 0] = \"Free\";\n /**\n * Specifies the type of `Normal`.\n * @private\n */\n ObjectType[ObjectType[\"Normal\"] = 1] = \"Normal\";\n /**\n * Specifies the type of `Packed`.\n * @private\n */\n ObjectType[ObjectType[\"Packed\"] = 2] = \"Packed\";\n})(ObjectType || (ObjectType = {}));\n","import { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfStream } from './../primitives/pdf-stream';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfString } from './../primitives/pdf-string';\n/**\n * `PdfReference` class is used to perform reference related primitive operations.\n * @private\n */\nvar PdfReference = /** @class */ (function () {\n function PdfReference(objNumber, genNumber) {\n /**\n * Holds the `index` number of the object.\n * @default -1\n * @private\n */\n this.index3 = -1;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position3 = -1;\n /**\n * Holds the `object number`.\n * @default 0\n * @private\n */\n this.objNumber = 0;\n /**\n * Holds the `generation number` of the object.\n * @default 0\n * @private\n */\n this.genNumber = 0;\n if (typeof objNumber === 'number' && typeof genNumber === 'number') {\n this.objNumber = objNumber;\n this.genNumber = genNumber;\n // } else if (typeof objNum === 'string' && typeof genNum === 'string') {\n }\n else {\n this.objNumber = Number(objNumber);\n this.genNumber = Number(genNumber);\n }\n }\n Object.defineProperty(PdfReference.prototype, \"status\", {\n //Property\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status3;\n },\n set: function (value) {\n this.status3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving3;\n },\n set: function (value) {\n this.isSaving3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index3;\n },\n set: function (value) {\n this.index3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position3;\n },\n set: function (value) {\n this.position3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n var returnObject3 = null;\n return returnObject3;\n },\n enumerable: true,\n configurable: true\n });\n //IPdfPrimitives methods\n /**\n * `Saves` the object.\n * @private\n */\n PdfReference.prototype.save = function (writer) {\n writer.write(this.toString());\n };\n /**\n * Returns a `string` representing the object.\n * @private\n */\n PdfReference.prototype.toString = function () {\n return this.objNumber.toString() + ' ' + this.genNumber.toString() + ' R';\n };\n /**\n * Creates a `deep copy` of the IPdfPrimitive object.\n * @private\n */\n PdfReference.prototype.clone = function (crossTable) {\n return null;\n };\n return PdfReference;\n}());\nexport { PdfReference };\n/**\n * `PdfReferenceHolder` class is used to perform reference holder related primitive operations.\n * @private\n */\nvar PdfReferenceHolder = /** @class */ (function () {\n function PdfReferenceHolder(obj1, obj2) {\n /**\n * Holds the `index` number of the object.\n * @default -1\n * @private\n */\n this.index4 = -1;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position4 = -1;\n /**\n * The `index` of the object within the object collection.\n * @default -1\n * @private\n */\n this.objectIndex = -1;\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // if (typeof obj2 === 'undefined') {\n this.initialize(obj1);\n // }\n // else {\n // if (obj2 === null) {\n // throw new Error('ArgumentNullException : crossTable');\n // }\n // if (obj1 === null) {\n // throw new Error('ArgumentNullException : reference');\n // }\n // this.crossTable = obj2;\n // let tempObj1 : PdfReference = obj1;\n // this.reference = tempObj1;\n // }\n }\n Object.defineProperty(PdfReferenceHolder.prototype, \"status\", {\n //Properties\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status4;\n },\n set: function (value) {\n this.status4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving4;\n },\n set: function (value) {\n this.isSaving4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index4;\n },\n set: function (value) {\n this.index4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position4;\n },\n set: function (value) {\n this.position4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"object\", {\n /**\n * Gets the `object` the reference is of.\n * @private\n */\n get: function () {\n // if ((this.reference != null) || (this.object == null)) {\n // this.object = this.GetterObject();\n // }\n return this.primitiveObject;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"reference\", {\n /**\n * Gets the `reference`.\n * @private\n */\n get: function () {\n return this.pdfReference;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"index\", {\n /**\n * Gets the `index` of the object.\n * @private\n */\n get: function () {\n // let items : PdfMainObjectCollection = this.crossTable.PdfObjects;\n // this.objectIndex = items.GetObjectIndex(this.reference);\n // if (this.objectIndex < 0) {\n // let obj : IPdfPrimitive = this.crossTable.GetObject(this.reference);\n // this.objectIndex = items.Count - 1;\n // }\n return this.objectIndex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"element\", {\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.primitiveObject;\n },\n enumerable: true,\n configurable: true\n });\n PdfReferenceHolder.prototype.initialize = function (obj1) {\n if (obj1 instanceof PdfArray\n || obj1 instanceof PdfDictionary\n || obj1 instanceof PdfName\n || obj1 instanceof PdfNumber\n || obj1 instanceof PdfStream\n || obj1 instanceof PdfReference\n || obj1 instanceof PdfString) {\n this.primitiveObject = obj1;\n }\n else {\n var tempObj = obj1;\n this.initialize(tempObj.element);\n }\n };\n /**\n * `Writes` a reference into a PDF document.\n * @private\n */\n PdfReferenceHolder.prototype.save = function (writer) {\n // if (writer == null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n var position = writer.position;\n var cTable = writer.document.crossTable;\n // if (cTable.Document instanceof PdfDocument) {\n this.object.isSaving = true;\n // }\n var reference = null;\n // if (writer.Document.FileStructure.IncrementalUpdate === true && writer.Document.isStreamCopied === true) {\n // if (this.reference === null) {\n // reference = cTable.GetReference(this.Object);\n // } else {\n // reference = this.reference;\n // }\n // } else {\n // reference = cTable.GetReference(this.Object);\n // }\n // if (!(writer.Document.FileStructure.IncrementalUpdate === true && writer.Document.isStreamCopied === true)) {\n reference = cTable.getReference(this.object);\n // }\n // if (writer.Position !== position) {\n // writer.Position = position;\n // }\n reference.save(writer);\n };\n /**\n * Creates a `copy of PdfReferenceHolder`.\n * @private\n */\n PdfReferenceHolder.prototype.clone = function (crossTable) {\n var refHolder = null;\n var temp = null;\n var refNum = '';\n var reference = null;\n // Restricts addition of same object multiple time.\n /* if (this.Reference != null && this.crossTable != null && this.crossTable.PageCorrespondance.containsKey(this.Reference)) {\n refHolder = new PdfReferenceHolder(this.crossTable.PageCorrespondance.getValue(this.Reference) as PdfReference, crossTable);\n return refHolder;\n }\n if (Object instanceof PdfNumber) {\n return new PdfNumber((Object as PdfNumber).IntValue);\n }\n */\n // if (Object instanceof PdfDictionary) {\n // // Meaning the referenced page is not available for import.\n // let type : PdfName = new PdfName(this.dictionaryProperties.type);\n // let dict : PdfDictionary = Object as PdfDictionary;\n // if (dict.ContainsKey(type)) {\n // let pageName : PdfName = dict.Items.getValue(type.Value) as PdfName;\n // if (pageName !== null) {\n // if (pageName.Value === 'Page') {\n // return new PdfNull();\n // }\n // }\n // }\n // }\n /* if (Object instanceof PdfName) {\n return new PdfName ((Object as PdfName ).Value);\n }\n */\n // Resolves circular references.\n // if (crossTable.PrevReference !== null && (crossTable.PrevReference.indexOf(this.Reference) !== -1)) {\n // let obj : IPdfPrimitive = this.crossTable.GetObject(this.Reference).ClonedObject;\n // if (obj !== null) {\n // reference = crossTable.GetReference(obj);\n // return new PdfReferenceHolder(reference, crossTable);\n // } else {\n // return new PdfNull();\n // }\n // }\n /*if (this.Reference !== null) {\n crossTable.PrevReference.push(this.Reference);\n }\n reference = crossTable.GetReference(temp);\n refHolder = new PdfReferenceHolder(reference, crossTable);\n return refHolder;\n */\n return null;\n };\n return PdfReferenceHolder;\n}());\nexport { PdfReferenceHolder };\n","/**\n * `PdfBoolean` class is used to perform boolean related primitive operations.\n * @private\n */\nvar PdfBoolean = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfBoolean` class.\n * @private\n */\n function PdfBoolean(value) {\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.currentPosition = -1;\n this.value = value;\n }\n Object.defineProperty(PdfBoolean.prototype, \"status\", {\n //Properties\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.objectStatus;\n },\n set: function (value) {\n this.objectStatus = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.saving;\n },\n set: function (value) {\n this.saving = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index;\n },\n set: function (value) {\n this.index = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.currentPosition;\n },\n set: function (value) {\n this.currentPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n var rValue = null;\n return rValue;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfBoolean.prototype.save = function (writer) {\n writer.write(this.boolToStr(this.value));\n };\n /**\n * Creates a `copy of PdfBoolean`.\n * @private\n */\n PdfBoolean.prototype.clone = function (crossTable) {\n var newNumber = new PdfBoolean(this.value);\n return newNumber;\n };\n // Implementation\n /**\n * Converts `boolean to string` - 0/1 'true'/'false'.\n * @private\n */\n PdfBoolean.prototype.boolToStr = function (value) {\n return value ? 'true' : 'false';\n };\n return PdfBoolean;\n}());\nexport { PdfBoolean };\n","import { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfBoolean } from './../primitives/pdf-boolean';\nimport { PdfName } from './../primitives/pdf-name';\n/**\n * Defines the way the document is to be presented on the screen or in print.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets viewer preferences\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfViewerPreferences = /** @class */ (function () {\n /**\n * Initialize a new instance of `PdfViewerPreferences` class.\n *\n * @private\n * ```\n */\n function PdfViewerPreferences(catalog) {\n this._dictionaryProperties = new DictionaryProperties();\n this._centerWindow = false;\n this._fitWindow = false;\n this._displayTitle = false;\n this._splitWindow = false;\n this._hideMenuBar = false;\n this._hideToolBar = false;\n this._hideWindowUI = false;\n this._pageMode = PdfPageMode.UseNone;\n this._pageLayout = PdfPageLayout.SinglePage;\n this._dictionary = new PdfDictionary();\n this._duplex = DuplexMode.None;\n this._catalog = catalog;\n }\n Object.defineProperty(PdfViewerPreferences.prototype, \"centerWindow\", {\n /**\n * A flag specifying whether to position the document’s window in the center of the screen.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the center window\n * let centerWindow : boolean = viewerPreferences.centerWindow;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._centerWindow;\n },\n /**\n * A flag specifying whether to position the document’s window in the center of the screen.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the center window\n * viewerPreferences.centerWindow = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._centerWindow = value;\n this._dictionary.items.setValue(this._dictionaryProperties.centerWindow, new PdfBoolean(this._centerWindow));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"displayTitle\", {\n /**\n * A flag specifying whether the window’s title bar should display the document title taken\n * from the Title entry of the document information dictionary. If false, the title bar\n * should instead display the name of the PDF file containing the document.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the display title\n * let displayTitle : boolean = viewerPreferences.displayTitle;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._displayTitle;\n },\n /**\n * A flag specifying whether the window’s title bar should display the document title taken\n * from the Title entry of the document information dictionary. If false, the title bar\n * should instead display the name of the PDF file containing the document.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the display title\n * viewerPreferences.displayTitle = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._displayTitle = value;\n this._dictionary.items.setValue(this._dictionaryProperties.displayTitle, new PdfBoolean(this._displayTitle));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"fitWindow\", {\n /**\n * A flag specifying whether to resize the document’s window to fit the size of the first\n * displayed page.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the fit window\n * let fitWindow : boolean = viewerPreferences.fitWindow;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._fitWindow;\n },\n /**\n * A flag specifying whether to resize the document’s window to fit the size of the first\n * displayed page.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the fit window\n * viewerPreferences.fitWindow = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._fitWindow = value;\n this._dictionary.items.setValue(this._dictionaryProperties.fitWindow, new PdfBoolean(this._fitWindow));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"hideMenuBar\", {\n /**\n * A flag specifying whether to hide the viewer application’s menu bar when the\n * document is active.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the hide menu bar\n * let hideMenuBar: boolean = viewerPreferences.hideMenuBar;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._hideMenuBar;\n },\n /**\n * A flag specifying whether to hide the viewer application’s menu bar when the\n * document is active.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the hide menu bar\n * viewerPreferences.hideMenuBar = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._hideMenuBar = value;\n this._dictionary.items.setValue(this._dictionaryProperties.hideMenuBar, new PdfBoolean(this._hideMenuBar));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"hideToolBar\", {\n /**\n * A flag specifying whether to hide the viewer application’s tool bar when the\n * document is active.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the hide tool bar\n * let hideToolBar: boolean = viewerPreferences.hideToolBar;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._hideToolBar;\n },\n /**\n * A flag specifying whether to hide the viewer application’s tool bar when the\n * document is active.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the hide tool bar\n * viewerPreferences.hideToolbar = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._hideToolBar = value;\n this._dictionary.items.setValue(this._dictionaryProperties.hideToolBar, new PdfBoolean(this._hideToolBar));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"hideWindowUI\", {\n /**\n * A flag specifying whether to hide user interface elements in the document’s window\n * (such as scroll bars and navigation controls), leaving only the document’s contents displayed.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the hide window UI\n * let hideWindowUI: boolean = viewerPreferences.hideWindowUI;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._hideWindowUI;\n },\n /**\n * A flag specifying whether to hide user interface elements in the document’s window\n * (such as scroll bars and navigation controls), leaving only the document’s contents displayed.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the hide window UI\n * viewerPreferences.hideWindowUI = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._hideWindowUI = value;\n this._dictionary.items.setValue(this._dictionaryProperties.hideWindowUI, new PdfBoolean(this._hideWindowUI));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"pageMode\", {\n /**\n * A name object specifying how the document should be displayed when opened.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the page mode\n * let pageMode: PdfPageMode = viewerPreferences.pageMode;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._pageMode;\n },\n /**\n * A name object specifying how the document should be displayed when opened.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page mode\n * viewerPreferences.pageMode = PdfPageMode.UseOutlines;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._pageMode = value;\n this._catalog.items.setValue(this._dictionaryProperties.pageMode, new PdfName(this._mapPageMode(this._pageMode)));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"duplex\", {\n /**\n * Gets print duplex mode handling option to use when printing the file from the print dialog.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the duplex\n * let duplex : DuplexMode = viewerPreferences.duplex;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._duplex;\n },\n /**\n * Sets print duplex mode handling option to use when printing the file from the print dialog.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the duplex\n * viewerPreferences.duplex = DuplexMode.DuplexFlipLongEdge;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._duplex = value;\n this._catalog.items.setValue(this._dictionaryProperties.duplex, new PdfName(this._mapDuplexMode(this._duplex)));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"pageLayout\", {\n /**\n * A name object specifying the page layout to be used when the document is opened.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the page layout\n * let pageLayout : PdfPageLayout = viewerPreferences.pageLayout;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._pageLayout;\n },\n /**\n * A name object specifying the page layout to be used when the document is opened.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page layout\n * viewerPreferences.pageLayout = PdfPageLayout.TwoColumnLeft;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._pageLayout = value;\n this._catalog.items.setValue(this._dictionaryProperties.pageLayout, new PdfName(this._mapPageLayout(this._pageLayout)));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"pageScaling\", {\n /**\n * Gets the page scaling option to be selected\n * when a print dialog is displayed for this document.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the page scaling\n * let pageScaling : PageScalingMode = viewerPreferences.pageScaling;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._pageScaling;\n },\n /**\n * Sets the page scaling option to be selected\n * when a print dialog is displayed for this document.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page scaling\n * viewerPreferences.pageScaling = PageScalingMode.None;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._pageScaling = value;\n if (this._pageScaling === PageScalingMode.AppDefault && this._dictionary.items.containsKey(this._dictionaryProperties.printScaling)) {\n this._dictionary.items.remove(this._dictionaryProperties.printScaling);\n }\n else if (this._pageScaling === PageScalingMode.None) {\n this._dictionary.items.setValue(this._dictionaryProperties.printScaling, new PdfName('None'));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"element\", {\n /**\n * Primivie element\n *\n * @private\n */\n get: function () {\n return this._dictionary;\n },\n enumerable: true,\n configurable: true\n });\n PdfViewerPreferences.prototype._mapDuplexMode = function (mode) {\n switch (mode) {\n case DuplexMode.Simplex:\n return 'Simplex';\n case DuplexMode.DuplexFlipShortEdge:\n return 'DuplexFlipShortEdge';\n case DuplexMode.DuplexFlipLongEdge:\n return 'DuplexFlipLongEdge';\n case DuplexMode.None:\n return 'None';\n }\n };\n PdfViewerPreferences.prototype._mapPageMode = function (mode) {\n switch (mode) {\n case PdfPageMode.UseNone:\n return 'UseNone';\n case PdfPageMode.UseOutlines:\n return 'UseOutlines';\n case PdfPageMode.UseThumbs:\n return 'UseThumbs';\n case PdfPageMode.FullScreen:\n return 'FullScreen';\n case PdfPageMode.UseOC:\n return 'UseOC';\n case PdfPageMode.UseAttachments:\n return 'UseAttachments';\n }\n };\n PdfViewerPreferences.prototype._mapPageLayout = function (layout) {\n switch (layout) {\n case PdfPageLayout.SinglePage:\n return 'SinglePage';\n case PdfPageLayout.OneColumn:\n return 'OneColumn';\n case PdfPageLayout.TwoColumnLeft:\n return 'TwoColumnLeft';\n case PdfPageLayout.TwoColumnRight:\n return 'TwoColumnRight';\n case PdfPageLayout.TwoPageLeft:\n return 'TwoPageLeft';\n case PdfPageLayout.TwoPageRight:\n return 'TwoPageRight';\n }\n };\n return PdfViewerPreferences;\n}());\nexport { PdfViewerPreferences };\n/**\n * Represents mode of document displaying.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page mode\n * viewerPreferences.pageMode = PdfPageMode.UseOutlines;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfPageMode;\n(function (PdfPageMode) {\n /**\n * Default value. Neither document outline nor thumbnail images visible.\n */\n PdfPageMode[PdfPageMode[\"UseNone\"] = 0] = \"UseNone\";\n /**\n * Document outline visible.\n */\n PdfPageMode[PdfPageMode[\"UseOutlines\"] = 1] = \"UseOutlines\";\n /**\n * Thumbnail images visible.\n */\n PdfPageMode[PdfPageMode[\"UseThumbs\"] = 2] = \"UseThumbs\";\n /**\n * Full-screen mode, with no menu bar, window controls, or any other window visible.\n */\n PdfPageMode[PdfPageMode[\"FullScreen\"] = 3] = \"FullScreen\";\n /**\n * Optional content group panel visible.\n */\n PdfPageMode[PdfPageMode[\"UseOC\"] = 4] = \"UseOC\";\n /**\n * Attachments are visible.\n */\n PdfPageMode[PdfPageMode[\"UseAttachments\"] = 5] = \"UseAttachments\";\n})(PdfPageMode || (PdfPageMode = {}));\n/**\n * A name object specifying the page layout to be used when the document is opened.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page layout\n * viewerPreferences.pageLayout = PdfPageLayout.TwoColumnLeft;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfPageLayout;\n(function (PdfPageLayout) {\n /**\n * Default Value. Display one page at a time.\n */\n PdfPageLayout[PdfPageLayout[\"SinglePage\"] = 0] = \"SinglePage\";\n /**\n * Display the pages in one column.\n */\n PdfPageLayout[PdfPageLayout[\"OneColumn\"] = 1] = \"OneColumn\";\n /**\n * Display the pages in two columns, with odd numbered\n * pages on the left.\n */\n PdfPageLayout[PdfPageLayout[\"TwoColumnLeft\"] = 2] = \"TwoColumnLeft\";\n /**\n * Display the pages in two columns, with odd numbered\n * pages on the right.\n */\n PdfPageLayout[PdfPageLayout[\"TwoColumnRight\"] = 3] = \"TwoColumnRight\";\n /**\n * Display the pages two at a time, with odd-numbered pages on the left.\n */\n PdfPageLayout[PdfPageLayout[\"TwoPageLeft\"] = 4] = \"TwoPageLeft\";\n /**\n * Display the pages two at a time, with odd-numbered pages on the right.\n */\n PdfPageLayout[PdfPageLayout[\"TwoPageRight\"] = 5] = \"TwoPageRight\";\n})(PdfPageLayout || (PdfPageLayout = {}));\n/**\n * The paper handling option to use when printing the file from the print dialog.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the duplex\n * viewerPreferences.duplex = DuplexMode.DuplexFlipLongEdge;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var DuplexMode;\n(function (DuplexMode) {\n /**\n * Print single-sided.\n */\n DuplexMode[DuplexMode[\"Simplex\"] = 0] = \"Simplex\";\n /**\n * Duplex and flip on the short edge of the sheet.\n */\n DuplexMode[DuplexMode[\"DuplexFlipShortEdge\"] = 1] = \"DuplexFlipShortEdge\";\n /**\n * Duplex and flip on the long edge of the sheet.\n */\n DuplexMode[DuplexMode[\"DuplexFlipLongEdge\"] = 2] = \"DuplexFlipLongEdge\";\n /**\n * Default value.\n */\n DuplexMode[DuplexMode[\"None\"] = 3] = \"None\";\n})(DuplexMode || (DuplexMode = {}));\n/**\n * Specifies the different page scaling option that shall be selected\n * when a print dialog is displayed for this document.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page scaling\n * viewerPreferences.pageScaling = PageScalingMode.None;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PageScalingMode;\n(function (PageScalingMode) {\n /**\n * Indicates the conforming reader’s default print scaling.\n */\n PageScalingMode[PageScalingMode[\"AppDefault\"] = 0] = \"AppDefault\";\n /**\n * Indicates no page scaling.\n */\n PageScalingMode[PageScalingMode[\"None\"] = 1] = \"None\";\n})(PageScalingMode || (PageScalingMode = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfCatalog.ts class for EJ2-PDF\n */\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfViewerPreferences } from './pdf-viewer-preferences';\n/**\n * `PdfCatalog` class represents internal catalog of the Pdf document.\n * @private\n */\nvar PdfCatalog = /** @class */ (function (_super) {\n __extends(PdfCatalog, _super);\n //constructor\n /**\n * Initializes a new instance of the `PdfCatalog` class.\n * @private\n */\n function PdfCatalog() {\n var _this = _super.call(this) || this;\n //fields\n /**\n * Internal variable to store collection of `sections`.\n * @default null\n * @private\n */\n _this.sections = null;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @private\n */\n _this.tempDictionaryProperties = new DictionaryProperties();\n _this.items.setValue(new DictionaryProperties().type, new PdfName('Catalog'));\n return _this;\n }\n Object.defineProperty(PdfCatalog.prototype, \"pages\", {\n //Properties\n /**\n * Gets or sets the sections, which contain `pages`.\n * @private\n */\n get: function () {\n return this.sections;\n },\n set: function (value) {\n var dictionary = value.element;\n // if (this.sections !== value) {\n // this.sections = value;\n // this.Items.setValue(this.tempDictionaryProperties.pages, new PdfReferenceHolder(value));\n // }\n this.sections = value;\n this.items.setValue(this.tempDictionaryProperties.pages, new PdfReferenceHolder(value));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCatalog.prototype, \"viewerPreferences\", {\n /**\n * Gets the viewer preferences of the PDF document.\n * @private\n */\n get: function () {\n if (this._viewerPreferences === null || typeof this._viewerPreferences === 'undefined') {\n this._viewerPreferences = new PdfViewerPreferences(this);\n this.items.setValue(this.tempDictionaryProperties.viewerPreferences, new PdfReferenceHolder(this._viewerPreferences.element));\n }\n return this._viewerPreferences;\n },\n enumerable: true,\n configurable: true\n });\n return PdfCatalog;\n}(PdfDictionary));\nexport { PdfCatalog };\n","/**\n * public Enum for `PdfPageOrientation`.\n * @private\n */\nexport var PdfPageOrientation;\n(function (PdfPageOrientation) {\n /**\n * Specifies the type of `Portrait`.\n * @private\n */\n PdfPageOrientation[PdfPageOrientation[\"Portrait\"] = 0] = \"Portrait\";\n /**\n * Specifies the type of `Landscape`.\n * @private\n */\n PdfPageOrientation[PdfPageOrientation[\"Landscape\"] = 1] = \"Landscape\";\n})(PdfPageOrientation || (PdfPageOrientation = {}));\n/**\n * public Enum for `PdfPageRotateAngle`.\n * @private\n */\nexport var PdfPageRotateAngle;\n(function (PdfPageRotateAngle) {\n /**\n * Specifies the type of `RotateAngle0`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle0\"] = 0] = \"RotateAngle0\";\n /**\n * Specifies the type of `RotateAngle90`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle90\"] = 1] = \"RotateAngle90\";\n /**\n * Specifies the type of `RotateAngle180`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle180\"] = 2] = \"RotateAngle180\";\n /**\n * Specifies the type of `RotateAngle270`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle270\"] = 3] = \"RotateAngle270\";\n})(PdfPageRotateAngle || (PdfPageRotateAngle = {}));\n/**\n * public Enum for `PdfNumberStyle`.\n * @private\n */\nexport var PdfNumberStyle;\n(function (PdfNumberStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Numeric`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"Numeric\"] = 1] = \"Numeric\";\n /**\n * Specifies the type of `LowerLatin`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"LowerLatin\"] = 2] = \"LowerLatin\";\n /**\n * Specifies the type of `LowerRoman`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"LowerRoman\"] = 3] = \"LowerRoman\";\n /**\n * Specifies the type of `UpperLatin`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"UpperLatin\"] = 4] = \"UpperLatin\";\n /**\n * Specifies the type of `UpperRoman`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"UpperRoman\"] = 5] = \"UpperRoman\";\n})(PdfNumberStyle || (PdfNumberStyle = {}));\n/**\n * public Enum for `PdfDockStyle`.\n * @private\n */\nexport var PdfDockStyle;\n(function (PdfDockStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Bottom\"] = 1] = \"Bottom\";\n /**\n * Specifies the type of `Top`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Top\"] = 2] = \"Top\";\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Left\"] = 3] = \"Left\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Right\"] = 4] = \"Right\";\n /**\n * Specifies the type of `Fill`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Fill\"] = 5] = \"Fill\";\n})(PdfDockStyle || (PdfDockStyle = {}));\n/**\n * public Enum for `PdfAlignmentStyle`.\n * @private\n */\nexport var PdfAlignmentStyle;\n(function (PdfAlignmentStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `TopLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopLeft\"] = 1] = \"TopLeft\";\n /**\n * Specifies the type of `TopCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopCenter\"] = 2] = \"TopCenter\";\n /**\n * Specifies the type of `TopRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopRight\"] = 3] = \"TopRight\";\n /**\n * Specifies the type of `MiddleLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleLeft\"] = 4] = \"MiddleLeft\";\n /**\n * Specifies the type of `MiddleCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleCenter\"] = 5] = \"MiddleCenter\";\n /**\n * Specifies the type of `MiddleRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleRight\"] = 6] = \"MiddleRight\";\n /**\n * Specifies the type of `BottomLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomLeft\"] = 7] = \"BottomLeft\";\n /**\n * Specifies the type of `BottomCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomCenter\"] = 8] = \"BottomCenter\";\n /**\n * Specifies the type of `BottomRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomRight\"] = 9] = \"BottomRight\";\n})(PdfAlignmentStyle || (PdfAlignmentStyle = {}));\n/**\n * public Enum for `TemplateType`.\n * @private\n */\nexport var TemplateType;\n(function (TemplateType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n TemplateType[TemplateType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Top`.\n * @private\n */\n TemplateType[TemplateType[\"Top\"] = 1] = \"Top\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n TemplateType[TemplateType[\"Bottom\"] = 2] = \"Bottom\";\n /**\n * Specifies the type of `Left`.\n * @private\n */\n TemplateType[TemplateType[\"Left\"] = 3] = \"Left\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n TemplateType[TemplateType[\"Right\"] = 4] = \"Right\";\n})(TemplateType || (TemplateType = {}));\n","import { ObjectStatus } from './../input-output/enum';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './pdf-dictionary-properties';\nimport { Operators } from './pdf-operators';\nimport { Dictionary } from './../collections/dictionary';\nimport { PdfReference } from './../primitives/pdf-reference';\nimport { ObjectType } from './cross-table';\nimport { PdfStream } from './../primitives/pdf-stream';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfCatalog } from './../document/pdf-catalog';\n/**\n * `PdfCrossTable` is responsible for intermediate level parsing\n * and savingof a PDF document.\n * @private\n */\nvar PdfCrossTable = /** @class */ (function () {\n function PdfCrossTable() {\n /**\n * The modified `objects` that should be saved.\n * @private\n */\n this.objects = new Dictionary();\n /**\n * Holds `maximal generation number` or offset to object.\n * @default 0\n * @private\n */\n this.maxGenNumIndex = 0;\n /**\n * The `number of the objects`.\n * @default 0\n * @private\n */\n this.objectCount = 0;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @default new PdfDictionaryProperties()\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n }\n Object.defineProperty(PdfCrossTable.prototype, \"isMerging\", {\n //Properties\n /**\n * Gets or sets if the document `is merged`.\n * @private\n */\n get: function () {\n return this.merging;\n },\n set: function (value) {\n this.merging = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"trailer\", {\n /**\n * Gets the `trailer`.\n * @private\n */\n get: function () {\n if (this.internalTrailer == null) {\n this.internalTrailer = new PdfStream();\n }\n return this.internalTrailer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"document\", {\n /**\n * Gets or sets the main `PdfDocument` class instance.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n this.items = this.pdfDocument.pdfObjects;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"pdfObjects\", {\n /**\n * Gets the catched `PDF object` main collection.\n * @private\n */\n get: function () {\n return this.items;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"objectCollection\", {\n /**\n * Gets the `object collection`.\n * @private\n */\n get: function () {\n return this.pdfDocument.pdfObjects;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"count\", {\n /**\n * Gets or sets the `number of the objects` within the document.\n * @private\n */\n get: function () {\n return this.objectCount;\n },\n set: function (value) {\n this.objectCount = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"nextObjNumber\", {\n /**\n * Returns `next available object number`.\n * @private\n */\n get: function () {\n this.count = this.count + 1;\n return this.count;\n },\n enumerable: true,\n configurable: true\n });\n PdfCrossTable.prototype.save = function (writer, filename) {\n this.saveHead(writer);\n var state = false;\n this.mappedReferences = null;\n this.objects.clear();\n this.markTrailerReferences();\n this.saveObjects(writer);\n var saveCount = this.count;\n var xrefPos = writer.position;\n this.registerObject(0, new PdfReference(0, -1), true);\n var prevXRef = 0;\n writer.write(Operators.xref);\n writer.write(Operators.newLine);\n this.saveSections(writer);\n this.saveTrailer(writer, this.count, prevXRef);\n this.saveTheEndess(writer, xrefPos);\n this.count = saveCount;\n for (var i = 0; i < this.objectCollection.count; ++i) {\n var oi = this.objectCollection.items(i);\n oi.object.isSaving = false;\n }\n if (typeof filename === 'undefined') {\n return writer.stream.buffer;\n }\n else {\n writer.stream.save(filename);\n }\n };\n /**\n * `Saves the endess` of the file.\n * @private\n */\n PdfCrossTable.prototype.saveTheEndess = function (writer, xrefPos) {\n writer.write(Operators.newLine + Operators.startxref + Operators.newLine);\n writer.write(xrefPos.toString() + Operators.newLine);\n writer.write(Operators.eof + Operators.newLine);\n };\n /**\n * `Saves the new trailer` dictionary.\n * @private\n */\n PdfCrossTable.prototype.saveTrailer = function (writer, count, prevXRef) {\n writer.write(Operators.trailer + Operators.newLine);\n // Save the dictionary.\n var trailer = this.trailer;\n trailer.items.setValue(this.dictionaryProperties.size, new PdfNumber(this.objectCount + 1));\n trailer = new PdfDictionary(trailer); // Make it real dictionary.\n trailer.setEncrypt(false);\n trailer.save(writer);\n };\n /**\n * `Saves the xref section`.\n * @private\n */\n PdfCrossTable.prototype.saveSections = function (writer) {\n var objectNum = 0;\n var count = 0;\n do {\n count = this.prepareSubsection(objectNum);\n this.saveSubsection(writer, objectNum, count);\n objectNum += count;\n } while (count !== 0);\n };\n /**\n * `Saves a subsection`.\n * @private\n */\n PdfCrossTable.prototype.saveSubsection = function (writer, objectNum, count) {\n if (count <= 0 || objectNum >= this.count) {\n return;\n }\n var subsectionHead = '{0} {1}{2}';\n writer.write(objectNum + ' ' + (count + 1) + Operators.newLine);\n for (var i = objectNum; i <= objectNum + count; ++i) {\n var obj = this.objects.getValue(i);\n var str = '';\n if (obj.type === ObjectType.Free) {\n str = this.getItem(obj.offset, 65535, true);\n }\n else {\n str = this.getItem(obj.offset, obj.generation, false);\n }\n writer.write(str);\n }\n };\n /**\n * Generates string for `xref table item`.\n * @private\n */\n PdfCrossTable.prototype.getItem = function (offset, genNumber, isFree) {\n var returnString = '';\n var addOffsetLength = 10 - offset.toString().length;\n if (genNumber <= 0) {\n genNumber = 0;\n }\n var addGenNumberLength = (5 - genNumber.toString().length) <= 0 ? 0 : (5 - genNumber.toString().length);\n for (var index = 0; index < addOffsetLength; index++) {\n returnString = returnString + '0';\n }\n returnString = returnString + offset.toString() + ' ';\n for (var index = 0; index < addGenNumberLength; index++) {\n returnString = returnString + '0';\n }\n returnString = returnString + genNumber.toString() + ' ';\n returnString = returnString + ((isFree) ? Operators.f : Operators.n) + Operators.newLine;\n return returnString;\n };\n /**\n * `Prepares a subsection` of the current section within the cross-reference table.\n * @private\n */\n PdfCrossTable.prototype.prepareSubsection = function (objectNum) {\n var count = 0;\n var i;\n var total = this.count;\n for (var k = 0; k < this.document.pdfObjects.count; k++) {\n var reference = this.document.pdfObjects.items(k).reference;\n var refString = reference.toString();\n var refArray = refString.split(' ');\n }\n if (objectNum >= total) {\n return count;\n }\n // search for first changed indirect object.\n for (i = objectNum; i < total; ++i) {\n break;\n }\n objectNum = i;\n // look up for all indirect objects in one subsection.\n for (; i < total; ++i) {\n ++count;\n }\n return count;\n };\n /**\n * `Marks the trailer references` being saved.\n * @private\n */\n PdfCrossTable.prototype.markTrailerReferences = function () {\n var tempArray;\n var keys = this.trailer.items.keys();\n var values = this.trailer.items.values();\n };\n /**\n * `Saves the head`.\n * @private\n */\n PdfCrossTable.prototype.saveHead = function (writer) {\n var version = this.generateFileVersion(writer.document);\n writer.write('%PDF-' + version);\n writer.write(Operators.newLine);\n };\n /**\n * Generates the `version` of the file.\n * @private\n */\n PdfCrossTable.prototype.generateFileVersion = function (document) {\n var iVersion = 4;\n var version = '1.' + iVersion.toString();\n return version;\n };\n PdfCrossTable.prototype.getReference = function (obj, bNew) {\n if (typeof bNew === 'undefined') {\n var wasNew = false;\n return this.getReference(obj, wasNew);\n }\n else {\n //code splitted for reducing lines of code exceeds 100.\n return this.getSubReference(obj, bNew);\n }\n };\n /**\n * Retrieves the `reference` of the object given.\n * @private\n */\n PdfCrossTable.prototype.getSubReference = function (obj, bNew) {\n var isNew = false;\n var wasNew;\n var reference = null;\n // if (obj.IsSaving) {\n if (this.items.count > 0 && obj.objectCollectionIndex > 0 && this.items.count > obj.objectCollectionIndex - 1) {\n var tempObj = this.document.pdfObjects.getReference(obj, wasNew);\n reference = tempObj.reference;\n wasNew = tempObj.wasNew;\n }\n if (reference == null) {\n if (obj.status === ObjectStatus.Registered) {\n wasNew = false;\n }\n else {\n wasNew = true;\n }\n }\n else {\n wasNew = false;\n }\n // need to add mapped reference code\n if (reference == null) {\n var objnumber = this.nextObjNumber;\n reference = new PdfReference(objnumber, 0);\n var found = void 0;\n if (wasNew) {\n this.document.pdfObjects.add(obj);\n this.document.pdfObjects.trySetReference(obj, reference, found);\n var tempIndex = this.document.pdfObjects.count - 1;\n var tempkey = this.document.pdfObjects.objectCollections[tempIndex].reference.objNumber;\n var tempvalue = this.document.pdfObjects.objectCollections[this.document.pdfObjects.count - 1];\n this.document.pdfObjects.mainObjectCollection.setValue(tempkey, tempvalue);\n obj.position = -1;\n }\n else {\n this.document.pdfObjects.trySetReference(obj, reference, found);\n }\n obj.objectCollectionIndex = reference.objNumber;\n obj.status = ObjectStatus.None;\n isNew = true;\n }\n bNew = isNew || this.bForceNew;\n return reference;\n };\n /**\n * `Saves all objects` in the collection.\n * @private\n */\n PdfCrossTable.prototype.saveObjects = function (writer) {\n var objectCollection = this.objectCollection;\n for (var i = 0; i < objectCollection.count; ++i) {\n var oi = objectCollection.items(i);\n var obj = oi.object;\n obj.isSaving = true;\n this.saveIndirectObject(obj, writer);\n }\n };\n /**\n * `Saves indirect object`.\n * @private\n */\n PdfCrossTable.prototype.saveIndirectObject = function (obj, writer) {\n var reference = this.getReference(obj);\n if (obj instanceof PdfCatalog) {\n this.trailer.items.setValue(this.dictionaryProperties.root, reference);\n }\n // NOTE : This is needed for correct string objects encryption.\n this.pdfDocument.currentSavingObj = reference;\n var tempArchive = false;\n tempArchive = obj.getArchive();\n var allowedType = !((obj instanceof PdfStream) || !tempArchive || (obj instanceof PdfCatalog));\n var sigFlag = false;\n this.registerObject(writer.position, reference);\n this.doSaveObject(obj, reference, writer);\n };\n /**\n * Performs `real saving` of the save object.\n * @private\n */\n PdfCrossTable.prototype.doSaveObject = function (obj, reference, writer) {\n var correctPosition = writer.length;\n writer.write(reference.objNumber.toString());\n writer.write(Operators.whiteSpace);\n writer.write(reference.genNumber.toString());\n writer.write(Operators.whiteSpace);\n writer.write(Operators.obj);\n writer.write(Operators.newLine);\n obj.save(writer);\n var stream = writer.stream;\n writer.write(Operators.endObj);\n writer.write(Operators.newLine);\n };\n PdfCrossTable.prototype.registerObject = function (offset, reference, free) {\n if (typeof free === 'boolean') {\n // Register the object by its number.\n this.objects.setValue(reference.objNumber, new RegisteredObject(offset, reference, free));\n this.maxGenNumIndex = Math.max(this.maxGenNumIndex, reference.genNumber);\n }\n else if (typeof free === 'undefined') {\n // Register the object by its number.\n this.objects.setValue(reference.objNumber, new RegisteredObject(offset, reference));\n this.maxGenNumIndex = Math.max(this.maxGenNumIndex, reference.genNumber);\n }\n };\n /**\n * `Dereferences` the specified primitive object.\n * @private\n */\n PdfCrossTable.dereference = function (obj) {\n var rh = obj;\n if (rh != null) {\n obj = rh.object;\n }\n return obj;\n };\n return PdfCrossTable;\n}());\nexport { PdfCrossTable };\nvar RegisteredObject = /** @class */ (function () {\n function RegisteredObject(offset, reference, free) {\n var tempOffset = offset;\n this.offsetNumber = tempOffset;\n var tempReference = reference;\n this.generation = tempReference.genNumber;\n this.object = tempReference.objNumber;\n if (typeof free === 'undefined') {\n this.type = ObjectType.Normal;\n }\n else {\n this.type = ObjectType.Free;\n }\n }\n Object.defineProperty(RegisteredObject.prototype, \"objectNumber\", {\n //Properties\n /**\n * Gets the `object number`.\n * @private\n */\n get: function () {\n return this.object;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RegisteredObject.prototype, \"offset\", {\n /**\n * Gets the `offset`.\n * @private\n */\n get: function () {\n var result;\n result = this.offsetNumber;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n return RegisteredObject;\n}());\nexport { RegisteredObject };\n","/**\n * Coordinates of Position for `PointF`.\n * @private\n */\nvar PointF = /** @class */ (function () {\n function PointF(x, y) {\n if (typeof x === 'undefined') {\n this.x = 0;\n this.y = 0;\n }\n else {\n if (x !== null) {\n this.x = x;\n }\n else {\n this.x = 0;\n }\n if (y !== null) {\n this.y = y;\n }\n else {\n this.y = 0;\n }\n }\n }\n return PointF;\n}());\nexport { PointF };\n/**\n * Width and Height as `Size`.\n * @private\n */\nvar SizeF = /** @class */ (function () {\n function SizeF(width, height) {\n if (typeof height === 'undefined') {\n this.height = 0;\n this.width = 0;\n }\n else {\n if (height !== null) {\n this.height = height;\n }\n else {\n this.height = 0;\n }\n if (width !== null) {\n this.width = width;\n }\n else {\n this.width = 0;\n }\n }\n }\n return SizeF;\n}());\nexport { SizeF };\n/**\n * `RectangleF` with Position and size.\n * @private\n */\nvar RectangleF = /** @class */ (function () {\n function RectangleF(arg1, arg2, arg3, arg4) {\n if (typeof arg1 === typeof arg1 && typeof arg1 === 'undefined') {\n this.x = 0;\n this.y = 0;\n this.height = 0;\n this.width = 0;\n }\n else {\n if (arg1 instanceof PointF && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n var pointf = arg1;\n this.x = pointf.x;\n this.y = pointf.y;\n var sizef = arg2;\n this.height = sizef.height;\n this.width = sizef.width;\n }\n else {\n var x = arg1;\n var y = arg2;\n var width = arg3;\n var height = arg4;\n this.x = x;\n this.y = y;\n this.height = height;\n this.width = width;\n }\n }\n }\n return RectangleF;\n}());\nexport { RectangleF };\n/**\n * `Rectangle` with left, right, top and bottom.\n * @private\n */\nvar Rectangle = /** @class */ (function () {\n /**\n * Instance of `RectangleF` class with X, Y, Width and Height.\n * @private\n */\n function Rectangle(left, top, right, bottom) {\n this.left = left;\n this.top = top;\n this.right = right;\n this.bottom = bottom;\n }\n Object.defineProperty(Rectangle.prototype, \"width\", {\n /**\n * Gets a value of width\n */\n get: function () {\n return this.right - this.left;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"height\", {\n /**\n * Gets a value of height\n */\n get: function () {\n return this.bottom - this.top;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"topLeft\", {\n /**\n * Gets a value of Top and Left\n */\n get: function () {\n return new PointF(this.left, this.top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"size\", {\n /**\n * Gets a value of size\n */\n get: function () {\n return new SizeF(this.width, this.height);\n },\n enumerable: true,\n configurable: true\n });\n Rectangle.prototype.toString = function () {\n return this.topLeft + 'x' + this.size;\n };\n return Rectangle;\n}());\nexport { Rectangle };\n","/**\n * PdfPageSize.ts class for EJ2-PDF\n */\nimport { SizeF } from './../drawing/pdf-drawing';\n/**\n * Represents information about various predefined `page sizes`.\n */\nvar PdfPageSize = /** @class */ (function () {\n //constructor\n /**\n * Initialize an instance for `PdfPageSize` class.\n * @private\n */\n function PdfPageSize() {\n // \n }\n /**\n * Specifies the size of `letter`.\n * @private\n */\n PdfPageSize.letter = new SizeF(612, 792);\n /**\n * Specifies the size of `note`.\n * @private\n */\n PdfPageSize.note = new SizeF(540, 720);\n /**\n * Specifies the size of `legal`.\n * @private\n */\n PdfPageSize.legal = new SizeF(612, 1008);\n /**\n * Specifies the size of `a0`.\n * @private\n */\n PdfPageSize.a0 = new SizeF(2380, 3368);\n /**\n * Specifies the size of `a1`.\n * @private\n */\n PdfPageSize.a1 = new SizeF(1684, 2380);\n /**\n * Specifies the size of `a2`.\n * @private\n */\n PdfPageSize.a2 = new SizeF(1190, 1684);\n /**\n * Specifies the size of `a3`.\n * @private\n */\n PdfPageSize.a3 = new SizeF(842, 1190);\n /**\n * Specifies the size of `a4`.\n * @private\n */\n PdfPageSize.a4 = new SizeF(595, 842);\n /**\n * Specifies the size of `a5`.\n * @private\n */\n PdfPageSize.a5 = new SizeF(421, 595);\n /**\n * Specifies the size of `a6`.\n * @private\n */\n PdfPageSize.a6 = new SizeF(297, 421);\n /**\n * Specifies the size of `a7`.\n * @private\n */\n PdfPageSize.a7 = new SizeF(210, 297);\n /**\n * Specifies the size of `a8`.\n * @private\n */\n PdfPageSize.a8 = new SizeF(148, 210);\n /**\n * Specifies the size of `a9`.\n * @private\n */\n PdfPageSize.a9 = new SizeF(105, 148);\n /**\n * Specifies the size of `a10`.\n * @private\n */\n PdfPageSize.a10 = new SizeF(74, 105);\n /**\n * Specifies the size of `b0`.\n * @private\n */\n PdfPageSize.b0 = new SizeF(2836, 4008);\n /**\n * Specifies the size of `b1`.\n * @private\n */\n PdfPageSize.b1 = new SizeF(2004, 2836);\n /**\n * Specifies the size of `b2`.\n * @private\n */\n PdfPageSize.b2 = new SizeF(1418, 2004);\n /**\n * Specifies the size of `b3`.\n * @private\n */\n PdfPageSize.b3 = new SizeF(1002, 1418);\n /**\n * Specifies the size of `b4`.\n * @private\n */\n PdfPageSize.b4 = new SizeF(709, 1002);\n /**\n * Specifies the size of `b5`.\n * @private\n */\n PdfPageSize.b5 = new SizeF(501, 709);\n /**\n * Specifies the size of `archE`.\n * @private\n */\n PdfPageSize.archE = new SizeF(2592, 3456);\n /**\n * Specifies the size of `archD`.\n * @private\n */\n PdfPageSize.archD = new SizeF(1728, 2592);\n /**\n * Specifies the size of `archC`.\n * @private\n */\n PdfPageSize.archC = new SizeF(1296, 1728);\n /**\n * Specifies the size of `archB`.\n * @private\n */\n PdfPageSize.archB = new SizeF(864, 1296);\n /**\n * Specifies the size of `archA`.\n * @private\n */\n PdfPageSize.archA = new SizeF(648, 864);\n /**\n * Specifies the size of `flsa`.\n * @private\n */\n PdfPageSize.flsa = new SizeF(612, 936);\n /**\n * Specifies the size of `halfLetter`.\n * @private\n */\n PdfPageSize.halfLetter = new SizeF(396, 612);\n /**\n * Specifies the size of `letter11x17`.\n * @private\n */\n PdfPageSize.letter11x17 = new SizeF(792, 1224);\n /**\n * Specifies the size of `ledger`.\n * @private\n */\n PdfPageSize.ledger = new SizeF(1224, 792);\n return PdfPageSize;\n}());\nexport { PdfPageSize };\n","/**\n * PdfMargins.ts class for EJ2-PDF\n * A class representing PDF page margins.\n */\nvar PdfMargins = /** @class */ (function () {\n /**\n * Initializes a new instance of the `PdfMargins` class.\n * @private\n */\n function PdfMargins() {\n /**\n * Represents the `Default Page Margin` value.\n * @default 0.0\n * @private\n */\n this.pdfMargin = 40.0;\n this.setMargins(this.pdfMargin);\n }\n Object.defineProperty(PdfMargins.prototype, \"left\", {\n //Properties\n /**\n * Gets or sets the `left margin` size.\n * @private\n */\n get: function () {\n return this.leftMargin;\n },\n set: function (value) {\n this.leftMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"top\", {\n /**\n * Gets or sets the `top margin` size.\n * @private\n */\n get: function () {\n return this.topMargin;\n },\n set: function (value) {\n this.topMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"right\", {\n /**\n * Gets or sets the `right margin` size.\n * @private\n */\n get: function () {\n return this.rightMargin;\n },\n set: function (value) {\n this.rightMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"bottom\", {\n /**\n * Gets or sets the `bottom margin` size.\n * @private\n */\n get: function () {\n return this.bottomMargin;\n },\n set: function (value) {\n this.bottomMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"all\", {\n /**\n * Sets the `margins`.\n * @private\n */\n set: function (value) {\n this.setMargins(value);\n },\n enumerable: true,\n configurable: true\n });\n PdfMargins.prototype.setMargins = function (margin1, margin2, margin3, margin4) {\n if (typeof margin2 === 'undefined') {\n this.leftMargin = this.topMargin = this.rightMargin = this.bottomMargin = margin1;\n }\n else {\n if (typeof margin3 === 'undefined') {\n this.leftMargin = this.rightMargin = margin1;\n this.bottomMargin = this.topMargin = margin2;\n }\n else {\n this.leftMargin = margin1;\n this.topMargin = margin2;\n this.rightMargin = margin3;\n this.bottomMargin = margin4;\n }\n }\n };\n /**\n * `Clones` the object.\n * @private\n */\n PdfMargins.prototype.clone = function () {\n return this;\n };\n return PdfMargins;\n}());\nexport { PdfMargins };\n","/**\n * public Enum for `PdfHorizontalAlignment`.\n * @private\n */\nexport var PdfHorizontalAlignment;\n(function (PdfHorizontalAlignment) {\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Left\"] = 0] = \"Left\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Right\"] = 2] = \"Right\";\n})(PdfHorizontalAlignment || (PdfHorizontalAlignment = {}));\n/**\n * public Enum for `PdfVerticalAlignment`.\n * @private\n */\nexport var PdfVerticalAlignment;\n(function (PdfVerticalAlignment) {\n /**\n * Specifies the type of `Top`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Top\"] = 0] = \"Top\";\n /**\n * Specifies the type of `Middle`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Middle\"] = 1] = \"Middle\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Bottom\"] = 2] = \"Bottom\";\n})(PdfVerticalAlignment || (PdfVerticalAlignment = {}));\n/**\n * public Enum for `public`.\n * @private\n */\nexport var PdfTextAlignment;\n(function (PdfTextAlignment) {\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Left\"] = 0] = \"Left\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Right\"] = 2] = \"Right\";\n /**\n * Specifies the type of `Justify`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Justify\"] = 3] = \"Justify\";\n})(PdfTextAlignment || (PdfTextAlignment = {}));\n/**\n * public Enum for `TextRenderingMode`.\n * @private\n */\nexport var TextRenderingMode;\n(function (TextRenderingMode) {\n /**\n * Specifies the type of `Fill`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Fill\"] = 0] = \"Fill\";\n /**\n * Specifies the type of `Stroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Stroke\"] = 1] = \"Stroke\";\n /**\n * Specifies the type of `FillStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"FillStroke\"] = 2] = \"FillStroke\";\n /**\n * Specifies the type of `None`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"None\"] = 3] = \"None\";\n /**\n * Specifies the type of `ClipFlag`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFlag\"] = 4] = \"ClipFlag\";\n /**\n * Specifies the type of `ClipFill`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFill\"] = 4] = \"ClipFill\";\n /**\n * Specifies the type of `ClipStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipStroke\"] = 5] = \"ClipStroke\";\n /**\n * Specifies the type of `ClipFillStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFillStroke\"] = 6] = \"ClipFillStroke\";\n /**\n * Specifies the type of `Clip`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Clip\"] = 7] = \"Clip\";\n})(TextRenderingMode || (TextRenderingMode = {}));\n/**\n * public Enum for `PdfLineJoin`.\n * @private\n */\nexport var PdfLineJoin;\n(function (PdfLineJoin) {\n /**\n * Specifies the type of `Miter`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Miter\"] = 0] = \"Miter\";\n /**\n * Specifies the type of `Round`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Round\"] = 1] = \"Round\";\n /**\n * Specifies the type of `Bevel`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Bevel\"] = 2] = \"Bevel\";\n})(PdfLineJoin || (PdfLineJoin = {}));\n/**\n * public Enum for `PdfLineCap`.\n * @private\n */\nexport var PdfLineCap;\n(function (PdfLineCap) {\n /**\n * Specifies the type of `Flat`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Flat\"] = 0] = \"Flat\";\n /**\n * Specifies the type of `Round`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Round\"] = 1] = \"Round\";\n /**\n * Specifies the type of `Square`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Square\"] = 2] = \"Square\";\n})(PdfLineCap || (PdfLineCap = {}));\n/**\n * public Enum for `PdfDashStyle`.\n * @private\n */\nexport var PdfDashStyle;\n(function (PdfDashStyle) {\n /**\n * Specifies the type of `Solid`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Solid\"] = 0] = \"Solid\";\n /**\n * Specifies the type of `Dash`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Dash\"] = 1] = \"Dash\";\n /**\n * Specifies the type of `Dot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Dot\"] = 2] = \"Dot\";\n /**\n * Specifies the type of `DashDot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"DashDot\"] = 3] = \"DashDot\";\n /**\n * Specifies the type of `DashDotDot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"DashDotDot\"] = 4] = \"DashDotDot\";\n /**\n * Specifies the type of `Custom`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Custom\"] = 5] = \"Custom\";\n})(PdfDashStyle || (PdfDashStyle = {}));\n/**\n * public Enum for `PdfFillMode`.\n * @private\n */\nexport var PdfFillMode;\n(function (PdfFillMode) {\n /**\n * Specifies the type of `Winding`.\n * @private\n */\n PdfFillMode[PdfFillMode[\"Winding\"] = 0] = \"Winding\";\n /**\n * Specifies the type of `Alternate`.\n * @private\n */\n PdfFillMode[PdfFillMode[\"Alternate\"] = 1] = \"Alternate\";\n})(PdfFillMode || (PdfFillMode = {}));\n/**\n * public Enum for `PdfColorSpace`.\n * @private\n */\nexport var PdfColorSpace;\n(function (PdfColorSpace) {\n /**\n * Specifies the type of `Rgb`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Rgb\"] = 0] = \"Rgb\";\n /**\n * Specifies the type of `Cmyk`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Cmyk\"] = 1] = \"Cmyk\";\n /**\n * Specifies the type of `GrayScale`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"GrayScale\"] = 2] = \"GrayScale\";\n /**\n * Specifies the type of `Indexed`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Indexed\"] = 3] = \"Indexed\";\n})(PdfColorSpace || (PdfColorSpace = {}));\n/**\n * public Enum for `PdfBlendMode`.\n * @private\n */\nexport var PdfBlendMode;\n(function (PdfBlendMode) {\n /**\n * Specifies the type of `Normal`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Normal\"] = 0] = \"Normal\";\n /**\n * Specifies the type of `Multiply`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Multiply\"] = 1] = \"Multiply\";\n /**\n * Specifies the type of `Screen`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Screen\"] = 2] = \"Screen\";\n /**\n * Specifies the type of `Overlay`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Overlay\"] = 3] = \"Overlay\";\n /**\n * Specifies the type of `Darken`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Darken\"] = 4] = \"Darken\";\n /**\n * Specifies the type of `Lighten`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Lighten\"] = 5] = \"Lighten\";\n /**\n * Specifies the type of `ColorDodge`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"ColorDodge\"] = 6] = \"ColorDodge\";\n /**\n * Specifies the type of `ColorBurn`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"ColorBurn\"] = 7] = \"ColorBurn\";\n /**\n * Specifies the type of `HardLight`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"HardLight\"] = 8] = \"HardLight\";\n /**\n * Specifies the type of `SoftLight`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"SoftLight\"] = 9] = \"SoftLight\";\n /**\n * Specifies the type of `Difference`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Difference\"] = 10] = \"Difference\";\n /**\n * Specifies the type of `Exclusion`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Exclusion\"] = 11] = \"Exclusion\";\n /**\n * Specifies the type of `Hue`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Hue\"] = 12] = \"Hue\";\n /**\n * Specifies the type of `Saturation`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Saturation\"] = 13] = \"Saturation\";\n /**\n * Specifies the type of `Color`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Color\"] = 14] = \"Color\";\n /**\n * Specifies the type of `Luminosity`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Luminosity\"] = 15] = \"Luminosity\";\n})(PdfBlendMode || (PdfBlendMode = {}));\n/**\n * public Enum for `PdfGraphicsUnit`.\n * @private\n */\nexport var PdfGraphicsUnit;\n(function (PdfGraphicsUnit) {\n /**\n * Specifies the type of `Centimeter`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Centimeter\"] = 0] = \"Centimeter\";\n /**\n * Specifies the type of `Pica`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Pica\"] = 1] = \"Pica\";\n /**\n * Specifies the type of `Pixel`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Pixel\"] = 2] = \"Pixel\";\n /**\n * Specifies the type of `Point`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Point\"] = 3] = \"Point\";\n /**\n * Specifies the type of `Inch`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Inch\"] = 4] = \"Inch\";\n /**\n * Specifies the type of `Document`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Document\"] = 5] = \"Document\";\n /**\n * Specifies the type of `Millimeter`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Millimeter\"] = 6] = \"Millimeter\";\n})(PdfGraphicsUnit || (PdfGraphicsUnit = {}));\n/**\n * public Enum for `PdfGridImagePosition`.\n * @private\n */\nexport var PdfGridImagePosition;\n(function (PdfGridImagePosition) {\n /**\n * Specifies the type of `Fit`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Fit\"] = 0] = \"Fit\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Stretch`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Stretch\"] = 2] = \"Stretch\";\n /**\n * Specifies the type of `Tile`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Tile\"] = 3] = \"Tile\";\n})(PdfGridImagePosition || (PdfGridImagePosition = {}));\n/**\n * public Enum for `the text rendering direction`.\n * @private\n */\nexport var PdfTextDirection;\n(function (PdfTextDirection) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `LeftToRight`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"LeftToRight\"] = 1] = \"LeftToRight\";\n /**\n * Specifies the type of `RightToLeft`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"RightToLeft\"] = 2] = \"RightToLeft\";\n})(PdfTextDirection || (PdfTextDirection = {}));\n","/**\n * public Enum for `PdfFontStyle`.\n * @private\n */\nexport var PdfFontStyle;\n(function (PdfFontStyle) {\n /**\n * Specifies the type of `Regular`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Regular\"] = 0] = \"Regular\";\n /**\n * Specifies the type of `Bold`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Bold\"] = 1] = \"Bold\";\n /**\n * Specifies the type of `Italic`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Italic\"] = 2] = \"Italic\";\n /**\n * Specifies the type of `Underline`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Underline\"] = 4] = \"Underline\";\n /**\n * Specifies the type of `Strikeout`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Strikeout\"] = 8] = \"Strikeout\";\n})(PdfFontStyle || (PdfFontStyle = {}));\n/**\n * Specifies the font family from the standard font.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * ```\n */\nexport var PdfFontFamily;\n(function (PdfFontFamily) {\n /**\n * Specifies the `Helvetica` font.\n */\n PdfFontFamily[PdfFontFamily[\"Helvetica\"] = 0] = \"Helvetica\";\n /**\n * Specifies the `Courier` font.\n */\n PdfFontFamily[PdfFontFamily[\"Courier\"] = 1] = \"Courier\";\n /**\n * Specifies the `TimesRoman` font.\n */\n PdfFontFamily[PdfFontFamily[\"TimesRoman\"] = 2] = \"TimesRoman\";\n /**\n * Specifies the `Symbol` font.\n */\n PdfFontFamily[PdfFontFamily[\"Symbol\"] = 3] = \"Symbol\";\n /**\n * Specifies the `ZapfDingbats` font.\n */\n PdfFontFamily[PdfFontFamily[\"ZapfDingbats\"] = 4] = \"ZapfDingbats\";\n})(PdfFontFamily || (PdfFontFamily = {}));\n/**\n * public Enum for `PdfFontType`.\n * @private\n */\nexport var PdfFontType;\n(function (PdfFontType) {\n /**\n * Specifies the type of `Standard`.\n * @private\n */\n PdfFontType[PdfFontType[\"Standard\"] = 0] = \"Standard\";\n /**\n * Specifies the type of `TrueType`.\n * @private\n */\n PdfFontType[PdfFontType[\"TrueType\"] = 1] = \"TrueType\";\n /**\n * Specifies the type of `TrueTypeEmbedded`.\n * @private\n */\n PdfFontType[PdfFontType[\"TrueTypeEmbedded\"] = 2] = \"TrueTypeEmbedded\";\n})(PdfFontType || (PdfFontType = {}));\n/**\n * public Enum for `PdfWordWrapType`.\n * @private\n */\nexport var PdfWordWrapType;\n(function (PdfWordWrapType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Word`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"Word\"] = 1] = \"Word\";\n /**\n * Specifies the type of `WordOnly`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"WordOnly\"] = 2] = \"WordOnly\";\n /**\n * Specifies the type of `Character`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"Character\"] = 3] = \"Character\";\n})(PdfWordWrapType || (PdfWordWrapType = {}));\n/**\n * public Enum for `PdfSubSuperScript`.\n * @private\n */\nexport var PdfSubSuperScript;\n(function (PdfSubSuperScript) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `SuperScript`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"SuperScript\"] = 1] = \"SuperScript\";\n /**\n * Specifies the type of `SubScript`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"SubScript\"] = 2] = \"SubScript\";\n})(PdfSubSuperScript || (PdfSubSuperScript = {}));\n/**\n * public Enum for `FontEncoding`.\n * @private\n */\nexport var FontEncoding;\n(function (FontEncoding) {\n /**\n * Specifies the type of `Unknown`.\n * @private\n */\n FontEncoding[FontEncoding[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * Specifies the type of `StandardEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"StandardEncoding\"] = 1] = \"StandardEncoding\";\n /**\n * Specifies the type of `MacRomanEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"MacRomanEncoding\"] = 2] = \"MacRomanEncoding\";\n /**\n * Specifies the type of `MacExpertEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"MacExpertEncoding\"] = 3] = \"MacExpertEncoding\";\n /**\n * Specifies the type of `WinAnsiEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"WinAnsiEncoding\"] = 4] = \"WinAnsiEncoding\";\n /**\n * Specifies the type of `PdfDocEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"PdfDocEncoding\"] = 5] = \"PdfDocEncoding\";\n /**\n * Specifies the type of `IdentityH`.\n * @private\n */\n FontEncoding[FontEncoding[\"IdentityH\"] = 6] = \"IdentityH\";\n})(FontEncoding || (FontEncoding = {}));\n/**\n * public Enum for `TtfCmapFormat`.\n * @private\n */\nexport var TtfCmapFormat;\n(function (TtfCmapFormat) {\n /**\n * This is the Apple standard character to glyph index mapping table.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Apple\"] = 0] = \"Apple\";\n /**\n * This is the Microsoft standard character to glyph index mapping table.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Microsoft\"] = 4] = \"Microsoft\";\n /**\n * Format 6: Trimmed table mapping.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Trimmed\"] = 6] = \"Trimmed\";\n})(TtfCmapFormat || (TtfCmapFormat = {}));\n/**\n * Enumerator that implements CMAP encodings.\n * @private\n */\nexport var TtfCmapEncoding;\n(function (TtfCmapEncoding) {\n /**\n * Unknown encoding.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * When building a symbol font for Windows.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Symbol\"] = 1] = \"Symbol\";\n /**\n * When building a Unicode font for Windows.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Unicode\"] = 2] = \"Unicode\";\n /**\n * For font that will be used on a Macintosh.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Macintosh\"] = 3] = \"Macintosh\";\n})(TtfCmapEncoding || (TtfCmapEncoding = {}));\n/**\n * Ttf platform ID.\n * @private\n */\nexport var TtfPlatformID;\n(function (TtfPlatformID) {\n /**\n * Apple platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"AppleUnicode\"] = 0] = \"AppleUnicode\";\n /**\n * Macintosh platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Macintosh\"] = 1] = \"Macintosh\";\n /**\n * Iso platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Iso\"] = 2] = \"Iso\";\n /**\n * Microsoft platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Microsoft\"] = 3] = \"Microsoft\";\n})(TtfPlatformID || (TtfPlatformID = {}));\n/**\n * Microsoft encoding ID.\n * @private\n */\nexport var TtfMicrosoftEncodingID;\n(function (TtfMicrosoftEncodingID) {\n /**\n * Undefined encoding.\n * @private\n */\n TtfMicrosoftEncodingID[TtfMicrosoftEncodingID[\"Undefined\"] = 0] = \"Undefined\";\n /**\n * Unicode encoding.\n * @private\n */\n TtfMicrosoftEncodingID[TtfMicrosoftEncodingID[\"Unicode\"] = 1] = \"Unicode\";\n})(TtfMicrosoftEncodingID || (TtfMicrosoftEncodingID = {}));\n/**\n * Macintosh encoding ID.\n * @private\n */\nexport var TtfMacintoshEncodingID;\n(function (TtfMacintoshEncodingID) {\n /**\n * Roman encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Roman\"] = 0] = \"Roman\";\n /**\n * Japanese encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Japanese\"] = 1] = \"Japanese\";\n /**\n * Chinese encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Chinese\"] = 2] = \"Chinese\";\n})(TtfMacintoshEncodingID || (TtfMacintoshEncodingID = {}));\n/**\n * Enumerator that implements font descriptor flags.\n * @private\n */\nexport var FontDescriptorFlags;\n(function (FontDescriptorFlags) {\n /**\n * All glyphs have the same width (as opposed to proportional or variable-pitch fonts, which have different widths).\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"FixedPitch\"] = 1] = \"FixedPitch\";\n /**\n * Glyphs have serifs, which are short strokes drawn at an angle on the top and\n * bottom of glyph stems (as opposed to sans serif fonts, which do not).\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Serif\"] = 2] = \"Serif\";\n /**\n * Font contains glyphs outside the Adobe standard Latin character set. The\n * flag and the nonsymbolic flag cannot both be set or both be clear.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Symbolic\"] = 4] = \"Symbolic\";\n /**\n * Glyphs resemble cursive handwriting.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Script\"] = 8] = \"Script\";\n /**\n * Font uses the Adobe standard Latin character set or a subset of it.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Nonsymbolic\"] = 32] = \"Nonsymbolic\";\n /**\n * Glyphs have dominant vertical strokes that are slanted.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Italic\"] = 64] = \"Italic\";\n /**\n * Bold font.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"ForceBold\"] = 262144] = \"ForceBold\";\n})(FontDescriptorFlags || (FontDescriptorFlags = {}));\n/**\n * true type font composite glyph flags.\n * @private\n */\nexport var TtfCompositeGlyphFlags;\n(function (TtfCompositeGlyphFlags) {\n /**\n * The Arg1And2AreWords.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"Arg1And2AreWords\"] = 1] = \"Arg1And2AreWords\";\n /**\n * The ArgsAreXyValues.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"ArgsAreXyValues\"] = 2] = \"ArgsAreXyValues\";\n /**\n * The RoundXyToGrid.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"RoundXyToGrid\"] = 4] = \"RoundXyToGrid\";\n /**\n * The WeHaveScale.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveScale\"] = 8] = \"WeHaveScale\";\n /**\n * The Reserved.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"Reserved\"] = 16] = \"Reserved\";\n /**\n * The MoreComponents.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"MoreComponents\"] = 32] = \"MoreComponents\";\n /**\n * The WeHaveAnXyScale.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveAnXyScale\"] = 64] = \"WeHaveAnXyScale\";\n /**\n * The WeHaveTwoByTwo\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveTwoByTwo\"] = 128] = \"WeHaveTwoByTwo\";\n /**\n * The WeHaveInstructions.\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveInstructions\"] = 256] = \"WeHaveInstructions\";\n /**\n * The UseMyMetrics.\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"UseMyMetrics\"] = 512] = \"UseMyMetrics\";\n})(TtfCompositeGlyphFlags || (TtfCompositeGlyphFlags = {}));\n","/**\n * PdfPageSettings.ts class for EJ2-PDF\n */\nimport { SizeF, PointF } from './../drawing/pdf-drawing';\nimport { PdfPageSize } from './pdf-page-size';\nimport { PdfPageRotateAngle, PdfPageOrientation } from './enum';\nimport { PdfMargins } from './../graphics/pdf-margins';\n/**\n * The class provides various `setting` related with PDF pages.\n */\nvar PdfPageSettings = /** @class */ (function () {\n function PdfPageSettings(margins) {\n //Fields\n /**\n * The page `margins`.\n * @private\n */\n this.pageMargins = new PdfMargins();\n /**\n * The page `size`.\n * @default a4\n * @private\n */\n this.pageSize = PdfPageSize.a4;\n /**\n * The page `rotation angle`.\n * @default PdfPageRotateAngle.RotateAngle0\n * @private\n */\n this.rotateAngle = PdfPageRotateAngle.RotateAngle0;\n /**\n * The page `orientation`.\n * @default PdfPageOrientation.Portrait\n * @private\n */\n this.pageOrientation = PdfPageOrientation.Portrait;\n /**\n * The page `origin`.\n * @default 0,0\n * @private\n */\n this.pageOrigin = new PointF(0, 0);\n /**\n * Checks the Whether the `rotation` is applied or not.\n * @default false\n * @private\n */\n this.isRotation = false;\n if (typeof margins === 'number') {\n this.pageMargins.setMargins(margins);\n }\n }\n Object.defineProperty(PdfPageSettings.prototype, \"size\", {\n //Properties\n /**\n * Gets or sets the `size` of the page.\n * @private\n */\n get: function () {\n return this.pageSize;\n },\n set: function (value) {\n this.setSize(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"orientation\", {\n /**\n * Gets or sets the page `orientation`.\n * @private\n */\n get: function () {\n return this.pageOrientation;\n },\n set: function (orientation) {\n if (this.pageOrientation !== orientation) {\n this.pageOrientation = orientation;\n this.updateSize(orientation);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"margins\", {\n /**\n * Gets or sets the `margins` of the page.\n * @private\n */\n get: function () {\n return this.pageMargins;\n },\n set: function (value) {\n this.pageMargins = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"width\", {\n /**\n * Gets or sets the `width` of the page.\n * @private\n */\n get: function () {\n return this.pageSize.width;\n },\n set: function (value) {\n this.pageSize.width = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"height\", {\n /**\n * Gets or sets the `height` of the page.\n * @private\n */\n get: function () {\n return this.pageSize.height;\n },\n set: function (value) {\n this.pageSize.height = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"origin\", {\n /**\n * Gets or sets the `origin` of the page.\n * @private\n */\n get: function () {\n return this.pageOrigin;\n },\n set: function (value) {\n this.pageOrigin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"rotate\", {\n /**\n * Gets or sets the number of degrees by which the page should be `rotated` clockwise when displayed or printed.\n * @private\n */\n get: function () {\n return this.rotateAngle;\n },\n set: function (value) {\n this.rotateAngle = value;\n this.isRotation = true;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * `Update page size` depending on orientation.\n * @private\n */\n PdfPageSettings.prototype.updateSize = function (orientation) {\n var min = Math.min(this.pageSize.width, this.pageSize.height);\n var max = Math.max(this.pageSize.width, this.pageSize.height);\n switch (orientation) {\n case PdfPageOrientation.Portrait:\n this.pageSize = new SizeF(min, max);\n break;\n case PdfPageOrientation.Landscape:\n this.pageSize = new SizeF(max, min);\n break;\n }\n };\n /**\n * Creates a `clone` of the object.\n * @private\n */\n PdfPageSettings.prototype.clone = function () {\n var settings = this;\n settings.pageMargins = this.pageMargins.clone();\n // if (GetTransition() != null)\n // {\n // settings.Transition = (PdfPageTransition)Transition.clone();\n // }\n return settings;\n };\n /**\n * Returns `size`, shrinked by the margins.\n * @private\n */\n PdfPageSettings.prototype.getActualSize = function () {\n var width = this.width - (this.margins.left + this.margins.right);\n var height = this.height - (this.margins.top + this.margins.bottom);\n var size = new SizeF(width, height);\n return size;\n };\n /**\n * Sets `size` to the page aaccording to the orientation.\n * @private\n */\n PdfPageSettings.prototype.setSize = function (size) {\n var min = Math.min(size.width, size.height);\n var max = Math.max(size.width, size.height);\n if (this.orientation === PdfPageOrientation.Portrait) {\n this.pageSize = new SizeF(min, max);\n }\n else {\n this.pageSize = new SizeF(max, min);\n }\n };\n return PdfPageSettings;\n}());\nexport { PdfPageSettings };\n","import { Operators } from './pdf-operators';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PointF, RectangleF } from './../drawing/pdf-drawing';\nimport { PdfString } from './../primitives/pdf-string';\nimport { PdfName } from './../primitives/pdf-name';\n/**\n * Helper class to `write PDF graphic streams` easily.\n * @private\n */\nvar PdfStreamWriter = /** @class */ (function () {\n /**\n * Initialize an instance of `PdfStreamWriter` class.\n * @private\n */\n function PdfStreamWriter(stream) {\n if (stream == null) {\n throw new Error('ArgumentNullException:stream');\n }\n this.stream = stream;\n }\n //Implementation\n /**\n * `Clear` the stream.\n * @public\n */\n PdfStreamWriter.prototype.clear = function () {\n this.stream.clearStream();\n };\n PdfStreamWriter.prototype.setGraphicsState = function (dictionaryName) {\n if (dictionaryName instanceof PdfName) {\n this.stream.write(dictionaryName.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setGraphicsState);\n }\n else {\n this.stream.write(Operators.slash);\n this.stream.write(dictionaryName);\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setGraphicsState);\n }\n };\n /**\n * `Executes the XObject`.\n * @private\n */\n PdfStreamWriter.prototype.executeObject = function (name) {\n this.stream.write(name.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.paintXObject);\n this.stream.write(Operators.newLine);\n };\n /**\n * `Closes path object`.\n * @private\n */\n PdfStreamWriter.prototype.closePath = function () {\n this.writeOperator(Operators.closePath);\n };\n /**\n * `Clips the path`.\n * @private\n */\n PdfStreamWriter.prototype.clipPath = function (useEvenOddRule) {\n this.stream.write(Operators.clipPath);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n }\n this.stream.write(Operators.whiteSpace);\n this.stream.write(Operators.endPath);\n this.stream.write(Operators.newLine);\n };\n /**\n * `Closes, then fills and strokes the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeFillStrokePath = function (useEvenOddRule) {\n this.stream.write(Operators.closeFillStrokePath);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Fills and strokes path`.\n * @private\n */\n PdfStreamWriter.prototype.fillStrokePath = function (useEvenOddRule) {\n this.stream.write(Operators.fillStroke);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Fills path`.\n * @private\n */\n PdfStreamWriter.prototype.fillPath = function (useEvenOddRule) {\n this.stream.write(Operators.fill);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Ends the path`.\n * @private\n */\n PdfStreamWriter.prototype.endPath = function () {\n this.writeOperator(Operators.n);\n };\n /**\n * `Closes and fills the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeFillPath = function (useEvenOddRule) {\n this.writeOperator(Operators.closePath);\n this.stream.write(Operators.fill);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Closes and strokes the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeStrokePath = function () {\n this.writeOperator(Operators.closeStrokePath);\n };\n /**\n * `Sets the text scaling`.\n * @private\n */\n PdfStreamWriter.prototype.setTextScaling = function (textScaling) {\n this.stream.write(PdfNumber.floatToString(textScaling));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setTextScaling);\n };\n /**\n * `Strokes path`.\n * @private\n */\n PdfStreamWriter.prototype.strokePath = function () {\n this.writeOperator(Operators.stroke);\n };\n /**\n * `Restores` the graphics state.\n * @private\n */\n PdfStreamWriter.prototype.restoreGraphicsState = function () {\n this.writeOperator(Operators.restoreState);\n };\n /**\n * `Saves` the graphics state.\n * @private\n */\n PdfStreamWriter.prototype.saveGraphicsState = function () {\n this.writeOperator(Operators.saveState);\n };\n PdfStreamWriter.prototype.startNextLine = function (arg1, arg2) {\n if (typeof arg1 === 'undefined') {\n this.writeOperator(Operators.goToNextLine);\n }\n else if (arg1 instanceof PointF) {\n this.writePoint(arg1);\n this.writeOperator(Operators.setCoords);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writeOperator(Operators.setCoords);\n }\n };\n /**\n * Shows the `text`.\n * @private\n */\n PdfStreamWriter.prototype.showText = function (text) {\n this.checkTextParam(text);\n this.writeText(text);\n this.writeOperator(Operators.setText);\n };\n /**\n * Sets `text leading`.\n * @private\n */\n PdfStreamWriter.prototype.setLeading = function (leading) {\n this.stream.write(PdfNumber.floatToString(leading));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setTextLeading);\n };\n /**\n * `Begins the path`.\n * @private\n */\n PdfStreamWriter.prototype.beginPath = function (x, y) {\n this.writePoint(x, y);\n this.writeOperator(Operators.beginPath);\n };\n /**\n * `Begins text`.\n * @private\n */\n PdfStreamWriter.prototype.beginText = function () {\n this.writeOperator(Operators.beginText);\n };\n /**\n * `Ends text`.\n * @private\n */\n PdfStreamWriter.prototype.endText = function () {\n this.writeOperator(Operators.endText);\n };\n PdfStreamWriter.prototype.appendRectangle = function (arg1, arg2, arg3, arg4) {\n if (arg1 instanceof RectangleF) {\n this.appendRectangle(arg1.x, arg1.y, arg1.width, arg1.height);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writePoint(arg3, arg4);\n this.writeOperator(Operators.appendRectangle);\n }\n };\n PdfStreamWriter.prototype.appendLineSegment = function (arg1, arg2) {\n if (arg1 instanceof PointF) {\n this.appendLineSegment(arg1.x, arg1.y);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writeOperator(Operators.appendLineSegment);\n }\n };\n /**\n * Sets the `text rendering mode`.\n * @private\n */\n PdfStreamWriter.prototype.setTextRenderingMode = function (renderingMode) {\n this.stream.write(renderingMode.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setRenderingMode);\n };\n /**\n * Sets the `character spacing`.\n * @private\n */\n PdfStreamWriter.prototype.setCharacterSpacing = function (charSpacing) {\n this.stream.write(PdfNumber.floatToString(charSpacing));\n this.stream.write(Operators.whiteSpace);\n this.stream.write(Operators.setCharacterSpace);\n this.stream.write(Operators.newLine);\n };\n /**\n * Sets the `word spacing`.\n * @private\n */\n PdfStreamWriter.prototype.setWordSpacing = function (wordSpacing) {\n this.stream.write(PdfNumber.floatToString(wordSpacing));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setWordSpace);\n };\n PdfStreamWriter.prototype.showNextLineText = function (arg1, arg2) {\n if (arg1 instanceof PdfString) {\n this.checkTextParam(arg1);\n this.writeText(arg1);\n this.writeOperator(Operators.setTextOnNewLine);\n }\n else {\n this.checkTextParam(arg1);\n this.writeText(arg1, arg2);\n this.writeOperator(Operators.setTextOnNewLine);\n }\n };\n PdfStreamWriter.prototype.setColorSpace = function (arg1, arg2) {\n if (arg1 instanceof PdfName && typeof arg2 === 'boolean') {\n var temparg1 = arg1;\n var temparg2 = arg2;\n // if (temparg1 == null) {\n // throw new Error('ArgumentNullException:name');\n // }\n var op = (temparg2) ? Operators.selectcolorspaceforstroking : Operators.selectcolorspacefornonstroking;\n this.stream.write(temparg1.toString());\n this.stream.write(Operators.whiteSpace);\n this.stream.write(op);\n this.stream.write(Operators.newLine);\n }\n else {\n var temparg1 = arg1;\n var temparg2 = arg2;\n this.setColorSpace(new PdfName(temparg1), temparg2);\n }\n };\n /**\n * Modifies current `transformation matrix`.\n * @private\n */\n PdfStreamWriter.prototype.modifyCtm = function (matrix) {\n if (matrix == null) {\n throw new Error('ArgumentNullException:matrix');\n }\n this.stream.write(matrix.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.modifyCtm);\n };\n PdfStreamWriter.prototype.setFont = function (font, name, size) {\n if (typeof name === 'string') {\n this.setFont(font, new PdfName(name), size);\n }\n else {\n if (font == null) {\n throw new Error('ArgumentNullException:font');\n }\n this.stream.write(name.toString());\n this.stream.write(Operators.whiteSpace);\n this.stream.write(PdfNumber.floatToString(size));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setFont);\n }\n };\n /**\n * `Writes the operator`.\n * @private\n */\n PdfStreamWriter.prototype.writeOperator = function (opcode) {\n this.stream.write(opcode);\n this.stream.write(Operators.newLine);\n };\n PdfStreamWriter.prototype.checkTextParam = function (text) {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (typeof text === 'string' && text === '') {\n throw new Error('ArgumentException:The text can not be an empty string, text');\n }\n };\n PdfStreamWriter.prototype.writeText = function (arg1, arg2) {\n if ((arg1 instanceof PdfString) && (typeof arg2 === 'undefined')) {\n this.stream.write(arg1.pdfEncode());\n }\n else {\n var start = void 0;\n var end = void 0;\n if (arg2) {\n start = PdfString.hexStringMark[0];\n end = PdfString.hexStringMark[1];\n }\n else {\n start = PdfString.stringMark[0];\n end = PdfString.stringMark[1];\n }\n this.stream.write(start);\n this.stream.write(arg1);\n this.stream.write(end);\n }\n };\n PdfStreamWriter.prototype.writePoint = function (arg1, arg2) {\n if ((arg1 instanceof PointF) && (typeof arg2 === 'undefined')) {\n this.writePoint(arg1.x, arg1.y);\n }\n else {\n var temparg1 = arg1;\n this.stream.write(PdfNumber.floatToString(temparg1));\n this.stream.write(Operators.whiteSpace);\n // NOTE: Change Y co-ordinate because we shifted co-ordinate system only.\n arg2 = this.updateY(arg2);\n this.stream.write(PdfNumber.floatToString(arg2));\n this.stream.write(Operators.whiteSpace);\n }\n };\n /**\n * `Updates y` co-ordinate.\n * @private\n */\n PdfStreamWriter.prototype.updateY = function (arg) {\n return -arg;\n };\n /**\n * `Writes string` to the file.\n * @private\n */\n PdfStreamWriter.prototype.write = function (string) {\n var builder = '';\n builder += string;\n builder += Operators.newLine;\n this.writeOperator(builder);\n };\n /**\n * `Writes comment` to the file.\n * @private\n */\n PdfStreamWriter.prototype.writeComment = function (comment) {\n if (comment != null && comment.length > 0) {\n var builder = '';\n builder += Operators.comment;\n builder += Operators.whiteSpace;\n builder += comment;\n //builder.Append( Operators.NewLine );\n this.writeOperator(builder);\n }\n else {\n throw new Error('Invalid comment');\n }\n };\n /**\n * Sets the `color and space`.\n * @private\n */\n PdfStreamWriter.prototype.setColorAndSpace = function (color, colorSpace, forStroking) {\n if (!color.isEmpty) {\n // bool test = color is PdfExtendedColor;\n this.stream.write(color.toString(colorSpace, forStroking));\n this.stream.write(Operators.newLine);\n }\n };\n // public setLineDashPattern(pattern : number[], patternOffset : number) : void\n // {\n // let pat : PdfArray = new PdfArray(pattern);\n // let off : PdfNumber = new PdfNumber(patternOffset);\n // this.setLineDashPatternHelper(pat, off);\n // }\n // private setLineDashPatternHelper(pattern : PdfArray, patternOffset : PdfNumber) : void\n // {\n // pattern.Save(this);\n // this.m_stream.write(Operators.whiteSpace);\n // patternOffset.Save(this);\n // this.m_stream.write(Operators.whiteSpace);\n // this.writeOperator(Operators.setDashPattern);\n // }\n /**\n * Sets the `line dash pattern`.\n * @private\n */\n PdfStreamWriter.prototype.setLineDashPattern = function (pattern, patternOffset) {\n // let pat : PdfArray = new PdfArray(pattern);\n // let off : PdfNumber = new PdfNumber(patternOffset);\n // this.setLineDashPatternHelper(pat, off);\n this.setLineDashPatternHelper(pattern, patternOffset);\n };\n /**\n * Sets the `line dash pattern`.\n * @private\n */\n PdfStreamWriter.prototype.setLineDashPatternHelper = function (pattern, patternOffset) {\n var tempPattern = '[';\n if (pattern.length > 1) {\n for (var index = 0; index < pattern.length; index++) {\n if (index === pattern.length - 1) {\n tempPattern += pattern[index].toString();\n }\n else {\n tempPattern += pattern[index].toString() + ' ';\n }\n }\n }\n tempPattern += '] ';\n tempPattern += patternOffset.toString();\n tempPattern += ' ' + Operators.setDashPattern;\n this.stream.write(tempPattern);\n this.stream.write(Operators.newLine);\n };\n /**\n * Sets the `miter limit`.\n * @private\n */\n PdfStreamWriter.prototype.setMiterLimit = function (miterLimit) {\n this.stream.write(PdfNumber.floatToString(miterLimit));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setMiterLimit);\n };\n /**\n * Sets the `width of the line`.\n * @private\n */\n PdfStreamWriter.prototype.setLineWidth = function (width) {\n this.stream.write(PdfNumber.floatToString(width));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineWidth);\n };\n /**\n * Sets the `line cap`.\n * @private\n */\n PdfStreamWriter.prototype.setLineCap = function (lineCapStyle) {\n this.stream.write((lineCapStyle).toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineCapStyle);\n };\n /**\n * Sets the `line join`.\n * @private\n */\n PdfStreamWriter.prototype.setLineJoin = function (lineJoinStyle) {\n this.stream.write((lineJoinStyle).toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineJoinStyle);\n };\n Object.defineProperty(PdfStreamWriter.prototype, \"position\", {\n //IPdfWriter members\n /**\n * Gets or sets the current `position` within the stream.\n * @private\n */\n get: function () {\n return this.stream.position;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStreamWriter.prototype, \"length\", {\n /**\n * Gets `stream length`.\n * @private\n */\n get: function () {\n var returnValue = 0;\n if (this.stream.data.length !== 0 && this.stream.data.length !== -1) {\n for (var index = 0; index < this.stream.data.length; index++) {\n returnValue += this.stream.data[index].length;\n }\n }\n return returnValue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStreamWriter.prototype, \"document\", {\n /**\n * Gets and Sets the `current document`.\n * @private\n */\n get: function () {\n return null;\n },\n enumerable: true,\n configurable: true\n });\n /* tslint:disable-next-line:max-line-length */\n PdfStreamWriter.prototype.appendBezierSegment = function (arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof PointF && arg2 instanceof PointF && arg3 instanceof PointF) {\n this.writePoint(arg1.x, arg1.y);\n this.writePoint(arg2.x, arg2.y);\n this.writePoint(arg3.x, arg3.y);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writePoint(arg3, arg4);\n this.writePoint(arg5, arg6);\n }\n this.writeOperator(Operators.appendbeziercurve);\n };\n PdfStreamWriter.prototype.setColourWithPattern = function (colours, patternName, forStroking) {\n if ((colours != null)) {\n var count = colours.length;\n var i = 0;\n for (i = 0; i < count; ++i) {\n this.stream.write(colours[i].toString());\n this.stream.write(Operators.whiteSpace);\n }\n }\n if ((patternName != null)) {\n this.stream.write(patternName.toString());\n this.stream.write(Operators.whiteSpace);\n }\n if (forStroking) {\n this.writeOperator(Operators.setColorAndPatternStroking);\n }\n else {\n this.writeOperator(Operators.setColorAndPattern);\n }\n };\n return PdfStreamWriter;\n}());\nexport { PdfStreamWriter };\n","import { SizeF, RectangleF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfWordWrapType } from './enum';\nimport { StringTokenizer } from './string-tokenizer';\n/**\n * Class `lay outing the text`.\n */\nvar PdfStringLayouter = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `StringLayouter` class.\n * @private\n */\n function PdfStringLayouter() {\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isOverloadWithPosition = false;\n //\n }\n PdfStringLayouter.prototype.layout = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n if (arg4 instanceof RectangleF) {\n this.initialize(arg1, arg2, arg3, arg4, arg5);\n this.isOverloadWithPosition = arg6;\n this.clientSize = arg7;\n var result = this.doLayout();\n this.clear();\n return result;\n }\n else {\n this.initialize(arg1, arg2, arg3, arg4);\n this.isOverloadWithPosition = arg5;\n this.clientSize = arg6;\n var result = this.doLayout();\n this.clear();\n return result;\n }\n };\n PdfStringLayouter.prototype.initialize = function (text, font, format, rectSize, pageHeight) {\n if (typeof pageHeight === 'number') {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (font == null) {\n throw new Error('ArgumentNullException:font');\n }\n this.text = text;\n this.font = font;\n this.format = format;\n this.size = new SizeF(rectSize.width, rectSize.height);\n this.rectangle = rectSize;\n this.pageHeight = pageHeight;\n this.reader = new StringTokenizer(text);\n }\n else {\n this.initialize(text, font, format, new RectangleF(new PointF(0, 0), rectSize), 0);\n }\n };\n /**\n * `Clear` all resources.\n * @private\n */\n PdfStringLayouter.prototype.clear = function () {\n this.font = null;\n this.format = null;\n this.reader.close();\n this.reader = null;\n this.text = null;\n };\n /**\n * `Layouts` the text.\n * @private\n */\n PdfStringLayouter.prototype.doLayout = function () {\n var result = new PdfStringLayoutResult();\n var lineResult = new PdfStringLayoutResult();\n var lines = [];\n var line = this.reader.peekLine();\n var lineIndent = this.getLineIndent(true);\n while (line != null) {\n lineResult = this.layoutLine(line, lineIndent);\n if (lineResult !== null || typeof lineResult !== 'undefined') {\n var numSymbolsInserted = 0;\n /* tslint:disable */\n var returnedValue = this.copyToResult(result, lineResult, lines, /*out*/ numSymbolsInserted);\n /* tslint:enable */\n var success = returnedValue.success;\n numSymbolsInserted = returnedValue.numInserted;\n if (!success) {\n this.reader.read(numSymbolsInserted);\n break;\n }\n }\n // if (lineResult.textRemainder != null && lineResult.textRemainder.length > 0 ) {\n // break;\n // }\n this.reader.readLine();\n line = this.reader.peekLine();\n lineIndent = this.getLineIndent(false);\n }\n this.finalizeResult(result, lines);\n return result;\n };\n /**\n * Returns `line indent` for the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineIndent = function (firstLine) {\n var lineIndent = 0;\n if (this.format != null) {\n lineIndent = (firstLine) ? this.format.firstLineIndent : this.format.paragraphIndent;\n lineIndent = (this.size.width > 0) ? Math.min(this.size.width, lineIndent) : lineIndent;\n }\n return lineIndent;\n };\n /**\n * Calculates `height` of the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineHeight = function () {\n var height = this.font.height;\n if (this.format != null && this.format.lineSpacing !== 0) {\n height = this.format.lineSpacing + this.font.height;\n }\n return height;\n };\n /**\n * Calculates `width` of the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineWidth = function (line) {\n var width = this.font.getLineWidth(line, this.format);\n return width;\n };\n // tslint:disable\n /**\n * `Layouts` line.\n * @private\n */\n PdfStringLayouter.prototype.layoutLine = function (line, lineIndent) {\n var lineResult = new PdfStringLayoutResult();\n lineResult.layoutLineHeight = this.getLineHeight();\n var lines = [];\n var maxWidth = this.size.width;\n var lineWidth = this.getLineWidth(line) + lineIndent;\n var lineType = LineType.FirstParagraphLine;\n var readWord = true;\n // line is in bounds.\n if (maxWidth <= 0 || Math.round(lineWidth) <= Math.round(maxWidth)) {\n this.addToLineResult(lineResult, lines, line, lineWidth, LineType.NewLineBreak | lineType);\n }\n else {\n var builder = '';\n var curLine = '';\n lineWidth = lineIndent;\n var curIndent = lineIndent;\n var reader = new StringTokenizer(line);\n var word = reader.peekWord();\n var isSingleWord = false;\n if (word.length !== reader.length) {\n if (word === ' ') {\n curLine = curLine + word;\n builder = builder + word;\n reader.position += 1;\n word = reader.peekWord();\n }\n }\n while (word != null) {\n curLine = curLine + word;\n var curLineWidth = this.getLineWidth(curLine.toString()) + curIndent /*)*/;\n if (curLine.toString() === ' ') {\n curLine = '';\n curLineWidth = 0;\n }\n if (curLineWidth > maxWidth) {\n if (this.getWrapType() === PdfWordWrapType.None) {\n break;\n }\n if (curLine.length === word.length) {\n // Character wrap is disabled or one symbol is greater than bounds.\n if (this.getWrapType() === PdfWordWrapType.WordOnly) {\n lineResult.textRemainder = line.substring(reader.position);\n break;\n }\n else if (curLine.length === 1) {\n builder = builder + word;\n break;\n }\n else {\n readWord = false;\n curLine = '';\n word = reader.peek().toString();\n continue;\n }\n }\n else {\n if (this.getLineWidth(word.toString()) > maxWidth) {\n this.format.wordWrap = PdfWordWrapType.Character;\n }\n else {\n if (typeof this.format !== 'undefined' && this.format !== null) {\n this.format.wordWrap = PdfWordWrapType.Word;\n }\n }\n if (this.getWrapType() !== PdfWordWrapType.Character || !readWord) {\n var ln = builder.toString();\n // if (ln.indexOf(' ') === -1) {\n // isSingleWord = true;\n // this.addToLineResult(lineResult, lines, curLine, lineWidth, LineType.LayoutBreak | lineType);\n // } else {\n // this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.LayoutBreak | lineType);\n // } \n if (ln !== ' ') {\n this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.LayoutBreak | lineType);\n }\n if (this.isOverloadWithPosition) {\n maxWidth = this.clientSize.width;\n }\n curLine = '';\n builder = '';\n lineWidth = 0;\n curIndent = 0;\n curLineWidth = 0;\n lineType = LineType.None;\n // if (isSingleWord) {\n // reader.readWord();\n // readWord = false;\n // }\n word = (readWord) ? word : reader.peekWord();\n //isSingleWord = false;\n readWord = true;\n }\n else {\n readWord = false;\n curLine = '';\n curLine = curLine + builder.toString();\n word = reader.peek().toString();\n }\n continue;\n }\n }\n /*tslint:disable:max-func-body-length */\n builder = builder + word;\n lineWidth = curLineWidth;\n if (readWord) {\n reader.readWord();\n word = reader.peekWord();\n //isSingleWord = false;\n }\n else {\n reader.read();\n word = reader.peek().toString();\n }\n }\n if (builder.length > 0) {\n var ln = builder.toString();\n this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.NewLineBreak | LineType.LastParagraphLine);\n }\n reader.close();\n }\n lineResult.layoutLines = [];\n for (var index = 0; index < lines.length; index++) {\n lineResult.layoutLines.push(lines[index]);\n }\n lines = [];\n return lineResult;\n };\n /**\n * `Adds` line to line result.\n * @private\n */\n PdfStringLayouter.prototype.addToLineResult = function (lineResult, lines, line, lineWidth, breakType) {\n var info = new LineInfo();\n info.text = line;\n info.width = lineWidth;\n info.lineType = breakType;\n lines.push(info);\n var size = lineResult.actualSize;\n size.height += this.getLineHeight();\n size.width = Math.max(size.width, lineWidth);\n lineResult.size = size;\n };\n /**\n * `Copies` layout result from line result to entire result. Checks whether we can proceed lay outing or not.\n * @private\n */\n PdfStringLayouter.prototype.copyToResult = function (result, lineResult, lines, \n /*out*/ numInserted) {\n var success = true;\n var allowPartialLines = (this.format != null && !this.format.lineLimit);\n var height = result.actualSize.height;\n var maxHeight = this.size.height;\n if ((this.pageHeight > 0) && (maxHeight + this.rectangle.y > this.pageHeight)) {\n maxHeight = this.rectangle.y - this.pageHeight;\n maxHeight = Math.max(maxHeight, -maxHeight);\n }\n numInserted = 0;\n if (lineResult.lines != null) {\n for (var i = 0, len = lineResult.lines.length; i < len; i++) {\n var expHeight = height + lineResult.lineHeight;\n if (expHeight <= maxHeight || maxHeight <= 0 || allowPartialLines) {\n var info = lineResult.lines[i];\n numInserted += info.text.length;\n info = this.trimLine(info, (lines.length === 0));\n lines.push(info);\n // Update width.\n var size = result.actualSize;\n size.width = Math.max(size.width, info.width);\n result.size = size;\n // The part of the line fits only and it's allowed to use partial lines.\n // if (expHeight >= maxHeight && maxHeight > 0 && allowPartialLines)\n // {\n // let shouldClip : boolean = (this.format == null || !this.format.noClip);\n // if (shouldClip)\n // {\n // let exceededHeight : number = expHeight - maxHeight;\n // let fitHeight : number = /*Utils.Round(*/ lineResult.lineHeight - exceededHeight /*)*/;\n // height = /*Utils.Round(*/ height + fitHeight /*)*/;\n // }\n // else\n // {\n // height = expHeight;\n // }\n // success = false;\n // break;\n // } else {\n height = expHeight;\n // }\n }\n else {\n success = false;\n break;\n }\n }\n }\n if (height != result.size.height) {\n var size1 = result.actualSize;\n size1.height = height;\n result.size = size1;\n }\n return { success: success, numInserted: numInserted };\n };\n /**\n * `Finalizes` final result.\n * @private\n */\n PdfStringLayouter.prototype.finalizeResult = function (result, lines) {\n result.layoutLines = [];\n for (var index = 0; index < lines.length; index++) {\n result.layoutLines.push(lines[index]);\n }\n result.layoutLineHeight = this.getLineHeight();\n if (!this.reader.end) {\n result.textRemainder = this.reader.readToEnd();\n }\n lines = [];\n };\n /**\n * `Trims` whitespaces at the line.\n * @private\n */\n PdfStringLayouter.prototype.trimLine = function (info, firstLine) {\n var line = info.text;\n var lineWidth = info.width;\n // Trim start whitespaces if the line is not a start of the paragraph only.\n var trimStartSpaces = ((info.lineType & LineType.FirstParagraphLine) === 0);\n var start = (this.format == null || !this.format.rightToLeft);\n var spaces = StringTokenizer.spaces;\n line = (start) ? line.trim() : line.trim();\n // Recalculate line width.\n if (line.length !== info.text.length) {\n lineWidth = this.getLineWidth(line);\n if ((info.lineType & LineType.FirstParagraphLine) > 0) {\n lineWidth += this.getLineIndent(firstLine);\n }\n }\n info.text = line;\n info.width = lineWidth;\n return info;\n };\n /**\n * Returns `wrap` type.\n * @private\n */\n PdfStringLayouter.prototype.getWrapType = function () {\n var wrapType = (this.format != null) ? this.format.wordWrap : PdfWordWrapType.Word;\n return wrapType;\n };\n return PdfStringLayouter;\n}());\nexport { PdfStringLayouter };\n//Internal declaration\nvar PdfStringLayoutResult = /** @class */ (function () {\n function PdfStringLayoutResult() {\n }\n Object.defineProperty(PdfStringLayoutResult.prototype, \"remainder\", {\n // Properties\n /**\n * Gets the `text` which is not lay outed.\n * @private\n */\n get: function () {\n return this.textRemainder;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"actualSize\", {\n /**\n * Gets the actual layout text `bounds`.\n * @private\n */\n get: function () {\n if (typeof this.size === 'undefined') {\n this.size = new SizeF(0, 0);\n }\n return this.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lines\", {\n /**\n * Gets layout `lines` information.\n * @private\n */\n get: function () {\n return this.layoutLines;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lineHeight\", {\n /**\n * Gets the `height` of the line.\n * @private\n */\n get: function () {\n return this.layoutLineHeight;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"empty\", {\n /**\n * Gets value that indicates whether any layout text [`empty`].\n * @private\n */\n get: function () {\n return (this.layoutLines == null || this.layoutLines.length === 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lineCount\", {\n /**\n * Gets `number of` the layout lines.\n * @private\n */\n get: function () {\n var count = (!this.empty) ? this.layoutLines.length : 0;\n return count;\n },\n enumerable: true,\n configurable: true\n });\n return PdfStringLayoutResult;\n}());\nexport { PdfStringLayoutResult };\nvar LineInfo = /** @class */ (function () {\n function LineInfo() {\n }\n Object.defineProperty(LineInfo.prototype, \"lineType\", {\n //Properties\n /**\n * Gets the `type` of the line text.\n * @private\n */\n get: function () {\n return this.type;\n },\n set: function (value) {\n this.type = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineInfo.prototype, \"text\", {\n /**\n * Gets the line `text`.\n * @private\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.content = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineInfo.prototype, \"width\", {\n /**\n * Gets `width` of the line text.\n * @private\n */\n get: function () {\n return this.lineWidth;\n },\n set: function (value) {\n this.lineWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n return LineInfo;\n}());\nexport { LineInfo };\n/**\n* Break type of the `line`.\n* @private\n*/\nexport var LineType;\n(function (LineType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n LineType[LineType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `NewLineBreak`.\n * @private\n */\n LineType[LineType[\"NewLineBreak\"] = 1] = \"NewLineBreak\";\n /**\n * Specifies the type of `LayoutBreak`.\n * @private\n */\n LineType[LineType[\"LayoutBreak\"] = 2] = \"LayoutBreak\";\n /**\n * Specifies the type of `FirstParagraphLine`.\n * @private\n */\n LineType[LineType[\"FirstParagraphLine\"] = 4] = \"FirstParagraphLine\";\n /**\n * Specifies the type of `LastParagraphLine`.\n * @private\n */\n LineType[LineType[\"LastParagraphLine\"] = 8] = \"LastParagraphLine\";\n})(LineType || (LineType = {}));\n","import { PdfColorSpace } from './enum';\nimport { Operators } from './../input-output/pdf-operators';\nimport { Dictionary } from './../collections/dictionary';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfArray } from './../primitives/pdf-array';\n/**\n * Implements structures and routines working with `color`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * //\n * // set color\n * let brushColor : PdfColor = new PdfColor(0, 0, 0);\n * //\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(brushColor);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @default black color\n */\nvar PdfColor = /** @class */ (function () {\n function PdfColor(color1, color2, color3, color4) {\n if (typeof color1 === 'undefined') {\n if (typeof color2 !== 'undefined' && typeof color3 !== 'undefined' && typeof color4 !== 'undefined') {\n this.assignRGB(color2, color3, color4);\n }\n else {\n this.filled = false;\n }\n }\n else if (color1 instanceof PdfColor) {\n this.redColor = color1.r;\n this.greenColor = color1.g;\n this.blueColor = color1.b;\n this.grayColor = color1.gray;\n this.alpha = color1.alpha;\n this.filled = (this.alpha !== 0);\n /* tslint:disable-next-line:max-line-length */\n }\n else if (typeof color1 === 'number' && typeof color2 === 'undefined' && typeof color3 === 'undefined' && typeof color4 === 'undefined') {\n if (color1 < 0) {\n color1 = 0;\n }\n if (color1 > 1) {\n color1 = 1;\n }\n this.redColor = color1 * PdfColor.maxColourChannelValue;\n this.greenColor = color1 * PdfColor.maxColourChannelValue;\n this.blueColor = color1 * PdfColor.maxColourChannelValue;\n this.cyanColor = color1;\n this.magentaColor = color1;\n this.yellowColor = color1;\n this.blackColor = color1;\n this.grayColor = color1;\n this.alpha = PdfColor.maxColourChannelValue;\n this.filled = true;\n }\n else if (typeof color4 === 'undefined') {\n this.assignRGB(color1, color2, color3);\n }\n else {\n this.assignRGB(color2, color3, color4, color1);\n }\n }\n /**\n * `Assign` red, green, blue colors with alpha value..\n * @private\n */\n PdfColor.prototype.assignRGB = function (r, g, b, a) {\n if (typeof r === 'undefined' || typeof g === 'undefined' || typeof b === 'undefined') {\n this.filled = false;\n }\n else {\n this.cyanColor = 0;\n this.magentaColor = 0;\n this.yellowColor = 0;\n this.blackColor = 0;\n this.grayColor = 0;\n this.redColor = r;\n this.greenColor = g;\n this.blueColor = b;\n if (typeof a === 'undefined') {\n this.alpha = PdfColor.maxColourChannelValue;\n }\n else {\n this.alpha = a;\n }\n this.filled = true;\n this.assignCMYK(r, g, b);\n }\n };\n /**\n * `Calculate and assign` cyan, megenta, yellow colors from rgb values..\n * @private\n */\n PdfColor.prototype.assignCMYK = function (r, g, b) {\n var red = r / PdfColor.maxColourChannelValue;\n var green = g / PdfColor.maxColourChannelValue;\n var blue = b / PdfColor.maxColourChannelValue;\n var black = PdfNumber.min(1 - red, 1 - green, 1 - blue);\n var cyan = (black === 1.0) ? 0 : (1 - red - black) / (1 - black);\n var magenta = (black === 1.0) ? 0 : (1 - green - black) / (1 - black);\n var yellow = (black === 1.0) ? 0 : (1 - blue - black) / (1 - black);\n this.blackColor = black;\n this.cyanColor = cyan;\n this.magentaColor = magenta;\n this.yellowColor = yellow;\n };\n Object.defineProperty(PdfColor.prototype, \"r\", {\n //Properties\n // public static get Empty():PdfColor\n // {\n // return this.s_emptyColor\n // }\n /**\n * Gets or sets `Red` channel value.\n * @private\n */\n get: function () {\n return this.redColor;\n },\n set: function (value) {\n this.redColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"red\", {\n /**\n * Gets the `Red` color\n * @private\n */\n get: function () {\n return (this.r / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"b\", {\n /**\n * Gets or sets `Blue` channel value.\n * @private\n */\n get: function () {\n return this.blueColor;\n },\n set: function (value) {\n this.blueColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"blue\", {\n /**\n * Gets the `blue` color.\n * @private\n */\n get: function () {\n return (this.b / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"c\", {\n /**\n * Gets or sets `Cyan` channel value.\n * @private\n */\n get: function () {\n return this.cyanColor;\n },\n set: function (value) {\n if (value < 0) {\n this.cyanColor = 0;\n }\n else if (value > 1) {\n this.cyanColor = 1;\n }\n else {\n this.cyanColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"k\", {\n /**\n * Gets or sets `Black` channel value.\n * @private\n */\n get: function () {\n return this.blackColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.blackColor = 0;\n }\n else if ((value > 1)) {\n this.blackColor = 1;\n }\n else {\n this.blackColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"m\", {\n /**\n * Gets or sets `Magenta` channel value.\n * @private\n */\n get: function () {\n return this.magentaColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.magentaColor = 0;\n }\n else if ((value > 1)) {\n this.magentaColor = 1;\n }\n else {\n this.magentaColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"y\", {\n /**\n * Gets or sets `Yellow` channel value.\n * @private\n */\n get: function () {\n return this.yellowColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.yellowColor = 0;\n }\n else if ((value > 1)) {\n this.yellowColor = 1;\n }\n else {\n this.yellowColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"g\", {\n /**\n * Gets or sets `Green` channel value.\n * @private\n */\n get: function () {\n return this.greenColor;\n },\n set: function (value) {\n this.greenColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"green\", {\n /**\n * Gets the `Green` color.\n * @private\n */\n get: function () {\n return (this.g / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"gray\", {\n /**\n * Gets or sets `Gray` channel value.\n * @private\n */\n get: function () {\n return ((((this.redColor + this.greenColor) + this.blueColor)) / (PdfColor.maxColourChannelValue * 3));\n },\n set: function (value) {\n if (value < 0) {\n this.grayColor = 0;\n }\n else if (value > 1) {\n this.grayColor = 1;\n }\n else {\n this.grayColor = value;\n }\n this.r = (this.grayColor * PdfColor.maxColourChannelValue);\n this.g = (this.grayColor * PdfColor.maxColourChannelValue);\n this.b = (this.grayColor * PdfColor.maxColourChannelValue);\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"isEmpty\", {\n /**\n * Gets whether the PDFColor `is Empty` or not.\n * @private\n */\n get: function () {\n return !this.filled;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"a\", {\n /**\n * Gets or sets `Alpha` channel value.\n * @private\n */\n get: function () {\n return this.alpha;\n },\n set: function (value) {\n if (value < 0) {\n this.alpha = 0;\n }\n else {\n // if (this.alpha !== value) {\n this.alpha = value;\n // }\n }\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n //Public methods\n /**\n * Converts `PDFColor to PDF string` representation.\n * @private\n */\n PdfColor.prototype.toString = function (colorSpace, stroke) {\n if (this.isEmpty) {\n return '';\n }\n var str = '';\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n str = this.rgbToString(stroke);\n break;\n case PdfColorSpace.GrayScale:\n str = this.grayScaleToString(stroke);\n break;\n case PdfColorSpace.Cmyk:\n str = this.cmykToString(stroke);\n break;\n }\n return str;\n };\n /**\n * Sets `GrayScale` color.\n * @private\n */\n PdfColor.prototype.grayScaleToString = function (ifStroking) {\n var gray = this.gray;\n var colour = '';\n var obj = null;\n /* tslint:disable-next-line:max-line-length */\n obj = (ifStroking) ? PdfColor.grayStringsSroke.containsKey(gray) ? PdfColor.grayStringsSroke.getValue(gray) : null : PdfColor.grayStringsFill.containsKey(gray) ? PdfColor.grayStringsFill.getValue(gray) : null;\n if (obj == null) {\n if (ifStroking) {\n colour = gray.toString() + ' G';\n PdfColor.grayStringsSroke.setValue(gray, colour);\n }\n }\n else {\n colour = obj.toString();\n }\n return colour + Operators.newLine;\n };\n /**\n * Sets `RGB` color.\n * @private\n */\n PdfColor.prototype.rgbToString = function (ifStroking) {\n var r = this.r;\n var g = this.g;\n var b = this.b;\n var key = (r << 16) + (g << 8) + b;\n if (ifStroking) {\n key += 1 << 24;\n }\n var colour = '';\n var obj = null;\n if (PdfColor.rgbStrings.containsKey(key)) {\n obj = PdfColor.rgbStrings.getValue(key);\n }\n if (obj == null) {\n var red = r / PdfColor.maxColourChannelValue;\n var green = g / PdfColor.maxColourChannelValue;\n var blue = b / PdfColor.maxColourChannelValue;\n if (ifStroking) {\n colour = red.toString() + ' ' + green.toString() + ' ' + blue.toString() + ' RG';\n }\n else {\n colour = red.toString() + ' ' + green.toString() + ' ' + blue.toString() + ' rg';\n }\n PdfColor.rgbStrings.setValue(key, colour);\n }\n else {\n colour = obj.toString();\n }\n return colour + Operators.newLine;\n };\n /***\n * Sets `CMYK` color.\n * @private\n */\n PdfColor.prototype.cmykToString = function (ifStroking) {\n var cyan = this.c;\n var magenta = this.m;\n var yellow = this.y;\n var black = this.b;\n var colour = '';\n colour = cyan.toString() + ' ' + magenta.toString() + ' ' + yellow.toString() + ' ' + black.toString() + ' K';\n return colour + Operators.newLine;\n };\n /**\n * Converts `colour to a PDF array`.\n * @private\n */\n PdfColor.prototype.toArray = function (colorSpace) {\n var array = new PdfArray();\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n array.add(new PdfNumber(this.red));\n array.add(new PdfNumber(this.green));\n array.add(new PdfNumber(this.blue));\n break;\n }\n return array;\n };\n //Fields\n /**\n * Holds `RGB colors` converted into strings.\n * @private\n */\n PdfColor.rgbStrings = new Dictionary();\n /**\n * Holds Gray scale colors converted into strings for `stroking`.\n * @private\n */\n PdfColor.grayStringsSroke = new Dictionary();\n /**\n * Holds Gray scale colors converted into strings for `filling`.\n * @private\n */\n PdfColor.grayStringsFill = new Dictionary();\n /**\n * `Max value` of color channel.\n * @private\n */\n PdfColor.maxColourChannelValue = 255.0;\n return PdfColor;\n}());\nexport { PdfColor };\n","/**\n * `PdfBrush` class provides objects used to fill the interiors of graphical shapes such as rectangles,\n * ellipses, pies, polygons, and paths.\n * @private\n */\nvar PdfBrush = /** @class */ (function () {\n /**\n * Creates instanceof `PdfBrush` class.\n * @hidden\n * @private\n */\n function PdfBrush() {\n //\n }\n //IClonable implementation\n PdfBrush.prototype.clone = function () {\n return this;\n };\n return PdfBrush;\n}());\nexport { PdfBrush };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfColor } from './../pdf-color';\nimport { PdfColorSpace } from './../enum';\nimport { PdfBrush } from './pdf-brush';\n/**\n * Represents a brush that fills any object with a solid color.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfSolidBrush = /** @class */ (function (_super) {\n __extends(PdfSolidBrush, _super);\n //Constructors\n /**\n * Initializes a new instance of the `PdfSolidBrush` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param color color of the brush\n */\n function PdfSolidBrush(color) {\n var _this = _super.call(this) || this;\n _this.pdfColor = color;\n return _this;\n }\n Object.defineProperty(PdfSolidBrush.prototype, \"color\", {\n //Properties\n /**\n * Gets or sets the `color` of the brush.\n * @private\n */\n get: function () {\n return this.pdfColor;\n },\n set: function (value) {\n this.pdfColor = value;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Monitors` the changes of the brush and modify PDF state respectively.\n * @private\n */\n PdfSolidBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n if (streamWriter == null) {\n throw new Error('ArgumentNullException:streamWriter');\n }\n var diff = false;\n if (brush == null) {\n diff = true;\n streamWriter.setColorAndSpace(this.pdfColor, currentColorSpace, false);\n return diff;\n }\n else {\n var sBrush = brush;\n diff = true;\n streamWriter.setColorAndSpace(this.pdfColor, currentColorSpace, false);\n return diff;\n }\n };\n /**\n * `Resets` the changes, which were made by the brush.\n * @private\n */\n PdfSolidBrush.prototype.resetChanges = function (streamWriter) {\n streamWriter.setColorAndSpace(new PdfColor(0, 0, 0), PdfColorSpace.Rgb, false);\n };\n return PdfSolidBrush;\n}(PdfBrush));\nexport { PdfSolidBrush };\n","/**\n * PdfPen.ts class for EJ2-PDF\n */\nimport { PdfColor } from './pdf-color';\nimport { PdfSolidBrush } from './brushes/pdf-solid-brush';\nimport { PdfDashStyle, PdfColorSpace } from './enum';\nimport { PdfBrush } from './brushes/pdf-brush';\n/**\n * `PdfPen` class defining settings for drawing operations, that determines the color,\n * width, and style of the drawing elements.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPen = /** @class */ (function () {\n function PdfPen(arg1, arg2) {\n //Fields\n /**\n * Specifies the `color of the pen`.\n * @default new PdfColor()\n * @private\n */\n this.pdfColor = new PdfColor(0, 0, 0);\n /**\n * Specifies the `dash offset of the pen`.\n * @default 0\n * @private\n */\n this.dashOffsetValue = 0;\n /**\n * Specifies the `dash pattern of the pen`.\n * @default [0]\n * @private\n */\n this.penDashPattern = [0];\n /**\n * Specifies the `dash style of the pen`.\n * @default Solid\n * @private\n */\n this.pdfDashStyle = PdfDashStyle.Solid;\n /**\n * Specifies the `line cap of the pen`.\n * @default 0\n * @private\n */\n this.pdfLineCap = 0;\n /**\n * Specifies the `line join of the pen`.\n * @default 0\n * @private\n */\n this.pdfLineJoin = 0;\n /**\n * Specifies the `width of the pen`.\n * @default 1.0\n * @private\n */\n this.penWidth = 1.0;\n /**\n * Specifies the `mitter limit of the pen`.\n * @default 0.0\n * @private\n */\n this.internalMiterLimit = 0.0;\n /**\n * Stores the `colorspace` value.\n * @default Rgb\n * @private\n */\n this.colorSpace = PdfColorSpace.Rgb;\n if (arg1 instanceof PdfBrush) {\n this.setBrush(arg1);\n }\n else if (arg1 instanceof PdfColor) {\n this.color = arg1;\n }\n if (typeof arg2 === 'number') {\n this.width = arg2;\n }\n }\n Object.defineProperty(PdfPen.prototype, \"color\", {\n //Properties\n /**\n * Gets or sets the `color of the pen`.\n * @private\n */\n get: function () {\n return this.pdfColor;\n },\n set: function (value) {\n this.pdfColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashOffset\", {\n /**\n * Gets or sets the `dash offset of the pen`.\n * @private\n */\n get: function () {\n if (typeof this.dashOffsetValue === 'undefined' || this.dashOffsetValue == null) {\n return 0;\n }\n else {\n return this.dashOffsetValue;\n }\n },\n set: function (value) {\n this.dashOffsetValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashPattern\", {\n /**\n * Gets or sets the `dash pattern of the pen`.\n * @private\n */\n get: function () {\n return this.penDashPattern;\n },\n set: function (value) {\n this.penDashPattern = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashStyle\", {\n /**\n * Gets or sets the `dash style of the pen`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set pen style\n * pen.dashStyle = PdfDashStyle.DashDot;\n * // get pen style\n * let style : PdfDashStyle = pen.dashStyle;\n * //\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.pdfDashStyle;\n },\n set: function (value) {\n if (this.pdfDashStyle !== value) {\n this.pdfDashStyle = value;\n switch (this.pdfDashStyle) {\n case PdfDashStyle.Custom:\n break;\n case PdfDashStyle.Dash:\n this.penDashPattern = [3, 1];\n break;\n case PdfDashStyle.Dot:\n this.penDashPattern = [1, 1];\n break;\n case PdfDashStyle.DashDot:\n this.penDashPattern = [3, 1, 1, 1];\n break;\n case PdfDashStyle.DashDotDot:\n this.penDashPattern = [3, 1, 1, 1, 1, 1];\n break;\n case PdfDashStyle.Solid:\n break;\n default:\n this.pdfDashStyle = PdfDashStyle.Solid;\n this.penDashPattern = [0];\n break;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"lineCap\", {\n /**\n * Gets or sets the `line cap of the pen`.\n * @private\n */\n get: function () {\n return this.pdfLineCap;\n },\n set: function (value) {\n this.pdfLineCap = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"lineJoin\", {\n /**\n * Gets or sets the `line join style of the pen`.\n * @private\n */\n get: function () {\n return this.pdfLineJoin;\n },\n set: function (value) {\n this.pdfLineJoin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"miterLimit\", {\n /**\n * Gets or sets the `miter limit`.\n * @private\n */\n get: function () {\n return this.internalMiterLimit;\n },\n set: function (value) {\n this.internalMiterLimit = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"width\", {\n /**\n * Gets or sets the `width of the pen`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set pen width\n * pen.width = 2;\n * //\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.penWidth;\n },\n set: function (value) {\n this.penWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n //Helper\n /**\n * `Clones` this instance of PdfPen class.\n * @private\n */\n PdfPen.prototype.clone = function () {\n var pen = this;\n return pen;\n };\n /**\n * `Sets the brush`.\n * @private\n */\n PdfPen.prototype.setBrush = function (brush) {\n var sBrush = brush;\n if ((sBrush != null && sBrush instanceof PdfSolidBrush)) {\n this.color = sBrush.color;\n this.pdfBrush = sBrush;\n }\n this.color = sBrush.color;\n this.pdfBrush = sBrush;\n };\n /**\n * `Monitors the changes`.\n * @private\n */\n PdfPen.prototype.monitorChanges = function (currentPen, streamWriter, getResources, saveState, currentColorSpace, matrix) {\n var diff = false;\n saveState = true;\n if (currentPen == null) {\n diff = true;\n }\n diff = this.dashControl(currentPen, saveState, streamWriter);\n streamWriter.setLineWidth(this.width);\n streamWriter.setLineJoin(this.lineJoin);\n streamWriter.setLineCap(this.lineCap);\n var miterLimit = this.miterLimit;\n if (miterLimit > 0) {\n streamWriter.setMiterLimit(miterLimit);\n diff = true;\n }\n var brush = this.pdfBrush;\n streamWriter.setColorAndSpace(this.color, currentColorSpace, true);\n diff = true;\n return diff;\n };\n /**\n * `Controls the dash style` and behaviour of each line.\n * @private\n */\n PdfPen.prototype.dashControl = function (pen, saveState, streamWriter) {\n saveState = true;\n var lineWidth = this.width;\n var pattern = this.getPattern();\n streamWriter.setLineDashPattern(pattern, this.dashOffset * lineWidth);\n return saveState;\n };\n /**\n * `Gets the pattern` of PdfPen.\n * @private\n */\n PdfPen.prototype.getPattern = function () {\n var pattern = this.dashPattern;\n for (var i = 0; i < pattern.length; ++i) {\n pattern[i] *= this.width;\n }\n return pattern;\n };\n return PdfPen;\n}());\nexport { PdfPen };\n","/**\n * PdfStringFormat.ts class for EJ2-PDF\n */\nimport { PdfVerticalAlignment } from './../../graphics/enum';\nimport { PdfSubSuperScript, PdfWordWrapType } from './../../graphics/fonts/enum';\n/**\n * `PdfStringFormat` class represents the text layout information on PDF.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the text alignment\n * stringFormat.alignment = PdfTextAlignment.Center;\n * // set the vertical alignment\n * stringFormat.lineAlignment = PdfVerticalAlignment.Middle;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfStringFormat = /** @class */ (function () {\n function PdfStringFormat(arg1, arg2) {\n /**\n * The `scaling factor` of the text being drawn.\n * @private\n */\n this.scalingFactor = 100.0;\n /**\n * Indicates text `wrapping` type.\n * @private\n */\n this.wordWrapType = PdfWordWrapType.Word;\n this.internalLineLimit = true;\n this.wordWrapType = PdfWordWrapType.Word;\n if ((typeof arg1 !== 'undefined') && (typeof arg1 !== 'string')) {\n this.textAlignment = arg1;\n }\n if (typeof arg2 !== 'undefined') {\n this.verticalAlignment = arg2;\n }\n }\n Object.defineProperty(PdfStringFormat.prototype, \"alignment\", {\n //Properties\n /**\n * Gets or sets the `horizontal` text alignment\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the text alignment\n * stringFormat.alignment = PdfTextAlignment.Center;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.textAlignment;\n },\n set: function (value) {\n this.textAlignment = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"textDirection\", {\n get: function () {\n return this.direction;\n },\n set: function (value) {\n this.direction = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineAlignment\", {\n /**\n * Gets or sets the `vertical` text alignment.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the vertical alignment\n * stringFormat.lineAlignment = PdfVerticalAlignment.Middle;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.verticalAlignment === 'undefined' || this.verticalAlignment == null) {\n return PdfVerticalAlignment.Top;\n }\n else {\n return this.verticalAlignment;\n }\n },\n set: function (value) {\n this.verticalAlignment = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"rightToLeft\", {\n /**\n * Gets or sets the value that indicates text `direction` mode.\n * @private\n */\n get: function () {\n if (typeof this.isRightToLeft === 'undefined' || this.isRightToLeft == null) {\n return false;\n }\n else {\n return this.isRightToLeft;\n }\n },\n set: function (value) {\n this.isRightToLeft = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"characterSpacing\", {\n /**\n * Gets or sets value that indicates a `size` among the characters in the text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set character spacing\n * stringFormat.characterSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.internalCharacterSpacing === 'undefined' || this.internalCharacterSpacing == null) {\n return 0;\n }\n else {\n return this.internalCharacterSpacing;\n }\n },\n set: function (value) {\n this.internalCharacterSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"wordSpacing\", {\n /**\n * Gets or sets value that indicates a `size` among the words in the text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set word spacing\n * stringFormat.wordSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.internalWordSpacing === 'undefined' || this.internalWordSpacing == null) {\n return 0;\n }\n else {\n return this.internalWordSpacing;\n }\n },\n set: function (value) {\n this.internalWordSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineSpacing\", {\n /**\n * Gets or sets value that indicates the `vertical distance` between the baselines of adjacent lines of text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // set string\n * let text : string = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor\n * incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitati';\n * // set rectangle bounds\n * let rectangle : RectangleF = new RectangleF({x : 0, y : 0}, {width : 300, height : 100})\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set line spacing\n * stringFormat.lineSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString(text, font, blackBrush, rectangle, stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.leading === 'undefined' || this.leading == null) {\n return 0;\n }\n else {\n return this.leading;\n }\n },\n set: function (value) {\n this.leading = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"clipPath\", {\n /**\n * Gets or sets a value indicating whether the text is `clipped` or not.\n * @private\n */\n get: function () {\n if (typeof this.clip === 'undefined' || this.clip == null) {\n return false;\n }\n else {\n return this.clip;\n }\n },\n set: function (value) {\n this.clip = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"subSuperScript\", {\n /**\n * Gets or sets value indicating whether the text is in `subscript or superscript` mode.\n * @private\n */\n get: function () {\n if (typeof this.pdfSubSuperScript === 'undefined' || this.pdfSubSuperScript == null) {\n return PdfSubSuperScript.None;\n }\n else {\n return this.pdfSubSuperScript;\n }\n },\n set: function (value) {\n this.pdfSubSuperScript = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"paragraphIndent\", {\n /**\n * Gets or sets the `indent` of the first line in the paragraph.\n * @private\n */\n get: function () {\n if (typeof this.internalParagraphIndent === 'undefined' || this.internalParagraphIndent == null) {\n return 0;\n }\n else {\n return this.internalParagraphIndent;\n }\n },\n set: function (value) {\n this.internalParagraphIndent = value;\n this.firstLineIndent = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineLimit\", {\n /**\n * Gets or sets a value indicating whether [`line limit`].\n * @private\n */\n get: function () {\n return this.internalLineLimit;\n },\n set: function (value) {\n this.internalLineLimit = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"measureTrailingSpaces\", {\n /**\n * Gets or sets a value indicating whether [`measure trailing spaces`].\n * @private\n */\n get: function () {\n if (typeof this.trailingSpaces === 'undefined' || this.trailingSpaces == null) {\n return false;\n }\n else {\n return this.trailingSpaces;\n }\n },\n set: function (value) {\n this.trailingSpaces = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"noClip\", {\n /**\n * Gets or sets a value indicating whether [`no clip`].\n * @private\n */\n get: function () {\n if (typeof this.isNoClip === 'undefined' || this.isNoClip == null) {\n return false;\n }\n else {\n return this.isNoClip;\n }\n },\n set: function (value) {\n this.isNoClip = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"wordWrap\", {\n /**\n * Gets or sets value indicating type of the text `wrapping`.\n * @private\n */\n get: function () {\n // if (typeof this.wrapType === 'undefined' || this.wrapType == null) {\n // return PdfWordWrapType.Word;\n // } else {\n return this.wordWrapType;\n // }\n },\n set: function (value) {\n this.wordWrapType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"horizontalScalingFactor\", {\n /**\n * Gets or sets the `scaling factor`.\n * @private\n */\n get: function () {\n // if (typeof this.scalingFactor === 'undefined' || this.scalingFactor == null) {\n // return 100;\n // } else {\n return this.scalingFactor;\n // }\n },\n set: function (value) {\n if (value <= 0) {\n throw new Error('ArgumentOutOfRangeException:The scaling factor cant be less of equal to zero, ScalingFactor');\n }\n this.scalingFactor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"firstLineIndent\", {\n /**\n * Gets or sets the `indent` of the first line in the text.\n * @private\n */\n get: function () {\n if (typeof this.initialLineIndent === 'undefined' || this.initialLineIndent == null) {\n return 0;\n }\n else {\n return this.initialLineIndent;\n }\n },\n set: function (value) {\n this.initialLineIndent = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Clones` the object.\n * @private\n */\n //IClonable implementation\n PdfStringFormat.prototype.clone = function () {\n var format = this;\n return format;\n };\n return PdfStringFormat;\n}());\nexport { PdfStringFormat };\n","/**\n * StringTokenizer.ts class for EJ2-PDF\n * Utility class for working with strings.\n * @private\n */\nvar StringTokenizer = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `StringTokenizer` class.\n * @private\n */\n function StringTokenizer(textValue) {\n /**\n * Current `position`.\n * @private\n */\n this.currentPosition = 0;\n if (textValue == null) {\n throw new Error('ArgumentNullException:text');\n }\n this.text = textValue;\n }\n Object.defineProperty(StringTokenizer.prototype, \"length\", {\n // Properties\n /**\n * Gets text `length`.\n * @private\n */\n get: function () {\n return this.text.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StringTokenizer.prototype, \"end\", {\n get: function () {\n return (this.currentPosition === this.text.length);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StringTokenizer.prototype, \"position\", {\n /**\n * Gets or sets the position.\n * @private\n */\n get: function () {\n return this.currentPosition;\n },\n set: function (value) {\n this.currentPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n StringTokenizer.getCharsCount = function (text, symbols) {\n if (typeof symbols === 'string') {\n if (text == null) {\n throw new Error('ArgumentNullException:wholeText');\n }\n var numSymbols = 0;\n var curIndex = 0;\n for (;;) {\n curIndex = text.indexOf(symbols, curIndex);\n if (curIndex === -1) {\n break;\n }\n else {\n numSymbols++;\n curIndex++;\n }\n }\n return numSymbols;\n }\n else {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (symbols == null) {\n throw new Error('ArgumentNullException:symbols');\n }\n var count = 0;\n for (var i = 0, len = text.length; i < len; i++) {\n var ch = text[i];\n if (this.contains(symbols, ch)) {\n count++;\n }\n }\n return count;\n }\n };\n /**\n * Reads line of the text.\n * @private\n */\n StringTokenizer.prototype.readLine = function () {\n var pos = this.currentPosition;\n while (pos < this.length) {\n var ch = this.text[pos];\n switch (ch) {\n case '\\r':\n case '\\n': {\n var text = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos + 1;\n if (((ch === '\\r') && (this.currentPosition < this.length)) && (this.text[this.currentPosition] === '\\n')) {\n this.currentPosition++;\n }\n return text;\n }\n }\n pos++;\n }\n // The remaining text.\n if (pos > this.currentPosition) {\n var text2 = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text2;\n }\n return null;\n };\n /**\n * Reads line of the text.\n * @private\n */\n StringTokenizer.prototype.peekLine = function () {\n var pos = this.currentPosition;\n var line = this.readLine();\n this.currentPosition = pos;\n return line;\n };\n /**\n * Reads a word from the text.\n * @private\n */\n StringTokenizer.prototype.readWord = function () {\n var pos = this.currentPosition;\n while (pos < this.length) {\n var ch = this.text[pos];\n switch (ch) {\n case '\\r':\n case '\\n':\n var textValue = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos + 1;\n if (((ch === '\\r') && (this.currentPosition < this.length)) && (this.text[this.currentPosition] === '\\n')) {\n this.currentPosition++;\n }\n return textValue;\n case ' ':\n case '\\t': {\n if (pos === this.currentPosition) {\n pos++;\n }\n var text = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text;\n }\n }\n pos++;\n }\n // The remaining text.\n if (pos > this.currentPosition) {\n var text2 = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text2;\n }\n return null;\n };\n /**\n * Peeks a word from the text.\n * @private\n */\n StringTokenizer.prototype.peekWord = function () {\n var pos = this.currentPosition;\n var word = this.readWord();\n this.currentPosition = pos;\n return word;\n };\n StringTokenizer.prototype.read = function (count) {\n if (typeof count === 'undefined') {\n var ch = '0';\n if (!this.end) {\n ch = this.text[this.currentPosition];\n this.currentPosition++;\n }\n return ch;\n }\n else {\n var num = 0;\n var builder = '';\n while (!this.end && num < count) {\n var ch = this.read();\n builder = builder + ch;\n num++;\n }\n return builder;\n }\n };\n /**\n * Peeks char form the data.\n * @private\n */\n StringTokenizer.prototype.peek = function () {\n var ch = '0';\n if (!this.end) {\n ch = this.text[this.currentPosition];\n }\n return ch;\n };\n /**\n * Closes a reader.\n * @private\n */\n StringTokenizer.prototype.close = function () {\n this.text = null;\n };\n StringTokenizer.prototype.readToEnd = function () {\n var text;\n if (this.currentPosition === 0) {\n text = this.text;\n }\n else {\n text = this.text.substr(this.currentPosition, this.length - this.currentPosition);\n }\n this.currentPosition = this.length;\n return text;\n };\n //Implementation\n /**\n * Checks whether array contains a symbol.\n * @private\n */\n StringTokenizer.contains = function (array, symbol) {\n var contains = false;\n for (var i = 0; i < array.length; i++) {\n if (array[i] === symbol) {\n contains = true;\n break;\n }\n }\n return contains;\n };\n // Constants\n /**\n * `Whitespace` symbol.\n * @private\n */\n StringTokenizer.whiteSpace = ' ';\n /**\n * `tab` symbol.\n * @private\n */\n StringTokenizer.tab = '\\t';\n /**\n * Array of `spaces`.\n * @private\n */\n StringTokenizer.spaces = [StringTokenizer.whiteSpace, StringTokenizer.tab];\n /**\n * `Pattern` for WhiteSpace.\n * @private\n */\n StringTokenizer.whiteSpacePattern = '^[ \\t]+$';\n return StringTokenizer;\n}());\nexport { StringTokenizer };\n","/**\n * PdfFont.ts class for EJ2-PDF\n */\nimport { PdfFontStyle } from './enum';\nimport { SizeF } from './../../drawing/pdf-drawing';\nimport { PdfStringFormat } from './pdf-string-format';\nimport { PdfStringLayouter } from './string-layouter';\nimport { StringTokenizer } from './string-tokenizer';\n/**\n * Defines a particular format for text, including font face, size, and style attributes.\n * @private\n */\nvar PdfFont = /** @class */ (function () {\n function PdfFont(size, style) {\n /**\n * `Style` of the font.\n * @private\n */\n this.fontStyle = PdfFontStyle.Regular;\n if (typeof size === 'number' && typeof style === 'undefined') {\n this.fontSize = size;\n }\n else {\n this.fontSize = size;\n this.setStyle(style);\n }\n }\n Object.defineProperty(PdfFont.prototype, \"name\", {\n //Properties\n /**\n * Gets the face name of this Font.\n * @private\n */\n get: function () {\n return this.metrics.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"size\", {\n /**\n * Gets the size of this font.\n * @private\n */\n get: function () {\n return this.fontSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"height\", {\n /**\n * Gets the height of the font in points.\n * @private\n */\n get: function () {\n return this.metrics.getHeight(null);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"style\", {\n /**\n * Gets the style information for this font.\n * @private\n */\n get: function () {\n return this.fontStyle;\n },\n set: function (value) {\n this.fontStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"bold\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `bold`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Bold) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"italic\", {\n /**\n * Gets a value indicating whether this `PdfFont` has the `italic` style applied.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Italic) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"strikeout\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `strikeout`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Strikeout) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"underline\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `underline`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Underline) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"metrics\", {\n /**\n * Gets or sets the `metrics` for this font.\n * @private\n */\n get: function () {\n return this.fontMetrics;\n },\n set: function (value) {\n this.fontMetrics = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"element\", {\n // /**\n // * Gets and Sets the font `internals`.\n // * @private\n // */\n // public get fontInternal() : IPdfPrimitive {\n // return this.pdfFontInternals;\n // }\n // public set fontInternal(value : IPdfPrimitive) {\n // this.pdfFontInternals = value;\n // }\n //IPdfWrapper Members\n /**\n * Gets the `element` representing the font.\n * @private\n */\n get: function () {\n return this.pdfFontInternals;\n },\n enumerable: true,\n configurable: true\n });\n PdfFont.prototype.measureString = function (text, arg2, arg3, arg4, arg5) {\n if (typeof text === 'string' && typeof arg2 === 'undefined') {\n return this.measureString(text, null);\n }\n else if (typeof text === 'string' && (arg2 instanceof PdfStringFormat || arg2 == null) && typeof arg3 === 'undefined' && typeof arg4 === 'undefined') {\n var temparg2 = arg2;\n var charactersFitted = 0;\n var linesFilled = 0;\n return this.measureString(text, temparg2, charactersFitted, linesFilled);\n }\n else if (typeof text === 'string' && (arg2 instanceof PdfStringFormat || arg2 == null) && typeof arg3 === 'number' && typeof arg4 === 'number') {\n var temparg2 = arg2;\n return this.measureString(text, 0, temparg2, arg3, arg4);\n // } else if (typeof text === 'string' && typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n // return this.measureString(text, arg2, null);\n // } else if (typeof text === 'string' && typeof arg2 === 'number' && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'undefined' && typeof arg5 === 'undefined') {\n // let temparg3 : PdfStringFormat = arg3 as PdfStringFormat;\n // let charactersFitted : number = 0;\n // let linesFilled : number = 0;\n // return this.measureString(text, arg2, temparg3, charactersFitted, linesFilled);\n }\n else if (typeof text === 'string' && typeof arg2 === 'number' && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'number' && typeof arg5 === 'number') {\n var layoutArea = new SizeF(arg2, 0);\n var temparg3 = arg3;\n return this.measureString(text, layoutArea, temparg3, arg4, arg5);\n // } else if (typeof text === 'string' && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n // return this.measureString(text, arg2, null);\n // } else if (typeof text === 'string' && arg2 instanceof SizeF && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'undefined' && typeof arg5 === 'undefined') {\n // let temparg3 : PdfStringFormat = arg3 as PdfStringFormat;\n // let charactersFitted : number = 0;\n // let linesFilled : number = 0;\n // return this.measureString(text, arg2, temparg3, charactersFitted, linesFilled);\n }\n else {\n if (text == null) {\n throw Error(\"ArgumentNullException(\\\"text\\\")\");\n }\n var temparg2 = arg2;\n var temparg3 = arg3;\n var layouter = new PdfStringLayouter();\n var result = layouter.layout(text, this, temparg3, temparg2, false, new SizeF(0, 0));\n // arg4 = (result.Remainder == null) ? text.length : text.length - result.Remainder.length;\n arg4 = text.length;\n arg5 = (result.empty) ? 0 : result.lines.length;\n return result.actualSize;\n }\n };\n /* tslint:enable */\n //IPdfCache Members\n /**\n * `Checks` whether the object is similar to another object.\n * @private\n */\n PdfFont.prototype.equalsTo = function (obj) {\n var result = this.equalsToFont(obj);\n return result;\n };\n /**\n * Returns `internals` of the object.\n * @private\n */\n PdfFont.prototype.getInternals = function () {\n return this.pdfFontInternals;\n };\n /**\n * Sets `internals` to the object.\n * @private\n */\n PdfFont.prototype.setInternals = function (internals) {\n if (internals == null) {\n throw new Error('ArgumentNullException:internals');\n }\n this.pdfFontInternals = internals;\n };\n /**\n * Sets the `style` of the font.\n * @private\n */\n PdfFont.prototype.setStyle = function (style) {\n this.fontStyle = style;\n };\n /**\n * Applies `settings` to the default line width.\n * @private\n */\n PdfFont.prototype.applyFormatSettings = function (line, format, width) {\n // if (line == null) {\n // throw new Error(`ArgumentNullException:line`);\n // }\n var realWidth = width;\n if (format != null && width > 0) {\n // Space among characters is not default.\n if (format.characterSpacing !== 0) {\n realWidth += (line.length - 1) * format.characterSpacing;\n }\n // Space among words is not default.\n if (format.wordSpacing !== 0) {\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n realWidth += whitespacesCount * format.wordSpacing;\n }\n }\n return realWidth;\n };\n //Constants\n /**\n * `Multiplier` of the symbol width.\n * @default 0.001\n * @private\n */\n PdfFont.charSizeMultiplier = 0.001;\n /**\n * `Synchronization` object.\n * @private\n */\n PdfFont.syncObject = new Object();\n return PdfFont;\n}());\nexport { PdfFont };\n","/**\n * public Enum for `PdfLayoutType`.\n * @private\n */\nexport var PdfLayoutType;\n(function (PdfLayoutType) {\n /**\n * Specifies the type of `Paginate`.\n * @private\n */\n PdfLayoutType[PdfLayoutType[\"Paginate\"] = 0] = \"Paginate\";\n /**\n * Specifies the type of `OnePage`.\n * @private\n */\n PdfLayoutType[PdfLayoutType[\"OnePage\"] = 1] = \"OnePage\";\n})(PdfLayoutType || (PdfLayoutType = {}));\n/**\n * public Enum for `PdfLayoutBreakType`.\n * @private\n */\nexport var PdfLayoutBreakType;\n(function (PdfLayoutBreakType) {\n /**\n * Specifies the type of `FitPage`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitPage\"] = 0] = \"FitPage\";\n /**\n * Specifies the type of `FitElement`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitElement\"] = 1] = \"FitElement\";\n /**\n * Specifies the type of `FitColumnsToPage`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitColumnsToPage\"] = 2] = \"FitColumnsToPage\";\n})(PdfLayoutBreakType || (PdfLayoutBreakType = {}));\nexport var PathPointType;\n(function (PathPointType) {\n /**\n * Specifies the path point type of `Start`.\n * @private\n */\n PathPointType[PathPointType[\"Start\"] = 0] = \"Start\";\n /**\n * Specifies the path point type of `Line`.\n * @private\n */\n PathPointType[PathPointType[\"Line\"] = 1] = \"Line\";\n /**\n * Specifies the path point type of `Bezier3`.\n * @private\n */\n PathPointType[PathPointType[\"Bezier3\"] = 3] = \"Bezier3\";\n /**\n * Specifies the path point type of `Bezier`.\n * @private\n */\n PathPointType[PathPointType[\"Bezier\"] = 3] = \"Bezier\";\n /**\n * Specifies the path point type of `PathTypeMask`.\n * @private\n */\n PathPointType[PathPointType[\"PathTypeMask\"] = 7] = \"PathTypeMask\";\n /**\n * Specifies the path point type of `DashMode`.\n * @private\n */\n PathPointType[PathPointType[\"DashMode\"] = 16] = \"DashMode\";\n /**\n * Specifies the path point type of `PathMarker`.\n * @private\n */\n PathPointType[PathPointType[\"PathMarker\"] = 32] = \"PathMarker\";\n /**\n * Specifies the path point type of `CloseSubpath`.\n * @private\n */\n PathPointType[PathPointType[\"CloseSubpath\"] = 128] = \"CloseSubpath\";\n})(PathPointType || (PathPointType = {}));\n","/**\n * PdfTransformationMatrix.ts class for EJ2-PDF\n */\nimport { PointF } from './../drawing/pdf-drawing';\nimport { PdfNumber } from './../primitives/pdf-number';\n/**\n * Class for representing Root `transformation matrix`.\n */\nvar PdfTransformationMatrix = /** @class */ (function () {\n function PdfTransformationMatrix(value) {\n /**\n * Value for `angle converting`.\n * @default 180.0 / Math.PI\n * @private\n */\n this.radDegFactor = 180.0 / Math.PI;\n if (typeof value === 'undefined') {\n this.transformationMatrix = new Matrix(1.00, 0.00, 0.00, 1.00, 0.00, 0.00);\n }\n else {\n this.transformationMatrix = new Matrix(1.00, 0.00, 0.00, -1.00, 0.00, 0.00);\n }\n }\n Object.defineProperty(PdfTransformationMatrix.prototype, \"matrix\", {\n // Properties\n /**\n * Gets or sets the `internal matrix object`.\n * @private\n */\n get: function () {\n return this.transformationMatrix;\n },\n set: function (value) {\n this.transformationMatrix = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /**\n * `Translates` coordinates by specified coordinates.\n * @private\n */\n PdfTransformationMatrix.prototype.translate = function (offsetX, offsetY) {\n this.transformationMatrix.translate(offsetX, offsetY);\n };\n /**\n * `Scales` coordinates by specified coordinates.\n * @private\n */\n PdfTransformationMatrix.prototype.scale = function (scaleX, scaleY) {\n this.transformationMatrix.elements[0] = scaleX;\n this.transformationMatrix.elements[3] = scaleY;\n };\n /**\n * `Rotates` coordinate system in counterclockwise direction.\n * @private\n */\n PdfTransformationMatrix.prototype.rotate = function (angle) {\n //Convert from degree to radian \n angle = (angle * Math.PI) / 180;\n //Rotation \n this.transformationMatrix.elements[0] = Math.cos(angle);\n this.transformationMatrix.elements[1] = Math.sin(angle);\n this.transformationMatrix.elements[2] = -Math.sin(angle);\n this.transformationMatrix.elements[3] = Math.cos(angle);\n };\n // Overrides\n /**\n * Gets `PDF representation`.\n * @private\n */\n PdfTransformationMatrix.prototype.toString = function () {\n var builder = '';\n var whitespace = ' ';\n for (var i = 0, len = this.transformationMatrix.elements.length; i < len; i++) {\n var temp = this.matrix.elements[i];\n builder += PdfNumber.floatToString(this.transformationMatrix.elements[i]);\n builder += whitespace;\n }\n return builder;\n };\n // Implementation\n /**\n * `Multiplies` matrices (changes coordinate system.)\n * @private\n */\n PdfTransformationMatrix.prototype.multiply = function (matrix) {\n this.transformationMatrix.multiply(matrix.matrix);\n };\n /**\n * Converts `degrees to radians`.\n * @private\n */\n PdfTransformationMatrix.degreesToRadians = function (degreesX) {\n return this.degRadFactor * degreesX;\n };\n /**\n * Converts `radians to degrees`.\n * @private\n */\n PdfTransformationMatrix.prototype.radiansToDegrees = function (radians) {\n return this.radDegFactor * radians;\n };\n /**\n * `Clones` this instance of PdfTransformationMatrix.\n * @private\n */\n PdfTransformationMatrix.prototype.clone = function () {\n return this;\n };\n // Constants\n /**\n * Value for `angle converting`.\n * @default Math.PI / 180.0\n * @private\n */\n PdfTransformationMatrix.degRadFactor = Math.PI / 180.0;\n return PdfTransformationMatrix;\n}());\nexport { PdfTransformationMatrix };\nvar Matrix = /** @class */ (function () {\n function Matrix(arg1, arg2, arg3, arg4, arg5, arg6) {\n if (typeof arg1 === 'undefined') {\n this.metrixElements = [];\n }\n else if (typeof arg1 === 'number') {\n this.metrixElements = [];\n this.metrixElements.push(arg1);\n this.metrixElements.push(arg2);\n this.metrixElements.push(arg3);\n this.metrixElements.push(arg4);\n this.metrixElements.push(arg5);\n this.metrixElements.push(arg6);\n }\n else {\n this.metrixElements = arg1;\n }\n }\n Object.defineProperty(Matrix.prototype, \"elements\", {\n // Properties\n /**\n * Gets the `elements`.\n * @private\n */\n get: function () {\n return this.metrixElements;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"offsetX\", {\n /**\n * Gets the off set `X`.\n * @private\n */\n get: function () {\n return this.metrixElements[4];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"offsetY\", {\n /**\n * Gets the off set `Y`.\n * @private\n */\n get: function () {\n return this.metrixElements[5];\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Translates` coordinates by specified coordinates.\n * @private\n */\n Matrix.prototype.translate = function (offsetX, offsetY) {\n this.metrixElements[4] = offsetX;\n this.metrixElements[5] = offsetY;\n };\n /**\n * `Translates` the specified offset X.\n * @private\n */\n Matrix.prototype.transform = function (point) {\n var x = point.x;\n var y = point.y;\n var x2 = x * this.elements[0] + y * this.elements[2] + this.offsetX;\n var y2 = x * this.elements[1] + y * this.elements[3] + this.offsetY;\n return new PointF(x2, y2);\n };\n /**\n * `Multiplies matrices` (changes coordinate system.)\n * @private\n */\n Matrix.prototype.multiply = function (matrix) {\n var tempMatrix = [];\n tempMatrix.push(this.elements[0] * matrix.elements[0] + this.elements[1] * matrix.elements[2]);\n tempMatrix[1] = (this.elements[0] * matrix.elements[1] + this.elements[1] * matrix.elements[3]);\n tempMatrix[2] = (this.elements[2] * matrix.elements[0] + this.elements[3] * matrix.elements[2]);\n tempMatrix[3] = (this.elements[2] * matrix.elements[1] + this.elements[3] * matrix.elements[3]);\n tempMatrix[4] = (this.offsetX * matrix.elements[0] + this.offsetY * matrix.elements[2] + matrix.offsetX);\n tempMatrix[5] = (this.offsetX * matrix.elements[1] + this.offsetY * matrix.elements[3] + matrix.offsetY);\n for (var i = 0; i < tempMatrix.length; i++) {\n this.elements[i] = tempMatrix[i];\n }\n };\n // IDisposable Members\n /**\n * `Dispose` this instance of PdfTransformationMatrix class.\n * @private\n */\n Matrix.prototype.dispose = function () {\n this.metrixElements = null;\n };\n // ICloneable Members\n /**\n * `Clones` this instance of PdfTransformationMatrix class.\n * @private\n */\n Matrix.prototype.clone = function () {\n var m = new Matrix(this.metrixElements);\n return m;\n };\n return Matrix;\n}());\nexport { Matrix };\n","/**\n * `constants.ts` class for EJ2-PDF\n * @private\n */\nvar ProcedureSets = /** @class */ (function () {\n function ProcedureSets() {\n /**\n * Specifies the `PDF` procedure set.\n * @private\n */\n this.pdf = 'PDF';\n /**\n * Specifies the `Text` procedure set.\n * @private\n */\n this.text = 'Text';\n /**\n * Specifies the `ImageB` procedure set.\n * @private\n */\n this.imageB = 'ImageB';\n /**\n * Specifies the `ImageC` procedure set.\n * @private\n */\n this.imageC = 'ImageC';\n /**\n * Specifies the `ImageI` procedure set.\n * @private\n */\n this.imageI = 'ImageI';\n }\n return ProcedureSets;\n}());\nexport { ProcedureSets };\n","/**\n * Dictionary class\n * @private\n * @hidden\n */\nvar TemporaryDictionary = /** @class */ (function () {\n function TemporaryDictionary() {\n /**\n * @hidden\n * @private\n */\n this.mKeys = [];\n /**\n * @hidden\n * @private\n */\n this.mValues = [];\n }\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.size = function () {\n return this.mKeys.length;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.add = function (key, value) {\n if (key === undefined || key === null || value === undefined || value === null) {\n throw new ReferenceError('Provided key or value is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n this.mKeys.push(key);\n this.mValues.push(value);\n return 1;\n }\n else {\n throw new RangeError('An item with the same key has already been added.');\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.keys = function () {\n return this.mKeys;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.values = function () {\n return this.mValues;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.getValue = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n throw new RangeError('No item with the specified key has been added.');\n }\n else {\n return this.mValues[index];\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.setValue = function (key, value) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n this.mKeys.push(key);\n this.mValues.push(value);\n }\n else {\n this.mValues[index] = value;\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.remove = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n throw new RangeError('No item with the specified key has been added.');\n }\n else {\n this.mKeys.splice(index, 1);\n this.mValues.splice(index, 1);\n return true;\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.containsKey = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n return false;\n }\n return true;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.clear = function () {\n this.mKeys = [];\n this.mValues = [];\n };\n return TemporaryDictionary;\n}());\nexport { TemporaryDictionary };\n","import { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * Represents a simple `transparency`.\n * @private\n */\nvar PdfTransparency = /** @class */ (function () {\n // Properties\n // /**\n // * Gets the `stroke` operation alpha value.\n // * @private\n // */\n // public get stroke() : number {\n // let result : number = this.getNumber(this.dictionaryProperties.CA);\n // return result;\n // }\n // /**\n // * Gets the `fill` operation alpha value.\n // * @private\n // */\n // public get fill() : number {\n // let result : number = this.getNumber(this.dictionaryProperties.ca);\n // return result;\n // }\n // /**\n // * Gets the `blend mode`.\n // * @private\n // */\n // public get mode() : PdfBlendMode {\n // let result : string = this.getName(this.dictionaryProperties.ca);\n // return PdfBlendMode.Normal;\n // }\n // Constructors\n /**\n * Initializes a new instance of the `Transparency` class.\n * @private\n */\n function PdfTransparency(stroke, fill, mode) {\n // Fields\n /**\n * Internal variable to store `dictionary`.\n * @default new PdfDictionary()\n * @private\n */\n this.dictionary = new PdfDictionary();\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @default new DictionaryProperties()\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.dictionary.items.setValue(this.dictionaryProperties.CA, new PdfNumber(stroke));\n this.dictionary.items.setValue(this.dictionaryProperties.ca, new PdfNumber(fill));\n this.dictionary.items.setValue(this.dictionaryProperties.BM, new PdfName(mode.toString()));\n }\n Object.defineProperty(PdfTransparency.prototype, \"element\", {\n // // Implementation\n // /**\n // * Gets the `number value`.\n // * @private\n // */\n // private getNumber(keyName : string) : number {\n // let result : number = 0.0;\n // let numb : PdfNumber = this.dictionary.items.getValue(keyName) as PdfNumber;\n // result = numb.intValue;\n // return result;\n // }\n // /**\n // * Gets the `name value`.\n // * @private\n // */\n // private getName(keyName : string) : string {\n // let result : string = null;\n // let name : PdfName = this.dictionary.items.getValue(keyName) as PdfName;\n // result = name.value;\n // return result;\n // }\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.dictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTransparency;\n}());\nexport { PdfTransparency };\n","/**\n * Represent a `collection of automatic fields information`.\n * @private\n */\nvar PdfAutomaticFieldInfoCollection = /** @class */ (function () {\n /**\n * Initializes a new instance of the 'PdfPageNumberFieldInfoCollection' class.\n * @private\n */\n function PdfAutomaticFieldInfoCollection() {\n /**\n * Internal variable to store instance of `pageNumberFields` class.\n * @private\n */\n this.automaticFieldsInformation = [];\n //\n }\n Object.defineProperty(PdfAutomaticFieldInfoCollection.prototype, \"automaticFields\", {\n /**\n * Gets the `page number fields collection`.\n * @private\n */\n get: function () {\n return this.automaticFieldsInformation;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /// Adds the specified field info.\n /**\n * Add page number field into collection.\n * @private\n */\n PdfAutomaticFieldInfoCollection.prototype.add = function (fieldInfo) {\n return this.automaticFields.push(fieldInfo);\n };\n return PdfAutomaticFieldInfoCollection;\n}());\nexport { PdfAutomaticFieldInfoCollection };\n","/**\n * Represents a base class for all page graphics elements.\n */\nvar PdfGraphicsElement = /** @class */ (function () {\n // Constructors\n function PdfGraphicsElement() {\n //\n }\n /**\n * `Draws` the page number field.\n * @public\n */\n PdfGraphicsElement.prototype.drawHelper = function (graphics, x, y) {\n var bNeedSave = (x !== 0 || y !== 0);\n var gState = null;\n // Translate co-ordinates.\n if (bNeedSave) {\n // Save state.\n gState = graphics.save();\n graphics.translateTransform(x, y);\n }\n this.drawInternal(graphics);\n if (bNeedSave) {\n // Restore state.\n graphics.restore(gState);\n }\n };\n return PdfGraphicsElement;\n}());\nexport { PdfGraphicsElement };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfAutomaticField.ts class for EJ2-PDF\n */\nimport { RectangleF, SizeF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfSolidBrush } from './../../graphics/brushes/pdf-solid-brush';\nimport { PdfColor } from './../../graphics/pdf-color';\nimport { PdfDocument } from './../pdf-document';\nimport { PdfGraphicsElement } from './../../graphics/figures/base/graphics-element';\nimport { PdfAutomaticFieldInfo } from './automatic-field-info';\n/**\n * Represents a fields which is calculated before the document saves.\n */\nvar PdfAutomaticField = /** @class */ (function (_super) {\n __extends(PdfAutomaticField, _super);\n // Constructors\n function PdfAutomaticField() {\n var _this = _super.call(this) || this;\n // Fields\n _this.internalBounds = new RectangleF(0, 0, 0, 0);\n _this.internalTemplateSize = new SizeF(0, 0);\n return _this;\n }\n Object.defineProperty(PdfAutomaticField.prototype, \"bounds\", {\n // Properties\n get: function () {\n return this.internalBounds;\n },\n set: function (value) {\n this.internalBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"size\", {\n get: function () {\n return new SizeF(this.bounds.width, this.bounds.height);\n },\n set: function (value) {\n this.bounds.width = value.width;\n this.bounds.height = value.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"location\", {\n get: function () {\n return new PointF(this.bounds.x, this.bounds.y);\n },\n set: function (value) {\n this.bounds.x = value.x;\n this.bounds.y = value.y;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"font\", {\n get: function () {\n return this.internalFont;\n },\n set: function (value) {\n this.internalFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"brush\", {\n get: function () {\n return this.internalBrush;\n },\n set: function (value) {\n this.internalBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"pen\", {\n get: function () {\n return this.internalPen;\n },\n set: function (value) {\n this.internalPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"stringFormat\", {\n get: function () {\n return this.internalStringFormat;\n },\n set: function (value) {\n this.internalStringFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n PdfAutomaticField.prototype.performDrawHelper = function (graphics, location, scalingX, scalingY) {\n if (this.bounds.height === 0 || this.bounds.width === 0) {\n var text = this.getValue(graphics);\n this.internalTemplateSize = this.getFont().measureString(text, this.size, this.stringFormat);\n }\n };\n PdfAutomaticField.prototype.draw = function (arg1, arg2, arg3) {\n if (typeof arg2 === 'undefined') {\n var location_1 = new PointF(0, 0);\n this.draw(arg1, location_1);\n }\n else if (arg2 instanceof PointF) {\n this.draw(arg1, arg2.x, arg2.y);\n }\n else {\n this.drawHelper(arg1, arg2, arg3);\n var info = new PdfAutomaticFieldInfo(this, new PointF(arg2, arg3));\n arg1.automaticFields.add(info);\n }\n };\n PdfAutomaticField.prototype.getSize = function () {\n if (this.bounds.height === 0 || this.bounds.width === 0) {\n return this.internalTemplateSize;\n }\n else {\n return this.size;\n }\n };\n PdfAutomaticField.prototype.drawInternal = function (graphics) {\n //\n };\n /* tslint:disable */\n PdfAutomaticField.prototype.getBrush = function () {\n return (typeof this.internalBrush === 'undefined' || this.internalBrush == null) ? new PdfSolidBrush(new PdfColor(0, 0, 0)) : this.internalBrush;\n };\n PdfAutomaticField.prototype.getFont = function () {\n return (typeof this.internalFont === 'undefined' || this.internalFont == null) ? PdfDocument.defaultFont : this.internalFont;\n };\n /* tslint:enable */\n PdfAutomaticField.prototype.getPageFromGraphics = function (graphics) {\n if (typeof graphics.page !== 'undefined' && graphics.page !== null) {\n var page = graphics.page;\n return page;\n }\n else {\n var page = graphics.currentPage;\n return page;\n }\n };\n return PdfAutomaticField;\n}(PdfGraphicsElement));\nexport { PdfAutomaticField };\n","/**\n * PdfAutomaticFieldInfo.ts class for EJ2-PDF\n * @private\n */\nimport { PointF } from './../../drawing/pdf-drawing';\nimport { PdfAutomaticField } from './automatic-field';\n/**\n * Represents information about the automatic field.\n * @private\n */\nvar PdfAutomaticFieldInfo = /** @class */ (function () {\n function PdfAutomaticFieldInfo(field, location, scaleX, scaleY) {\n // Fields\n /**\n * Internal variable to store location of the field.\n * @private\n */\n this.pageNumberFieldLocation = new PointF();\n /**\n * Internal variable to store field.\n * @private\n */\n this.pageNumberField = null;\n /**\n * Internal variable to store x scaling factor.\n * @private\n */\n this.scaleX = 1;\n /**\n * Internal variable to store y scaling factor.\n * @private\n */\n this.scaleY = 1;\n if (typeof location === 'undefined' && field instanceof PdfAutomaticFieldInfo) {\n this.pageNumberField = field.field;\n this.pageNumberFieldLocation = field.location;\n this.scaleX = field.scalingX;\n this.scaleY = field.scalingY;\n }\n else if (typeof scaleX === 'undefined' && location instanceof PointF && field instanceof PdfAutomaticField) {\n this.pageNumberField = field;\n this.pageNumberFieldLocation = location;\n }\n else {\n this.pageNumberField = field;\n this.pageNumberFieldLocation = location;\n this.scaleX = scaleX;\n this.scaleY = scaleY;\n }\n }\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"location\", {\n /* tslint:enable */\n // Properties\n /**\n * Gets or sets the location.\n * @private\n */\n get: function () {\n return this.pageNumberFieldLocation;\n },\n set: function (value) {\n this.pageNumberFieldLocation = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"field\", {\n /**\n * Gets or sets the field.\n * @private\n */\n get: function () {\n return this.pageNumberField;\n },\n set: function (value) {\n this.pageNumberField = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"scalingX\", {\n /**\n * Gets or sets the scaling X factor.\n * @private\n */\n get: function () {\n return this.scaleX;\n },\n set: function (value) {\n this.scaleX = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"scalingY\", {\n /**\n * Gets or sets the scaling Y factor.\n * @private\n */\n get: function () {\n return this.scaleY;\n },\n set: function (value) {\n this.scaleY = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAutomaticFieldInfo;\n}());\nexport { PdfAutomaticFieldInfo };\n","/**\n * ByteArray class\n * Used to keep information about image stream as byte array.\n * @private\n */\nvar ByteArray = /** @class */ (function () {\n /**\n * Initialize the new instance for `byte-array` class\n * @hidden\n * @private\n */\n function ByteArray(length) {\n /**\n * Current stream `position`.\n * @default 0\n * @private\n */\n this.mPosition = 0;\n this.buffer = new Uint8Array(length);\n this.dataView = new DataView(this.buffer.buffer);\n }\n Object.defineProperty(ByteArray.prototype, \"position\", {\n /**\n * Gets and Sets a current `position` of byte array.\n * @hidden\n * @private\n */\n get: function () {\n return this.mPosition;\n },\n set: function (value) {\n this.mPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Read` from current stream position.\n * @default 0\n * @hidden\n * @private\n */\n ByteArray.prototype.read = function (buffer, offset, count) {\n for (var index = offset; index < count; index++) {\n var position = this.position;\n buffer.buffer[index] = this.readByte(position);\n this.position++;\n }\n };\n /**\n * @hidden\n */\n ByteArray.prototype.getBuffer = function (index) {\n return this.buffer[index];\n };\n /**\n * @hidden\n */\n ByteArray.prototype.writeFromBase64String = function (base64) {\n var arr = this.encodedString(base64);\n this.buffer = arr;\n };\n /**\n * @hidden\n */\n ByteArray.prototype.encodedString = function (input) {\n var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var chr1;\n var chr2;\n var chr3;\n var enc1;\n var enc2;\n var enc3;\n var enc4;\n var i = 0;\n var resultIndex = 0;\n var dataUrlPrefix = 'data:';\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n var totalLength = input.length * 3 / 4;\n if (input.charAt(input.length - 1) === keyStr.charAt(64)) {\n totalLength--;\n }\n var output = new Uint8Array(totalLength | 0);\n while (i < input.length) {\n enc1 = keyStr.indexOf(input.charAt(i++));\n enc2 = keyStr.indexOf(input.charAt(i++));\n enc3 = keyStr.indexOf(input.charAt(i++));\n enc4 = keyStr.indexOf(input.charAt(i++));\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n output[resultIndex++] = chr1;\n output[resultIndex++] = chr2;\n output[resultIndex++] = chr3;\n }\n return output;\n };\n /**\n * @hidden\n */\n ByteArray.prototype.readByte = function (offset) {\n return (this.buffer[offset]);\n };\n Object.defineProperty(ByteArray.prototype, \"internalBuffer\", {\n /**\n * @hidden\n */\n get: function () {\n return this.buffer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ByteArray.prototype, \"count\", {\n /**\n * @hidden\n */\n get: function () {\n return this.buffer.byteLength;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * 'readNextTwoBytes' stream\n * @hidden\n * @private\n */\n ByteArray.prototype.readNextTwoBytes = function (stream) {\n var data = stream.readByte(this.position);\n this.position++;\n data <<= 8;\n data |= stream.readByte(this.position);\n this.position++;\n return data;\n };\n return ByteArray;\n}());\nexport { ByteArray };\n","/**\n * TtfTableInfo.ts class for EJ2-PDF\n */\nvar TtfTableInfo = /** @class */ (function () {\n function TtfTableInfo() {\n }\n Object.defineProperty(TtfTableInfo.prototype, \"empty\", {\n //Properties\n /**\n * Gets a value indicating whether this table is empty.\n * @private\n */\n get: function () {\n var empty = (this.offset === this.length && this.length === this.checksum && this.checksum === 0);\n return empty;\n },\n enumerable: true,\n configurable: true\n });\n return TtfTableInfo;\n}());\nexport { TtfTableInfo };\n","var TtfNameTable = /** @class */ (function () {\n function TtfNameTable() {\n }\n return TtfNameTable;\n}());\nexport { TtfNameTable };\n","/**\n * TtfNameRecord.ts class for EJ2-PDF\n */\nvar TtfNameRecord = /** @class */ (function () {\n function TtfNameRecord() {\n }\n return TtfNameRecord;\n}());\nexport { TtfNameRecord };\n","/**\n * TtfHeadTable.ts class for EJ2-PDF\n */\nvar TtfHeadTable = /** @class */ (function () {\n function TtfHeadTable() {\n }\n return TtfHeadTable;\n}());\nexport { TtfHeadTable };\n","var TtfMetrics = /** @class */ (function () {\n function TtfMetrics() {\n }\n Object.defineProperty(TtfMetrics.prototype, \"isItalic\", {\n //Properties\n /**\n * Gets a value indicating whether this instance is italic.\n */\n get: function () {\n return ((this.macStyle & 2) !== 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfMetrics.prototype, \"isBold\", {\n /**\n * Gets a value indicating whether this instance is bold.\n */\n get: function () {\n return ((this.macStyle & 1) !== 0);\n },\n enumerable: true,\n configurable: true\n });\n return TtfMetrics;\n}());\nexport { TtfMetrics };\n","/**\n * TtfHorizontalHeaderTable.ts class for EJ2-PDF\n */\nvar TtfHorizontalHeaderTable = /** @class */ (function () {\n function TtfHorizontalHeaderTable() {\n }\n return TtfHorizontalHeaderTable;\n}());\nexport { TtfHorizontalHeaderTable };\n","/**\n * TtfOS2Table.ts class for EJ2-PDF\n * The OS/2 table consists of a set of metrics that are required by Windows and OS/2.\n */\nvar TtfOS2Table = /** @class */ (function () {\n function TtfOS2Table() {\n }\n return TtfOS2Table;\n}());\nexport { TtfOS2Table };\n","/**\n * TtfPostTable.ts class for EJ2-PDF\n */\nvar TtfPostTable = /** @class */ (function () {\n function TtfPostTable() {\n }\n return TtfPostTable;\n}());\nexport { TtfPostTable };\n","/**\n * TtfLongHorMetric.ts class for EJ2-PDF\n */\nvar TtfLongHorMetric = /** @class */ (function () {\n function TtfLongHorMetric() {\n }\n return TtfLongHorMetric;\n}());\nexport { TtfLongHorMetric };\n","/**\n * TtfCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfCmapSubTable = /** @class */ (function () {\n function TtfCmapSubTable() {\n }\n return TtfCmapSubTable;\n}());\nexport { TtfCmapSubTable };\n","/**\n * TtfCmapTable.ts class for EJ2-PDF\n */\nvar TtfCmapTable = /** @class */ (function () {\n function TtfCmapTable() {\n }\n return TtfCmapTable;\n}());\nexport { TtfCmapTable };\n","/**\n * TtfGlyphInfo.ts class for EJ2-PDF\n */\nvar TtfGlyphInfo = /** @class */ (function () {\n function TtfGlyphInfo() {\n }\n Object.defineProperty(TtfGlyphInfo.prototype, \"empty\", {\n //Properties\n /**\n * Gets a value indicating whether this TtfGlyphInfo is empty.\n */\n get: function () {\n var empty = (this.index === this.width && this.width === this.charCode && this.charCode === 0);\n return empty;\n },\n enumerable: true,\n configurable: true\n });\n //IComparable implementation\n /**\n * Compares two WidthDescriptor objects.\n */\n TtfGlyphInfo.prototype.compareTo = function (obj) {\n var glyph = obj;\n return this.index - glyph.index;\n };\n return TtfGlyphInfo;\n}());\nexport { TtfGlyphInfo };\n","/**\n * TtfLocaTable.ts class for EJ2-PDF\n */\nvar TtfLocaTable = /** @class */ (function () {\n function TtfLocaTable() {\n }\n return TtfLocaTable;\n}());\nexport { TtfLocaTable };\n","/**\n * TtfAppleCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfAppleCmapSubTable = /** @class */ (function () {\n function TtfAppleCmapSubTable() {\n }\n return TtfAppleCmapSubTable;\n}());\nexport { TtfAppleCmapSubTable };\n","/**\n * TtfMicrosoftCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfMicrosoftCmapSubTable = /** @class */ (function () {\n function TtfMicrosoftCmapSubTable() {\n }\n return TtfMicrosoftCmapSubTable;\n}());\nexport { TtfMicrosoftCmapSubTable };\n","/**\n * TtfTrimmedCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfTrimmedCmapSubTable = /** @class */ (function () {\n function TtfTrimmedCmapSubTable() {\n }\n return TtfTrimmedCmapSubTable;\n}());\nexport { TtfTrimmedCmapSubTable };\n","/**\n * TtfLocaTable.ts class for EJ2-PDF\n */\nvar TtfGlyphHeader = /** @class */ (function () {\n function TtfGlyphHeader() {\n }\n return TtfGlyphHeader;\n}());\nexport { TtfGlyphHeader };\n","/**\n * Writes data in BigEndian order.\n */\nvar BigEndianWriter = /** @class */ (function () {\n //Constructors\n /**\n * Creates a new writer.\n */\n function BigEndianWriter(capacity) {\n //Constants\n /**\n * Size of Int32 type.\n */\n this.int32Size = 4;\n /**\n * Size of Int16 type.\n */\n this.int16Size = 2;\n /**\n * Size of long type.\n */\n this.int64Size = 8;\n this.bufferLength = capacity;\n this.buffer = [];\n }\n Object.defineProperty(BigEndianWriter.prototype, \"data\", {\n //Properties\n /**\n * Gets data written to the writer.\n */\n get: function () {\n if (this.buffer.length < this.bufferLength) {\n var length_1 = this.bufferLength - this.buffer.length;\n for (var i = 0; i < length_1; i++) {\n this.buffer.push(0);\n }\n }\n return this.buffer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BigEndianWriter.prototype, \"position\", {\n /// \n /// Gets position of the internal buffer.\n /// \n get: function () {\n if (this.internalPosition === undefined || this.internalPosition === null) {\n this.internalPosition = 0;\n }\n return this.internalPosition;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Writes short value.\n */\n BigEndianWriter.prototype.writeShort = function (value) {\n var bytes = [((value & 0x0000ff00) >> 8), value & 0x000000ff];\n this.flush(bytes);\n };\n /**\n * Writes int value.\n */\n BigEndianWriter.prototype.writeInt = function (value) {\n var i1 = (value & 0xff000000) >> 24;\n i1 = i1 < 0 ? 256 + i1 : i1;\n var i2 = (value & 0x00ff0000) >> 16;\n i2 = i2 < 0 ? 256 + i2 : i2;\n var i3 = (value & 0x0000ff00) >> 8;\n i3 = i3 < 0 ? 256 + i3 : i3;\n var i4 = value & 0x000000ff;\n i4 = i4 < 0 ? 256 + i4 : i4;\n var bytes = [(value & 0xff000000) >> 24, (value & 0x00ff0000) >> 16, (value & 0x0000ff00) >> 8, value & 0x000000ff];\n this.flush(bytes);\n };\n /**\n * Writes u int value.\n */\n BigEndianWriter.prototype.writeUInt = function (value) {\n var buff = [(value & 0xff000000) >> 24, (value & 0x00ff0000) >> 16, (value & 0x0000ff00) >> 8, value & 0x000000ff];\n this.flush(buff);\n };\n /**\n * Writes string value.\n */\n BigEndianWriter.prototype.writeString = function (value) {\n if (value == null) {\n throw new Error('Argument Null Exception : value');\n }\n var bytes = [];\n for (var i = 0; i < value.length; i++) {\n bytes.push(value.charCodeAt(i));\n }\n this.flush(bytes);\n };\n /**\n * Writes byte[] value.\n */\n BigEndianWriter.prototype.writeBytes = function (value) {\n this.flush(value);\n };\n // //Implementation\n BigEndianWriter.prototype.flush = function (buff) {\n if (buff === null) {\n throw new Error('Argument Null Exception : buff');\n }\n var position = this.position;\n for (var i = 0; i < buff.length; i++) {\n this.buffer[position] = buff[i];\n position++;\n }\n this.internalPosition += buff.length;\n };\n return BigEndianWriter;\n}());\nexport { BigEndianWriter };\n","/**\n * TtfReader.ts class for EJ2-PDF\n */\nimport { TtfTableInfo } from './ttf-table-info';\nimport { Dictionary } from './../../collections/dictionary';\nimport { TtfNameTable } from './ttf-name-table';\nimport { TtfNameRecord } from './ttf-name-record';\nimport { TtfHeadTable } from './ttf-head-table';\nimport { TtfMetrics } from './ttf-metrics';\nimport { TtfHorizontalHeaderTable } from './ttf-horizontal-header-table';\nimport { TtfOS2Table } from './ttf-OS2-Table';\nimport { TtfPostTable } from './ttf-post-table';\nimport { TtfLongHorMetric } from './ttf-long-hor-metric';\nimport { TtfCmapSubTable } from './ttf-cmap-sub-table';\nimport { TtfCmapTable } from './ttf-cmap-table';\nimport { TtfGlyphInfo } from './ttf-glyph-info';\nimport { TtfLocaTable } from './ttf-loca-table';\nimport { TtfAppleCmapSubTable } from './ttf-apple-cmap-sub-table';\nimport { TtfMicrosoftCmapSubTable } from './ttf-microsoft-cmap-sub-table';\nimport { TtfTrimmedCmapSubTable } from './ttf-trimmed-cmap-sub-table';\nimport { TtfGlyphHeader } from './ttf-glyph-header';\nimport { Rectangle } from './../../drawing/pdf-drawing';\nimport { StringTokenizer } from './string-tokenizer';\nimport { TtfCmapFormat, TtfCmapEncoding, TtfPlatformID } from './enum';\nimport { TtfMicrosoftEncodingID, TtfMacintoshEncodingID, TtfCompositeGlyphFlags } from './enum';\nimport { BigEndianWriter } from './../../input-output/big-endian-writer';\nvar TtfReader = /** @class */ (function () {\n //Constructors\n function TtfReader(fontData) {\n this.int32Size = 4;\n this.isTtcFont = false;\n this.isMacTtf = false;\n this.metricsName = '';\n this.isMacTTF = false;\n this.missedGlyphs = 0;\n this.tableNames = ['cvt ', 'fpgm', 'glyf', 'head', 'hhea', 'hmtx', 'loca', 'maxp', 'prep'];\n this.entrySelectors = [0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4];\n this.fontData = fontData;\n this.initialize();\n }\n Object.defineProperty(TtfReader.prototype, \"macintosh\", {\n //Properties\n /**\n * Gets glyphs for Macintosh or Symbol fonts (char - key, glyph - value).\n */\n get: function () {\n if (this.macintoshDictionary === null || this.macintoshDictionary === undefined) {\n this.macintoshDictionary = new Dictionary();\n }\n return this.macintoshDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"microsoft\", {\n /**\n * Gets glyphs for Microsoft or Symbol fonts (char - key, glyph - value).\n */\n get: function () {\n if (this.microsoftDictionary === null || this.microsoftDictionary === undefined) {\n this.microsoftDictionary = new Dictionary();\n }\n return this.microsoftDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"macintoshGlyphs\", {\n /**\n * Gets glyphs for Macintosh or Symbol fonts (glyph index - key, glyph - value).\n */\n get: function () {\n if (this.internalMacintoshGlyphs === null || this.internalMacintoshGlyphs === undefined) {\n this.internalMacintoshGlyphs = new Dictionary();\n }\n return this.internalMacintoshGlyphs;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"microsoftGlyphs\", {\n /**\n * Gets glyphs for Microsoft Unicode fonts (glyph index - key, glyph - value).\n */\n get: function () {\n if (this.internalMicrosoftGlyphs === null || this.internalMicrosoftGlyphs === undefined) {\n this.internalMicrosoftGlyphs = new Dictionary();\n }\n return this.internalMicrosoftGlyphs;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n TtfReader.prototype.initialize = function () {\n if (this.metrics === undefined) {\n this.metrics = new TtfMetrics();\n }\n this.readFontDictionary();\n var nameTable = this.readNameTable();\n var headTable = this.readHeadTable();\n this.initializeFontName(nameTable);\n this.metrics.macStyle = headTable.macStyle;\n };\n TtfReader.prototype.readFontDictionary = function () {\n this.offset = 0;\n var version = this.checkPreambula();\n //this.offset += 4;\n var numTables = this.readInt16(this.offset);\n var searchRange = this.readInt16(this.offset);\n var entrySelector = this.readInt16(this.offset);\n var rangeShift = this.readInt16(this.offset);\n if (this.tableDirectory === undefined) {\n this.tableDirectory = new Dictionary();\n }\n for (var i = 0; i < numTables; ++i) {\n var table = new TtfTableInfo();\n var tableKey = this.readString(this.int32Size);\n table.checksum = this.readInt32(this.offset);\n table.offset = this.readInt32(this.offset);\n table.length = this.readInt32(this.offset);\n this.tableDirectory.setValue(tableKey, table);\n }\n this.lowestPosition = this.offset;\n if (!this.isTtcFont) {\n this.fixOffsets();\n }\n };\n TtfReader.prototype.fixOffsets = function () {\n var minOffset = Number.MAX_VALUE;\n // Search for a smallest offset and compare it with the lowest position found.\n var tableKeys = this.tableDirectory.keys();\n for (var i = 0; i < tableKeys.length; i++) {\n var value = this.tableDirectory.getValue(tableKeys[i]);\n var offset = value.offset;\n if (minOffset > offset) {\n minOffset = offset;\n if (minOffset <= this.lowestPosition) {\n break;\n }\n }\n }\n var shift = minOffset - this.lowestPosition;\n if (shift !== 0) {\n var table = new Dictionary();\n for (var i = 0; i < tableKeys.length; i++) {\n var value = this.tableDirectory.getValue(tableKeys[i]);\n value.offset -= shift;\n table.setValue(tableKeys[i], value);\n }\n this.tableDirectory = table;\n }\n };\n TtfReader.prototype.checkPreambula = function () {\n var version = this.readInt32(this.offset);\n this.isMacTtf = (version === 0x74727565) ? true : false;\n if (version !== 0x10000 && version !== 0x74727565 && version !== 0x4f54544f) {\n this.isTtcFont = true;\n this.offset = 0;\n var fontTag = this.readString(4);\n if (fontTag !== 'ttcf') {\n throw new Error('Can not read TTF font data');\n }\n //skip 4\n this.offset += 4;\n var ttcIdentificationNumber = this.readInt32(this.offset);\n if (ttcIdentificationNumber < 0) {\n throw new Error('Can not read TTF font data');\n }\n this.offset = this.readInt32(this.offset);\n version = this.readInt32(this.offset);\n }\n return version;\n };\n TtfReader.prototype.readNameTable = function () {\n var tableInfo = this.getTable('name');\n this.offset = tableInfo.offset;\n var table = new TtfNameTable();\n table.formatSelector = this.readUInt16(this.offset);\n table.recordsCount = this.readUInt16(this.offset);\n table.offset = this.readUInt16(this.offset);\n table.nameRecords = [];\n var recordSize = 12;\n var position = this.offset;\n for (var i = 0; i < table.recordsCount; i++) {\n this.offset = position;\n var record = new TtfNameRecord();\n record.platformID = this.readUInt16(this.offset);\n record.encodingID = this.readUInt16(this.offset);\n record.languageID = this.readUInt16(this.offset);\n record.nameID = this.readUInt16(this.offset);\n record.length = this.readUInt16(this.offset);\n record.offset = this.readUInt16(this.offset);\n this.offset = tableInfo.offset + table.offset + record.offset;\n var unicode = (record.platformID === 0 || record.platformID === 3);\n record.name = this.readString(record.length, unicode);\n table.nameRecords[i] = record;\n position += recordSize;\n }\n return table;\n };\n TtfReader.prototype.readHeadTable = function () {\n var tableInfo = this.getTable('head');\n this.offset = tableInfo.offset;\n var table = new TtfHeadTable();\n table.version = this.readFixed(this.offset);\n table.fontRevision = this.readFixed(this.offset);\n table.checkSumAdjustment = this.readUInt32(this.offset);\n table.magicNumber = this.readUInt32(this.offset);\n table.flags = this.readUInt16(this.offset);\n table.unitsPerEm = this.readUInt16(this.offset);\n table.created = this.readInt64(this.offset);\n table.modified = this.readInt64(this.offset);\n table.xMin = this.readInt16(this.offset);\n table.yMin = this.readInt16(this.offset);\n table.xMax = this.readInt16(this.offset);\n table.yMax = this.readInt16(this.offset);\n table.macStyle = this.readUInt16(this.offset);\n table.lowestReadableSize = this.readUInt16(this.offset);\n table.fontDirectionHint = this.readInt16(this.offset);\n table.indexToLocalFormat = this.readInt16(this.offset);\n table.glyphDataFormat = this.readInt16(this.offset);\n return table;\n };\n TtfReader.prototype.readHorizontalHeaderTable = function () {\n var tableInfo = this.getTable('hhea');\n this.offset = tableInfo.offset;\n var table = new TtfHorizontalHeaderTable();\n table.version = this.readFixed(this.offset);\n table.ascender = this.readInt16(this.offset);\n table.descender = this.readInt16(this.offset);\n table.lineGap = this.readInt16(this.offset);\n table.advanceWidthMax = this.readUInt16(this.offset);\n table.minLeftSideBearing = this.readInt16(this.offset);\n table.minRightSideBearing = this.readInt16(this.offset);\n table.xMaxExtent = this.readInt16(this.offset);\n table.caretSlopeRise = this.readInt16(this.offset);\n table.caretSlopeRun = this.readInt16(this.offset);\n //skip 2 * 5\n this.offset += 10;\n table.metricDataFormat = this.readInt16(this.offset);\n table.numberOfHMetrics = this.readUInt16(this.offset);\n return table;\n };\n TtfReader.prototype.readOS2Table = function () {\n var tableInfo = this.getTable('OS/2');\n this.offset = tableInfo.offset;\n var table = new TtfOS2Table();\n table.version = this.readUInt16(this.offset);\n table.xAvgCharWidth = this.readInt16(this.offset);\n table.usWeightClass = this.readUInt16(this.offset);\n table.usWidthClass = this.readUInt16(this.offset);\n table.fsType = this.readInt16(this.offset);\n table.ySubscriptXSize = this.readInt16(this.offset);\n table.ySubscriptYSize = this.readInt16(this.offset);\n table.ySubscriptXOffset = this.readInt16(this.offset);\n table.ySubscriptYOffset = this.readInt16(this.offset);\n table.ySuperscriptXSize = this.readInt16(this.offset);\n table.ySuperscriptYSize = this.readInt16(this.offset);\n table.ySuperscriptXOffset = this.readInt16(this.offset);\n table.ySuperscriptYOffset = this.readInt16(this.offset);\n table.yStrikeoutSize = this.readInt16(this.offset);\n table.yStrikeoutPosition = this.readInt16(this.offset);\n table.sFamilyClass = this.readInt16(this.offset);\n table.panose = this.readBytes(10);\n table.ulUnicodeRange1 = this.readUInt32(this.offset);\n table.ulUnicodeRange2 = this.readUInt32(this.offset);\n table.ulUnicodeRange3 = this.readUInt32(this.offset);\n table.ulUnicodeRange4 = this.readUInt32(this.offset);\n table.vendorIdentifier = this.readBytes(4);\n table.fsSelection = this.readUInt16(this.offset);\n table.usFirstCharIndex = this.readUInt16(this.offset);\n table.usLastCharIndex = this.readUInt16(this.offset);\n table.sTypoAscender = this.readInt16(this.offset);\n table.sTypoDescender = this.readInt16(this.offset);\n table.sTypoLineGap = this.readInt16(this.offset);\n table.usWinAscent = this.readUInt16(this.offset);\n table.usWinDescent = this.readUInt16(this.offset);\n table.ulCodePageRange1 = this.readUInt32(this.offset);\n table.ulCodePageRange2 = this.readUInt32(this.offset);\n if (table.version > 1) {\n table.sxHeight = this.readInt16(this.offset);\n table.sCapHeight = this.readInt16(this.offset);\n table.usDefaultChar = this.readUInt16(this.offset);\n table.usBreakChar = this.readUInt16(this.offset);\n table.usMaxContext = this.readUInt16(this.offset);\n }\n else {\n table.sxHeight = 0;\n table.sCapHeight = 0;\n table.usDefaultChar = 0;\n table.usBreakChar = 0;\n table.usMaxContext = 0;\n }\n return table;\n };\n TtfReader.prototype.readPostTable = function () {\n var tableInfo = this.getTable('post');\n this.offset = tableInfo.offset;\n var table = new TtfPostTable();\n table.formatType = this.readFixed(this.offset);\n table.italicAngle = this.readFixed(this.offset);\n table.underlinePosition = this.readInt16(this.offset);\n table.underlineThickness = this.readInt16(this.offset);\n table.isFixedPitch = this.readUInt32(this.offset);\n table.minType42 = this.readUInt32(this.offset);\n table.maxType42 = this.readUInt32(this.offset);\n table.minType1 = this.readUInt32(this.offset);\n table.maxType1 = this.readUInt32(this.offset);\n return table;\n };\n /**\n * Reads Width of the glyphs.\n */\n TtfReader.prototype.readWidthTable = function (glyphCount, unitsPerEm) {\n var tableInfo = this.getTable('hmtx');\n this.offset = tableInfo.offset;\n var width = [];\n for (var i = 0; i < glyphCount; i++) {\n var glyph = new TtfLongHorMetric();\n glyph.advanceWidth = this.readUInt16(this.offset);\n glyph.lsb = this.readInt16(this.offset);\n var glyphWidth = glyph.advanceWidth * 1000 / unitsPerEm;\n width.push(Math.floor(glyphWidth));\n }\n return width;\n };\n /**\n * Reads the cmap table.\n */\n TtfReader.prototype.readCmapTable = function () {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset;\n var table = new TtfCmapTable();\n table.version = this.readUInt16(this.offset);\n table.tablesCount = this.readUInt16(this.offset);\n var position = this.offset;\n var subTables = [];\n for (var i = 0; i < table.tablesCount; i++) {\n this.offset = position;\n var subTable = new TtfCmapSubTable();\n subTable.platformID = this.readUInt16(this.offset);\n subTable.encodingID = this.readUInt16(this.offset);\n subTable.offset = this.readUInt32(this.offset);\n position = this.offset;\n this.readCmapSubTable(subTable);\n subTables[i] = subTable;\n }\n return subTables;\n };\n /**\n * Reads the cmap sub table.\n */\n TtfReader.prototype.readCmapSubTable = function (subTable) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var format = this.readUInt16(this.offset);\n var encoding = this.getCmapEncoding(subTable.platformID, subTable.encodingID);\n var platform = (encoding === TtfCmapEncoding.Macintosh) ? TtfPlatformID.Macintosh : TtfPlatformID.Microsoft;\n if (encoding !== TtfCmapEncoding.Unknown) {\n switch (format) {\n case TtfCmapFormat.Apple:\n this.readAppleCmapTable(subTable, encoding);\n break;\n case TtfCmapFormat.Microsoft:\n this.readMicrosoftCmapTable(subTable, encoding);\n break;\n case TtfCmapFormat.Trimmed:\n this.readTrimmedCmapTable(subTable, encoding);\n break;\n }\n }\n };\n /**\n * Reads Symbol cmap table.\n */\n TtfReader.prototype.readAppleCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var table = new TtfAppleCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n if (this.maxMacIndex === null || this.maxMacIndex === undefined) {\n this.maxMacIndex = 0;\n }\n for (var i = 0; i < 256; ++i) {\n var glyphInfo = new TtfGlyphInfo();\n glyphInfo.index = this.readByte(this.offset);\n glyphInfo.width = this.getWidth(glyphInfo.index);\n glyphInfo.charCode = i;\n this.macintosh.setValue(i, glyphInfo);\n this.addGlyph(glyphInfo, encoding);\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n this.maxMacIndex = Math.max(i, this.maxMacIndex);\n }\n };\n /**\n * Reads Symbol cmap table.\n */\n TtfReader.prototype.readMicrosoftCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var collection = (encoding === TtfCmapEncoding.Unicode) ? this.microsoft : this.macintosh;\n var table = new TtfMicrosoftCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n table.segCountX2 = this.readUInt16(this.offset);\n table.searchRange = this.readUInt16(this.offset);\n table.entrySelector = this.readUInt16(this.offset);\n table.rangeShift = this.readUInt16(this.offset);\n var segCount = table.segCountX2 / 2;\n table.endCount = this.readUshortArray(segCount);\n table.reservedPad = this.readUInt16(this.offset);\n table.startCount = this.readUshortArray(segCount);\n table.idDelta = this.readUshortArray(segCount);\n table.idRangeOffset = this.readUshortArray(segCount);\n var length = (table.length / 2 - 8) - (segCount * 4);\n table.glyphID = this.readUshortArray(length);\n // Process glyphIdArray array.\n var codeOffset = 0;\n var index = 0;\n for (var j = 0; j < segCount; j++) {\n for (var k = table.startCount[j]; k <= table.endCount[j] && k !== 65535; k++) {\n if (table.idRangeOffset[j] === 0) {\n codeOffset = (k + table.idDelta[j]) & 65535;\n }\n else {\n index = j + table.idRangeOffset[j] / 2 - segCount + k - table.startCount[j];\n if (index >= table.glyphID.length) {\n continue;\n }\n codeOffset = (table.glyphID[index] + table.idDelta[j]) & 65535;\n }\n var glyph = new TtfGlyphInfo();\n glyph.index = codeOffset;\n glyph.width = this.getWidth(glyph.index);\n var id = (encoding === TtfCmapEncoding.Symbol) ? ((k & 0xff00) === 0xf000 ? k & 0xff : k) : k;\n glyph.charCode = id;\n collection.setValue(id, glyph);\n this.addGlyph(glyph, encoding);\n }\n }\n };\n /**\n * Reads Trimed cmap table.\n */\n TtfReader.prototype.readTrimmedCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var table = new TtfTrimmedCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n table.firstCode = this.readUInt16(this.offset);\n table.entryCount = this.readUInt16(this.offset);\n for (var i = 0; i < table.entryCount; ++i) {\n var glyphInfo = new TtfGlyphInfo();\n glyphInfo.index = this.readUInt16(this.offset);\n glyphInfo.width = this.getWidth(glyphInfo.index);\n glyphInfo.charCode = i + table.firstCode;\n this.macintosh.setValue(i, glyphInfo);\n this.addGlyph(glyphInfo, encoding);\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n this.maxMacIndex = Math.max(i, this.maxMacIndex);\n }\n };\n TtfReader.prototype.initializeFontName = function (nameTable) {\n for (var i = 0; i < nameTable.recordsCount; i++) {\n var record = nameTable.nameRecords[i];\n if (record.nameID === 1) {\n //font family\n this.metrics.fontFamily = record.name;\n }\n else if (record.nameID === 6) {\n //post script name\n this.metrics.postScriptName = record.name;\n }\n /* tslint:disable */\n if (this.metrics.fontFamily !== null && this.metrics.fontFamily !== undefined && this.metrics.postScriptName !== null && this.metrics.postScriptName !== undefined) {\n break;\n }\n /* tslint:disable */\n }\n };\n TtfReader.prototype.getTable = function (name) {\n // if (name === null) {\n // throw new Error('Argument Null Exception : name');\n // }\n var table = new TtfTableInfo();\n var obj;\n if (this.tableDirectory.containsKey(name)) {\n obj = this.tableDirectory.getValue(name);\n }\n if (obj !== null && obj !== undefined) {\n table = obj;\n }\n return table;\n };\n /**\n * Returns width of the glyph.\n */\n TtfReader.prototype.getWidth = function (glyphCode) {\n glyphCode = (glyphCode < this.width.length) ? glyphCode : this.width.length - 1;\n return this.width[glyphCode];\n };\n /**\n * Gets CMAP encoding based on platform ID and encoding ID.\n */\n /* tslint:disable */\n TtfReader.prototype.getCmapEncoding = function (platformID, encodingID) {\n var format = TtfCmapEncoding.Unknown;\n if (platformID == TtfPlatformID.Microsoft && encodingID == TtfMicrosoftEncodingID.Undefined) {\n // When building a symbol font for Windows,\n // the platform ID should be 3 and the encoding ID should be 0.\n format = TtfCmapEncoding.Symbol;\n }\n else if (platformID == TtfPlatformID.Microsoft && encodingID == TtfMicrosoftEncodingID.Unicode) {\n // When building a Unicode font for Windows,\n // the platform ID should be 3 and the encoding ID should be 1.\n format = TtfCmapEncoding.Unicode;\n }\n else if (platformID == TtfPlatformID.Macintosh && encodingID == TtfMacintoshEncodingID.Roman) {\n // When building a font that will be used on the Macintosh,\n // the platform ID should be 1 and the encoding ID should be 0.\n format = TtfCmapEncoding.Macintosh;\n }\n return format;\n };\n /* tslint:enable */\n /**\n * Adds glyph to the collection.\n */\n TtfReader.prototype.addGlyph = function (glyph, encoding) {\n var collection = null;\n switch (encoding) {\n case TtfCmapEncoding.Unicode:\n collection = this.microsoftGlyphs;\n break;\n case TtfCmapEncoding.Macintosh:\n case TtfCmapEncoding.Symbol:\n collection = this.macintoshGlyphs;\n break;\n }\n collection.setValue(glyph.index, glyph);\n };\n /**\n * Initializes metrics.\n */\n /* tslint:disable */\n TtfReader.prototype.initializeMetrics = function (nameTable, headTable, horizontalHeadTable, os2Table, postTable, cmapTables) {\n /* tslint:enable */\n // if (cmapTables === null) {\n // throw new Error('ArgumentNullException : cmapTables');\n // }\n this.initializeFontName(nameTable);\n // Get font encoding.\n var bSymbol = false;\n for (var i = 0; i < cmapTables.length; i++) {\n var subTable = cmapTables[i];\n var encoding = this.getCmapEncoding(subTable.platformID, subTable.encodingID);\n if (encoding === TtfCmapEncoding.Symbol) {\n bSymbol = true;\n break;\n }\n }\n this.metrics.isSymbol = bSymbol;\n this.metrics.macStyle = headTable.macStyle;\n this.metrics.isFixedPitch = (postTable.isFixedPitch !== 0);\n this.metrics.italicAngle = postTable.italicAngle;\n var factor = 1000 / headTable.unitsPerEm;\n this.metrics.winAscent = os2Table.sTypoAscender * factor;\n this.metrics.macAscent = horizontalHeadTable.ascender * factor;\n //m_metrics.MacAscent = os2Table.UsWinAscent * factor;\n // NOTE: This is stange workaround. The value is good if os2Table.SCapHeight != 0, otherwise it should be properly computed.\n this.metrics.capHeight = (os2Table.sCapHeight !== 0) ? os2Table.sCapHeight : 0.7 * headTable.unitsPerEm * factor;\n this.metrics.winDescent = os2Table.sTypoDescender * factor;\n this.metrics.macDescent = horizontalHeadTable.descender * factor;\n //m_metrics.MacDescent = -os2Table.UsWinDescent * factor;\n this.metrics.leading = (os2Table.sTypoAscender - os2Table.sTypoDescender + os2Table.sTypoLineGap) * factor;\n this.metrics.lineGap = Math.ceil(horizontalHeadTable.lineGap * factor);\n var left = headTable.xMin * factor;\n var top = Math.ceil(this.metrics.macAscent + this.metrics.lineGap);\n var right = headTable.xMax * factor;\n var bottom = this.metrics.macDescent;\n this.metrics.fontBox = new Rectangle(left, top, right, bottom);\n // NOTE: Strange!\n this.metrics.stemV = 80;\n this.metrics.widthTable = this.updateWidth();\n this.metrics.contains = this.tableDirectory.containsKey('CFF');\n this.metrics.subScriptSizeFactor = headTable.unitsPerEm / os2Table.ySubscriptYSize;\n this.metrics.superscriptSizeFactor = headTable.unitsPerEm / os2Table.ySuperscriptYSize;\n };\n /**\n * Updates chars structure which is used in the case of ansi encoding (256 bytes).\n */\n TtfReader.prototype.updateWidth = function () {\n var count = 256;\n var bytes = [];\n if (this.metrics.isSymbol) {\n for (var i = 0; i < count; i++) {\n var glyphInfo = this.getGlyph(String.fromCharCode(i));\n bytes[i] = (glyphInfo.empty) ? 0 : glyphInfo.width;\n }\n }\n else {\n var byteToProcess = [];\n var unknown = '?';\n var space = String.fromCharCode(32);\n for (var i = 0; i < count; i++) {\n byteToProcess[0] = i;\n var text = this.getString(byteToProcess, 0, byteToProcess.length);\n var ch = (text.length > 0) ? text[0] : unknown;\n var glyphInfo = this.getGlyph(ch);\n if (!glyphInfo.empty) {\n bytes[i] = glyphInfo.width;\n }\n else {\n glyphInfo = this.getGlyph(space);\n bytes[i] = (glyphInfo.empty) ? 0 : glyphInfo.width;\n }\n }\n }\n return bytes;\n };\n /**\n * Returns default glyph.\n */\n TtfReader.prototype.getDefaultGlyph = function () {\n var glyph = this.getGlyph(StringTokenizer.whiteSpace);\n return glyph;\n };\n /**\n * Reads unicode string from byte array.\n */\n TtfReader.prototype.getString = function (byteToProcess, start, length) {\n var result = '';\n for (var index = 0; index < length; index++) {\n result += String.fromCharCode(byteToProcess[index + start]);\n }\n return result;\n };\n /**\n * Reads loca table.\n */\n TtfReader.prototype.readLocaTable = function (bShort) {\n var tableInfo = this.getTable('loca');\n this.offset = tableInfo.offset;\n var table = new TtfLocaTable();\n var buffer = null;\n if (bShort) {\n var len = tableInfo.length / 2;\n buffer = [];\n for (var i = 0; i < len; i++) {\n buffer[i] = this.readUInt16(this.offset) * 2;\n }\n }\n else {\n var len = tableInfo.length / 4;\n buffer = [];\n for (var i = 0; i < len; i++) {\n buffer[i] = this.readUInt32(this.offset);\n }\n }\n table.offsets = buffer;\n return table;\n };\n /**\n * Updates hash table of used glyphs.\n */\n TtfReader.prototype.updateGlyphChars = function (glyphChars, locaTable) {\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n // Add zero key.\n if (!glyphChars.containsKey(0)) {\n glyphChars.setValue(0, 0);\n }\n var clone = new Dictionary();\n var glyphCharKeys = glyphChars.keys();\n for (var i = 0; i < glyphCharKeys.length; i++) {\n clone.setValue(glyphCharKeys[i], glyphChars.getValue(glyphCharKeys[i]));\n }\n for (var i = 0; i < glyphCharKeys.length; i++) {\n var nextKey = glyphCharKeys[i];\n this.processCompositeGlyph(glyphChars, nextKey, locaTable);\n }\n };\n /**\n * Checks if glyph is composite or not.\n */\n TtfReader.prototype.processCompositeGlyph = function (glyphChars, glyph, locaTable) {\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n // Is in range.\n if (glyph < locaTable.offsets.length - 1) {\n var glyphOffset = locaTable.offsets[glyph];\n if (glyphOffset !== locaTable.offsets[glyph + 1]) {\n var tableInfo = this.getTable('glyf');\n this.offset = tableInfo.offset + glyphOffset;\n var glyphHeader = new TtfGlyphHeader();\n glyphHeader.numberOfContours = this.readInt16(this.offset);\n glyphHeader.xMin = this.readInt16(this.offset);\n glyphHeader.yMin = this.readInt16(this.offset);\n glyphHeader.xMax = this.readInt16(this.offset);\n glyphHeader.yMax = this.readInt16(this.offset);\n // Glyph is composite.\n if (glyphHeader.numberOfContours < 0) {\n var skipBytes = 0;\n var entry = true;\n while (entry) {\n var flags = this.readUInt16(this.offset);\n var glyphIndex = this.readUInt16(this.offset);\n if (!glyphChars.containsKey(glyphIndex)) {\n glyphChars.setValue(glyphIndex, 0);\n }\n if ((flags & TtfCompositeGlyphFlags.MoreComponents) === 0) {\n break;\n }\n skipBytes = ((flags & TtfCompositeGlyphFlags.Arg1And2AreWords) !== 0) ? 4 : 2;\n if ((flags & TtfCompositeGlyphFlags.WeHaveScale) !== 0) {\n skipBytes += 2;\n }\n else if ((flags & TtfCompositeGlyphFlags.WeHaveAnXyScale) !== 0) {\n skipBytes += 4;\n }\n else if ((flags & TtfCompositeGlyphFlags.WeHaveTwoByTwo) !== 0) {\n skipBytes += 2 * 4;\n }\n this.offset += skipBytes;\n }\n }\n }\n }\n };\n /**\n * Creates new glyph tables based on chars that are used for output.\n */\n /* tslint:disable */\n TtfReader.prototype.generateGlyphTable = function (glyphChars, locaTable, newLocaTable, newGlyphTable) {\n /* tslint:enable */\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n newLocaTable = [];\n // Sorting used glyphs keys.\n var activeGlyphs = glyphChars.keys();\n activeGlyphs.sort(function (a, b) { return a - b; });\n var glyphSize = 0;\n for (var i = 0; i < activeGlyphs.length; i++) {\n var glyphIndex = activeGlyphs[i];\n if (locaTable.offsets.length > 0) {\n glyphSize += locaTable.offsets[glyphIndex + 1] - locaTable.offsets[glyphIndex];\n }\n }\n var glyphSizeAligned = this.align(glyphSize);\n newGlyphTable = [];\n for (var i = 0; i < glyphSizeAligned; i++) {\n newGlyphTable.push(0);\n }\n var nextGlyphOffset = 0;\n var nextGlyphIndex = 0;\n var table = this.getTable('glyf');\n // Creating NewLocaTable - that would hold offsets for filtered glyphs.\n for (var i = 0; i < locaTable.offsets.length; i++) {\n newLocaTable.push(nextGlyphOffset);\n if (nextGlyphIndex < activeGlyphs.length && activeGlyphs[nextGlyphIndex] === i) {\n ++nextGlyphIndex;\n newLocaTable[i] = nextGlyphOffset;\n var oldGlyphOffset = locaTable.offsets[i];\n var oldNextGlyphOffset = locaTable.offsets[i + 1] - oldGlyphOffset;\n if (oldNextGlyphOffset > 0) {\n this.offset = table.offset + oldGlyphOffset;\n var result = this.read(newGlyphTable, nextGlyphOffset, oldNextGlyphOffset);\n newGlyphTable = result.buffer;\n nextGlyphOffset += oldNextGlyphOffset;\n }\n }\n }\n return { glyphTableSize: glyphSize, newLocaTable: newLocaTable, newGlyphTable: newGlyphTable };\n };\n /**\n * Updates new Loca table.\n */\n /* tslint:disable */\n TtfReader.prototype.updateLocaTable = function (newLocaTable, bLocaIsShort, newLocaTableOut) {\n /* tslint:enable */\n if (newLocaTable === null) {\n throw new Error('Argument Null Exception : newLocaTable');\n }\n var size = (bLocaIsShort) ? newLocaTable.length * 2 : newLocaTable.length * 4;\n var count = this.align(size);\n //BigEndianWiter\n var writer = new BigEndianWriter(count);\n for (var i = 0; i < newLocaTable.length; i++) {\n var value = newLocaTable[i];\n if (bLocaIsShort) {\n value /= 2;\n writer.writeShort(value);\n }\n else {\n writer.writeInt(value);\n }\n }\n return { newLocaUpdated: writer.data, newLocaSize: size };\n };\n /**\n * Aligns number to be divisible on 4.\n */\n TtfReader.prototype.align = function (value) {\n return (value + 3) & (~3);\n };\n /**\n * Returns font program data.\n */\n /* tslint:disable */\n TtfReader.prototype.getFontProgram = function (newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize) {\n /* tslint:enable */\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n var result = this.getFontProgramLength(newLocaTableOut, newGlyphTable, 0);\n var fontProgramLength = result.fontProgramLength;\n var numTables = result.numTables;\n var writer = new BigEndianWriter(fontProgramLength);\n writer.writeInt(0x10000);\n writer.writeShort(numTables);\n var entrySelector = this.entrySelectors[numTables];\n writer.writeShort((1 << (entrySelector & 31)) * 16);\n writer.writeShort(entrySelector);\n writer.writeShort((numTables - (1 << (entrySelector & 31))) * 16);\n // Writing to destination buffer - checksums && sizes of used tables.\n this.writeCheckSums(writer, numTables, newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize);\n // // Writing to destination buffer - used glyphs.\n this.writeGlyphs(writer, newLocaTableOut, newGlyphTable);\n return writer.data;\n };\n /* tslint:disable */\n TtfReader.prototype.getFontProgramLength = function (newLocaTableOut, newGlyphTable, numTables) {\n /* tslint:enable */\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n // glyf and loca are used by default;\n numTables = 2;\n var tableNames = this.tableNames;\n var fontProgramLength = 0;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n if (tableName !== 'glyf' && tableName !== 'loca') {\n var table = this.getTable(tableName);\n if (!table.empty) {\n ++numTables;\n fontProgramLength += this.align(table.length);\n }\n }\n }\n fontProgramLength += newLocaTableOut.length;\n fontProgramLength += newGlyphTable.length;\n var usedTablesSize = numTables * 16 + (3 * 4);\n fontProgramLength += usedTablesSize;\n return { fontProgramLength: fontProgramLength, numTables: numTables };\n };\n /**\n * Writing to destination buffer - checksums and sizes of used tables.\n */\n /* tslint:disable */\n TtfReader.prototype.writeCheckSums = function (writer, numTables, newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize) {\n /* tslint:enable */\n if (writer === null) {\n throw new Error('Argument Null Exception : writer');\n }\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n var usedTablesSize = numTables * 16 + (3 * 4);\n var nextTableSize = 0;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n var tableInfo = this.getTable(tableName);\n if (tableInfo.empty) {\n continue;\n }\n writer.writeString(tableName);\n if (tableName === 'glyf') {\n var checksum = this.calculateCheckSum(newGlyphTable);\n writer.writeInt(checksum);\n nextTableSize = glyphTableSize;\n }\n else if (tableName === 'loca') {\n var checksum = this.calculateCheckSum(newLocaTableOut);\n writer.writeInt(checksum);\n nextTableSize = locaTableSize;\n }\n else {\n writer.writeInt(tableInfo.checksum);\n nextTableSize = tableInfo.length;\n }\n writer.writeUInt(usedTablesSize);\n writer.writeUInt(nextTableSize);\n usedTablesSize += this.align(nextTableSize);\n }\n };\n /**\n * Gets checksum from source buffer.\n */\n TtfReader.prototype.calculateCheckSum = function (bytes) {\n if (bytes === null) {\n throw new Error('Argument Null Exception : bytes');\n }\n var pos = 0;\n var byte1 = 0;\n var byte2 = 0;\n var byte3 = 0;\n var byte4 = 0;\n for (var i = 0; i < (bytes.length + 1) / 4; i++) {\n byte4 += (bytes[pos++] & 255);\n byte3 += (bytes[pos++] & 255);\n byte2 += (bytes[pos++] & 255);\n byte1 += (bytes[pos++] & 255);\n }\n var result = byte1;\n result += (byte2 << 8);\n result += (byte3 << 16);\n result += (byte4 << 24);\n return result;\n };\n /**\n * Writing to destination buffer - used glyphs.\n */\n TtfReader.prototype.writeGlyphs = function (writer, newLocaTable, newGlyphTable) {\n if (writer === null) {\n throw new Error('Argument Null Exception : writer');\n }\n if (newLocaTable === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n var tableInfo = this.getTable(tableName);\n if (tableInfo.empty) {\n continue;\n }\n if (tableName === 'glyf') {\n writer.writeBytes(newGlyphTable);\n }\n else if (tableName === 'loca') {\n writer.writeBytes(newLocaTable);\n }\n else {\n var count = this.align(tableInfo.length);\n var buff = [];\n for (var i_1 = 0; i_1 < count; i_1++) {\n buff.push(0);\n }\n this.offset = tableInfo.offset;\n var result = this.read(buff, 0, tableInfo.length);\n writer.writeBytes(result.buffer);\n }\n }\n };\n //public methods\n /**\n * Sets position value of font data.\n */\n TtfReader.prototype.setOffset = function (offset) {\n this.offset = offset;\n };\n /**\n * Creates font Internals\n * @private\n */\n TtfReader.prototype.createInternals = function () {\n this.metrics = new TtfMetrics();\n var nameTable = this.readNameTable();\n var headTable = this.readHeadTable();\n this.bIsLocaShort = (headTable.indexToLocalFormat === 0);\n var horizontalHeadTable = this.readHorizontalHeaderTable();\n var os2Table = this.readOS2Table();\n var postTable = this.readPostTable();\n this.width = this.readWidthTable(horizontalHeadTable.numberOfHMetrics, headTable.unitsPerEm);\n var subTables = this.readCmapTable();\n this.initializeMetrics(nameTable, headTable, horizontalHeadTable, os2Table, postTable, subTables);\n };\n TtfReader.prototype.getGlyph = function (charCode) {\n if (typeof charCode === 'number') {\n var obj1 = null;\n if (!this.metrics.isSymbol && this.microsoftGlyphs != null) {\n if (this.microsoftGlyphs.containsKey(charCode)) {\n obj1 = this.microsoftGlyphs.getValue(charCode);\n }\n }\n else if (this.metrics.isSymbol && this.macintoshGlyphs != null) {\n if (this.macintoshGlyphs.containsKey(charCode)) {\n obj1 = this.macintoshGlyphs.getValue(charCode);\n }\n }\n var glyph = (obj1 != null) ? obj1 : this.getDefaultGlyph();\n return glyph;\n }\n else {\n var obj = null;\n var code = charCode.charCodeAt(0);\n if (!this.metrics.isSymbol && this.microsoft !== null) {\n if (this.microsoft.containsKey(code)) {\n obj = this.microsoft.getValue(code);\n if (code !== StringTokenizer.whiteSpace.charCodeAt(0)) {\n this.isFontPresent = true;\n }\n }\n else if (code !== StringTokenizer.whiteSpace.charCodeAt(0)) {\n this.isFontPresent = false;\n }\n }\n else if (this.metrics.isSymbol && this.macintosh !== null || this.isMacTTF) {\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n if (this.maxMacIndex !== 0) {\n code %= this.maxMacIndex + 1;\n }\n else {\n code = ((code & 0xff00) === 0xf000 ? code & 0xff : code);\n }\n if (this.macintosh.containsKey(code)) {\n obj = this.macintosh.getValue(code);\n this.isFontPresent = true;\n }\n }\n // Fix for StackOverFlow exception in XPS to PDF converter\n if (charCode === StringTokenizer.whiteSpace && obj === null) {\n obj = new TtfGlyphInfo();\n }\n var glyph = (obj !== null) ? obj : this.getDefaultGlyph();\n return glyph;\n }\n };\n /**\n * Gets hash table with chars indexed by glyph index.\n */\n TtfReader.prototype.getGlyphChars = function (chars) {\n if (chars === null || chars === undefined) {\n throw new Error('Argument Null Exception : chars');\n }\n var dictionary = new Dictionary();\n var charKeys = chars.keys();\n for (var i = 0; i < charKeys.length; i++) {\n var ch = charKeys[i];\n var glyph = this.getGlyph(ch);\n if (!glyph.empty) {\n dictionary.setValue(glyph.index, ch.charCodeAt(0));\n }\n }\n return dictionary;\n };\n /**\n * Gets all glyphs.\n */\n TtfReader.prototype.getAllGlyphs = function () {\n var allGlyphInfo = [];\n var info = new TtfGlyphInfo();\n var index = 0;\n for (var i = 0; i < this.width.length; i++) {\n var width = this.width[i];\n info.index = index;\n info.width = width;\n allGlyphInfo.push(info);\n index++;\n }\n return allGlyphInfo;\n };\n /**\n * Reads a font's program.\n * @private\n */\n TtfReader.prototype.readFontProgram = function (chars) {\n var glyphChars = this.getGlyphChars(chars);\n var locaTable = this.readLocaTable(this.bIsLocaShort);\n if (glyphChars.size() < chars.size()) {\n this.missedGlyphs = chars.size() - glyphChars.size();\n }\n this.updateGlyphChars(glyphChars, locaTable);\n /* tslint:disable */\n var result1 = this.generateGlyphTable(glyphChars, locaTable, null, null);\n /* tslint:enable */\n var glyphTableSize = result1.glyphTableSize;\n var newLocaTable = result1.newLocaTable;\n var newGlyphTable = result1.newGlyphTable;\n var result2 = this.updateLocaTable(newLocaTable, this.bIsLocaShort, null);\n var newLocaSize = result2.newLocaSize;\n var newLocaUpdated = result2.newLocaUpdated;\n var fontProgram = this.getFontProgram(newLocaUpdated, newGlyphTable, glyphTableSize, newLocaSize);\n return fontProgram;\n };\n /**\n * Reconverts string to be in proper format saved into PDF file.\n */\n TtfReader.prototype.convertString = function (text) {\n if (text === null) {\n throw new Error('Argument Null Exception : text');\n }\n var glyph = '';\n var i = 0;\n for (var k = 0; k < text.length; k++) {\n var ch = text[k];\n var glyphInfo = this.getGlyph(ch);\n if (!glyphInfo.empty) {\n glyph += String.fromCharCode(glyphInfo.index);\n i++;\n }\n }\n return glyph;\n };\n /**\n * Gets char width.\n */\n TtfReader.prototype.getCharWidth = function (code) {\n var glyphInfo = this.getGlyph(code);\n glyphInfo = (!glyphInfo.empty) ? glyphInfo : this.getDefaultGlyph();\n var codeWidth = (!glyphInfo.empty) ? glyphInfo.width : 0;\n return codeWidth;\n };\n TtfReader.prototype.readString = function (length, isUnicode) {\n if (isUnicode === undefined) {\n return this.readString(length, false);\n }\n else {\n //let buffer : number[] = this.readBytes(length);\n var result = '';\n if (isUnicode) {\n for (var i = 0; i < length; i++) {\n if (i % 2 !== 0) {\n result += String.fromCharCode(this.fontData[this.offset]);\n }\n this.offset += 1;\n }\n }\n else {\n for (var i = 0; i < length; i++) {\n result += String.fromCharCode(this.fontData[this.offset]);\n this.offset += 1;\n }\n }\n return result;\n }\n };\n TtfReader.prototype.readFixed = function (offset) {\n var integer = this.readInt16(offset);\n var sFraction = this.readInt16(offset + 2);\n var fraction = sFraction / 16384;\n return integer + fraction;\n };\n TtfReader.prototype.readInt32 = function (offset) {\n var i1 = this.fontData[offset + 3];\n var i2 = this.fontData[offset + 2];\n var i3 = this.fontData[offset + 1];\n var i4 = this.fontData[offset];\n this.offset += 4;\n return i1 + (i2 << 8) + (i3 << 16) + (i4 << 24);\n };\n TtfReader.prototype.readUInt32 = function (offset) {\n var i1 = this.fontData[offset + 3];\n var i2 = this.fontData[offset + 2];\n var i3 = this.fontData[offset + 1];\n var i4 = this.fontData[offset];\n this.offset += 4;\n return (i1 | i2 << 8 | i3 << 16 | i4 << 24);\n };\n // private readInt16(offset : number) : number {\n // let result : number = (this.fontData[offset] << 8) + this.fontData[offset + 1];\n // this.offset += 2;\n // return result;\n // }\n TtfReader.prototype.readInt16 = function (offset) {\n var result = (this.fontData[offset] << 8) + this.fontData[offset + 1];\n result = result & (1 << 15) ? result - 0x10000 : result;\n this.offset += 2;\n return result;\n };\n TtfReader.prototype.readInt64 = function (offset) {\n var low = this.readInt32(offset + 4);\n var n = this.readInt32(offset) * 4294967296.0 + low;\n if (low < 0) {\n n += 4294967296;\n }\n return n;\n };\n TtfReader.prototype.readUInt16 = function (offset) {\n var result = (this.fontData[offset] << 8) | this.fontData[offset + 1];\n this.offset += 2;\n return result;\n };\n /**\n * Reads ushort array.\n */\n TtfReader.prototype.readUshortArray = function (length) {\n var buffer = [];\n for (var i = 0; i < length; i++) {\n buffer[i] = this.readUInt16(this.offset);\n }\n return buffer;\n };\n TtfReader.prototype.readBytes = function (length) {\n var result = [];\n for (var i = 0; i < length; i++) {\n result.push(this.fontData[this.offset]);\n this.offset += 1;\n }\n return result;\n };\n TtfReader.prototype.readByte = function (offset) {\n var result = this.fontData[offset];\n this.offset += 1;\n return result;\n };\n /**\n * Reads bytes to array in BigEndian order.\n * @private\n */\n TtfReader.prototype.read = function (buffer, index, count) {\n if (buffer === null) {\n throw new Error('Argument Null Exception : buffer');\n }\n var written = 0;\n var read = 0;\n do {\n for (var i = 0; (i < count - written) && (this.offset + i < this.fontData.length); i++) {\n buffer[index + i] = this.fontData[this.offset + i];\n }\n read = count - written;\n this.offset += read;\n written += read;\n } while (written < count);\n return { buffer: buffer, written: written };\n };\n return TtfReader;\n}());\nexport { TtfReader };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfFont } from './pdf-font';\nimport { PdfSubSuperScript } from './enum';\nimport { PdfArray } from './../../primitives/pdf-array';\n/**\n * `Metrics` of the font.\n * @private\n */\nvar PdfFontMetrics = /** @class */ (function () {\n function PdfFontMetrics() {\n /**\n * `Line gap`.\n * @private\n */\n this.lineGap = 0;\n }\n // Public methods\n /**\n * Returns `ascent` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getAscent = function (format) {\n var returnValue = this.ascent * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `descent` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getDescent = function (format) {\n var returnValue = this.descent * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `Line gap` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getLineGap = function (format) {\n var returnValue = this.lineGap * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `height` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getHeight = function (format) {\n var height;\n var clearTypeFonts = ['cambria', 'candara', 'constantia', 'corbel', 'cariadings'];\n var clearTypeFontCollection = [];\n for (var index = 0; index < clearTypeFonts.length; index++) {\n var font = clearTypeFonts[index];\n clearTypeFontCollection.push(font);\n }\n if (this.getDescent(format) < 0) {\n // if ((clearTypeFontCollection.indexOf(this.name.toLowerCase()) !== -1) && !this.isUnicodeFont) {\n // height = (this.GetAscent(format) - this.GetDescent(format) - this.GetLineGap(format));\n // } else {\n height = (this.getAscent(format) - this.getDescent(format) + this.getLineGap(format));\n // }\n }\n else {\n height = (this.getAscent(format) + this.getDescent(format) + this.getLineGap(format));\n }\n return height;\n };\n /**\n * Calculates `size` of the font depending on the subscript/superscript value.\n * @private\n */\n PdfFontMetrics.prototype.getSize = function (format) {\n var size = this.size;\n if (format != null) {\n switch (format.subSuperScript) {\n case PdfSubSuperScript.SubScript:\n size /= this.subScriptSizeFactor;\n break;\n case PdfSubSuperScript.SuperScript:\n size /= this.superscriptSizeFactor;\n break;\n }\n }\n return size;\n };\n /**\n * `Clones` the metrics.\n * @private\n */\n PdfFontMetrics.prototype.clone = function () {\n var metrics = this;\n metrics.widthTable = WidthTable.clone();\n return metrics;\n };\n Object.defineProperty(PdfFontMetrics.prototype, \"widthTable\", {\n // Properies\n /**\n * Gets or sets the `width table`.\n * @private\n */\n get: function () {\n return this.internalWidthTable;\n },\n set: function (value) {\n this.internalWidthTable = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfFontMetrics;\n}());\nexport { PdfFontMetrics };\nvar WidthTable = /** @class */ (function () {\n function WidthTable() {\n }\n /**\n * Static `clones` this instance of the WidthTable class.\n * @private\n */\n WidthTable.clone = function () {\n return null;\n };\n return WidthTable;\n}());\nexport { WidthTable };\nvar StandardWidthTable = /** @class */ (function (_super) {\n __extends(StandardWidthTable, _super);\n // Constructors\n /**\n * Initializes a new instance of the `StandardWidthTable` class.\n * @private\n */\n function StandardWidthTable(widths) {\n var _this = _super.call(this) || this;\n if (widths == null) {\n throw new Error('ArgumentNullException:widths');\n }\n _this.widths = widths;\n return _this;\n }\n //Properties\n /**\n * Gets the `32 bit number` at the specified index.\n * @private\n */\n StandardWidthTable.prototype.items = function (index) {\n if (index < 0 || index >= this.widths.length) {\n throw new Error('ArgumentOutOfRangeException:index, The character is not supported by the font.');\n }\n var result = this.widths[index];\n return result;\n };\n Object.defineProperty(StandardWidthTable.prototype, \"length\", {\n /**\n * Gets the `length` of the internal array.\n * @private\n */\n get: function () {\n return this.widths.length;\n },\n enumerable: true,\n configurable: true\n });\n //Overrides\n /**\n * `Clones` this instance of the WidthTable class.\n * @private\n */\n StandardWidthTable.prototype.clone = function () {\n var swt = this;\n swt.widths = this.widths;\n return swt;\n };\n /**\n * Converts width table to a `PDF array`.\n * @private\n */\n StandardWidthTable.prototype.toArray = function () {\n var arr = new PdfArray(this.widths);\n return arr;\n };\n return StandardWidthTable;\n}(WidthTable));\nexport { StandardWidthTable };\n","/**\n * TrueTypeFont.ts class for EJ2-PDF\n */\nimport { ByteArray } from './../../graphics/images/index';\nimport { TtfReader } from './ttf-reader';\nimport { PdfDictionary, SaveDescendantFontEventHandler, SaveFontDictionaryEventHandler } from './../../primitives/pdf-dictionary';\nimport { SaveFontProgramEventHandler, SaveCmapEventHandler } from './../../primitives/pdf-stream';\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfName } from './../../primitives/pdf-name';\nimport { PdfNumber } from './../../primitives/pdf-number';\nimport { PdfString } from './../../primitives/pdf-string';\nimport { PdfReferenceHolder } from './../../primitives/pdf-reference';\nimport { PdfFontMetrics } from './pdf-font-metrics';\nimport { StandardWidthTable } from './pdf-font-metrics';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { Dictionary } from './../../collections/dictionary';\nimport { FontDescriptorFlags } from './enum';\nimport { RectangleF } from './../../drawing/pdf-drawing';\nimport { Operators } from './../../input-output/pdf-operators';\nvar UnicodeTrueTypeFont = /** @class */ (function () {\n /* tslint:enable */\n //Constructors\n /**\n * Initializes a new instance of the `PdfTrueTypeFont` class.\n * @private\n */\n function UnicodeTrueTypeFont(base64String, size) {\n // Fields\n this.nameString = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Indicates whether the font program is compressed or not.\n * @private\n */\n this.isCompress = false;\n /**\n * Indicates whether the font is embedded or not.\n */\n this.isEmbedFont = false;\n /**\n * Cmap table's start prefix.\n */\n /* tslint:disable */\n this.cmapPrefix = '/CIDInit /ProcSet findresource begin\\n12 dict begin\\nbegincmap' + Operators.newLine + '/CIDSystemInfo << /Registry (Adobe)/Ordering (UCS)/Supplement 0>> def\\n/CMapName ' + '/Adobe-Identity-UCS def\\n/CMapType 2 def\\n1 begincodespacerange' + Operators.newLine;\n /* tslint:enable */\n /**\n * Cmap table's start suffix.\n */\n this.cmapEndCodespaceRange = 'endcodespacerange' + Operators.newLine;\n /**\n * Cmap's begin range marker.\n */\n this.cmapBeginRange = 'beginbfrange' + Operators.newLine;\n /**\n * Cmap's end range marker.\n */\n this.cmapEndRange = 'endbfrange' + Operators.newLine;\n /**\n * Cmap table's end\n */\n /* tslint:disable */\n this.cmapSuffix = 'endbfrange\\nendcmap\\nCMapName currentdict ' + '/CMap defineresource pop\\nend end' + Operators.newLine;\n if (base64String === null || base64String === undefined) {\n throw new Error('ArgumentNullException:base64String');\n }\n this.fontSize = size;\n this.fontString = base64String;\n this.Initialize();\n }\n //Implementation\n /**\n * Returns width of the char symbol.\n */\n UnicodeTrueTypeFont.prototype.getCharWidth = function (charCode) {\n var codeWidth = this.ttfReader.getCharWidth(charCode);\n return codeWidth;\n };\n /**\n * Returns width of the text line.\n */\n UnicodeTrueTypeFont.prototype.getLineWidth = function (line) {\n // if (line == null) {\n // throw new Error('ArgumentNullException : line');\n // }\n var width = 0;\n for (var i = 0, len = line.length; i < len; i++) {\n var ch = line[i];\n var charWidth = this.getCharWidth(ch);\n width += charWidth;\n }\n return width;\n };\n /**\n * Initializes a new instance of the `PdfTrueTypeFont` class.\n * @private\n */\n UnicodeTrueTypeFont.prototype.Initialize = function () {\n var byteArray = new ByteArray(this.fontString.length);\n byteArray.writeFromBase64String(this.fontString);\n this.fontData = byteArray.internalBuffer;\n this.ttfReader = new TtfReader(this.fontData);\n this.ttfMetrics = this.ttfReader.metrics;\n };\n UnicodeTrueTypeFont.prototype.createInternals = function () {\n this.fontDictionary = new PdfDictionary();\n this.fontProgram = new PdfStream();\n this.cmap = new PdfStream();\n this.descendantFont = new PdfDictionary();\n this.metrics = new PdfFontMetrics();\n this.ttfReader.createInternals();\n this.ttfMetrics = this.ttfReader.metrics;\n this.initializeMetrics();\n // Create all the dictionaries of the font.\n this.subsetName = this.getFontName();\n this.createDescendantFont();\n this.createCmap();\n this.createFontDictionary();\n this.createFontProgram();\n };\n UnicodeTrueTypeFont.prototype.getInternals = function () {\n return this.fontDictionary;\n };\n /**\n * Initializes metrics.\n */\n UnicodeTrueTypeFont.prototype.initializeMetrics = function () {\n var ttfMetrics = this.ttfReader.metrics;\n this.metrics.ascent = ttfMetrics.macAscent;\n this.metrics.descent = ttfMetrics.macDescent;\n this.metrics.height = ttfMetrics.macAscent - ttfMetrics.macDescent + ttfMetrics.lineGap;\n this.metrics.name = ttfMetrics.fontFamily;\n this.metrics.postScriptName = ttfMetrics.postScriptName;\n this.metrics.size = this.fontSize;\n this.metrics.widthTable = new StandardWidthTable(ttfMetrics.widthTable);\n this.metrics.lineGap = ttfMetrics.lineGap;\n this.metrics.subScriptSizeFactor = ttfMetrics.subScriptSizeFactor;\n this.metrics.superscriptSizeFactor = ttfMetrics.superscriptSizeFactor;\n this.metrics.isBold = ttfMetrics.isBold;\n };\n /**\n * Gets random string.\n */\n UnicodeTrueTypeFont.prototype.getFontName = function () {\n var builder = '';\n var name;\n // if (this.isEmbed === false) {\n for (var i = 0; i < 6; i++) {\n var index = Math.floor(Math.random() * (25 - 0 + 1)) + 0;\n builder += this.nameString[index];\n }\n builder += '+';\n // }\n builder += this.ttfReader.metrics.postScriptName;\n name = builder.toString();\n // if (name === '') {\n // name = this.ttfReader.metrics.fontFamily;\n // }\n name = this.formatName(name);\n return name;\n };\n /**\n * Generates name of the font.\n */\n UnicodeTrueTypeFont.prototype.formatName = function (fontName) {\n // if (fontName === null) {\n // throw new Error('ArgumentNullException : fontName');\n // }\n // if (fontName === '') {\n // throw new Error('ArgumentOutOfRangeException : fontName, Parameter can not be empty');\n // }\n var ret = fontName.replace('(', '#28');\n ret = ret.replace(')', '#29');\n ret = ret.replace('[', '#5B');\n ret = ret.replace(']', '#5D');\n ret = ret.replace('<', '#3C');\n ret = ret.replace('>', '#3E');\n ret = ret.replace('{', '#7B');\n ret = ret.replace('}', '#7D');\n ret = ret.replace('/', '#2F');\n ret = ret.replace('%', '#25');\n return ret.replace(' ', '#20');\n };\n /**\n * Creates descendant font.\n */\n UnicodeTrueTypeFont.prototype.createDescendantFont = function () {\n // Set property used to clone Font every time\n this.descendantFont.isResource = true;\n this.descendantFont.descendantFontBeginSave = new SaveDescendantFontEventHandler(this);\n this.descendantFont.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n this.descendantFont.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.cIDFontType2));\n this.descendantFont.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.subsetName));\n this.descendantFont.items.setValue(this.dictionaryProperties.cIDToGIDMap, new PdfName(this.dictionaryProperties.identity));\n this.descendantFont.items.setValue(this.dictionaryProperties.dw, new PdfNumber(1000));\n this.fontDescriptor = this.createFontDescriptor();\n this.descendantFont.items.setValue(this.dictionaryProperties.fontDescriptor, new PdfReferenceHolder(this.fontDescriptor));\n var systemInfo = this.createSystemInfo();\n this.descendantFont.items.setValue(this.dictionaryProperties.cIDSystemInfo, systemInfo);\n };\n /**\n * Creates font descriptor.\n */\n UnicodeTrueTypeFont.prototype.createFontDescriptor = function () {\n var descriptor = new PdfDictionary();\n var metrics = this.ttfReader.metrics;\n // Set property used to clone Font every time\n descriptor.isResource = true;\n descriptor.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.fontDescriptor));\n descriptor.items.setValue(this.dictionaryProperties.fontName, new PdfName(this.subsetName));\n descriptor.items.setValue(this.dictionaryProperties.flags, new PdfNumber(this.getDescriptorFlags()));\n descriptor.items.setValue(this.dictionaryProperties.fontBBox, PdfArray.fromRectangle(this.getBoundBox()));\n descriptor.items.setValue(this.dictionaryProperties.missingWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.stemV, new PdfNumber(metrics.stemV));\n descriptor.items.setValue(this.dictionaryProperties.italicAngle, new PdfNumber(metrics.italicAngle));\n descriptor.items.setValue(this.dictionaryProperties.capHeight, new PdfNumber(metrics.capHeight));\n descriptor.items.setValue(this.dictionaryProperties.ascent, new PdfNumber(metrics.winAscent));\n descriptor.items.setValue(this.dictionaryProperties.descent, new PdfNumber(metrics.winDescent));\n descriptor.items.setValue(this.dictionaryProperties.leading, new PdfNumber(metrics.leading));\n descriptor.items.setValue(this.dictionaryProperties.avgWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.fontFile2, new PdfReferenceHolder(this.fontProgram));\n descriptor.items.setValue(this.dictionaryProperties.maxWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.xHeight, new PdfNumber(0));\n descriptor.items.setValue(this.dictionaryProperties.stemH, new PdfNumber(0));\n return descriptor;\n };\n /**\n * Generates cmap.\n * @private\n */\n UnicodeTrueTypeFont.prototype.createCmap = function () {\n this.cmap.cmapBeginSave = new SaveCmapEventHandler(this);\n };\n /**\n * Generates font dictionary.\n */\n UnicodeTrueTypeFont.prototype.createFontDictionary = function () {\n // Set property used to clone Font every time\n this.fontDictionary.isResource = true;\n this.fontDictionary.fontDictionaryBeginSave = new SaveFontDictionaryEventHandler(this);\n this.fontDictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n this.fontDictionary.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.subsetName));\n this.fontDictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.type0));\n this.fontDictionary.items.setValue(this.dictionaryProperties.encoding, new PdfName(this.dictionaryProperties.identityH));\n var descFonts = new PdfArray();\n var reference = new PdfReferenceHolder(this.descendantFont);\n // Set property used to clone Font every time\n descFonts.isFont = true;\n descFonts.add(reference);\n this.fontDictionary.items.setValue(this.dictionaryProperties.descendantFonts, descFonts);\n };\n /**\n * Creates font program.\n */\n UnicodeTrueTypeFont.prototype.createFontProgram = function () {\n this.fontProgram.fontProgramBeginSave = new SaveFontProgramEventHandler(this);\n };\n /**\n * Creates system info dictionary for CID font.\n * @private\n */\n UnicodeTrueTypeFont.prototype.createSystemInfo = function () {\n var systemInfo = new PdfDictionary();\n systemInfo.items.setValue(this.dictionaryProperties.registry, new PdfString('Adobe'));\n systemInfo.items.setValue(this.dictionaryProperties.ordering, new PdfString(this.dictionaryProperties.identity));\n systemInfo.items.setValue(this.dictionaryProperties.supplement, new PdfNumber(0));\n return systemInfo;\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n UnicodeTrueTypeFont.prototype.descendantFontBeginSave = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var width = this.getDescendantWidth();\n if (width !== null) {\n this.descendantFont.items.setValue(this.dictionaryProperties.w, width);\n }\n }\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n UnicodeTrueTypeFont.prototype.cmapBeginSave = function () {\n this.generateCmap();\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n /* tslint:disable */\n UnicodeTrueTypeFont.prototype.fontDictionaryBeginSave = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0 && !this.fontDictionary.containsKey(this.dictionaryProperties.toUnicode)) {\n this.fontDictionary.items.setValue(this.dictionaryProperties.toUnicode, new PdfReferenceHolder(this.cmap));\n }\n };\n /* tslint:enable */\n /**\n * Runs before font program stream save.\n */\n UnicodeTrueTypeFont.prototype.fontProgramBeginSave = function () {\n this.isCompress = true;\n this.generateFontProgram();\n };\n /**\n * Gets width description pad array for c i d font.\n */\n UnicodeTrueTypeFont.prototype.getDescendantWidth = function () {\n var array = new PdfArray();\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var glyphInfo = [];\n // if (!this.isEmbedFont) {\n var keys = this.usedChars.keys();\n for (var i = 0; i < keys.length; i++) {\n var chLen = keys[i];\n var glyph = this.ttfReader.getGlyph(chLen);\n if (glyph.empty) {\n continue;\n }\n glyphInfo.push(glyph);\n }\n // } else {\n // glyphInfo = this.ttfReader.getAllGlyphs();\n // }\n glyphInfo.sort(function (a, b) { return a.index - b.index; });\n var firstGlyphIndex = 0;\n var lastGlyphIndex = 0;\n var firstGlyphIndexWasSet = false;\n var widthDetails = new PdfArray();\n // if (!this.isEmbedFont) {\n for (var i = 0; i < glyphInfo.length; i++) {\n var glyph = glyphInfo[i];\n if (!firstGlyphIndexWasSet) {\n firstGlyphIndexWasSet = true;\n firstGlyphIndex = glyph.index;\n lastGlyphIndex = glyph.index - 1;\n }\n if ((lastGlyphIndex + 1 !== glyph.index || (i + 1 === glyphInfo.length)) && glyphInfo.length > 1) {\n // Add glyph index / width.\n array.add(new PdfNumber(firstGlyphIndex));\n if (i !== 0) {\n array.add(widthDetails);\n }\n firstGlyphIndex = glyph.index;\n widthDetails = new PdfArray();\n }\n widthDetails.add(new PdfNumber(glyph.width));\n if (i + 1 === glyphInfo.length) {\n array.add(new PdfNumber(firstGlyphIndex));\n array.add(widthDetails);\n }\n lastGlyphIndex = glyph.index;\n }\n // } else {\n // for (let i : number = 0; i < glyphInfo.length; i++) {\n // let glyph : TtfGlyphInfo = glyphInfo[i];\n // if (!firstGlyphIndexWasSet) {\n // firstGlyphIndexWasSet = true;\n // lastGlyphIndex = glyph.index - 1;\n // }\n // firstGlyphIndex = glyph.index;\n // if ((lastGlyphIndex + 1 === glyph.index || (i + 1 === glyphInfo.length)) && glyphInfo.length > 1) {\n // // Add glyph index / width.\n // widthDetails.add(new PdfNumber(glyph.width));\n // array.add(new PdfNumber(firstGlyphIndex));\n // array.add(widthDetails);\n // widthDetails = new PdfArray();\n // }\n // lastGlyphIndex = glyph.index;\n // }\n // }\n }\n return array;\n };\n /**\n * Creates cmap.\n */\n UnicodeTrueTypeFont.prototype.generateCmap = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var glyphChars = this.ttfReader.getGlyphChars(this.usedChars);\n if (glyphChars.size() > 0) {\n var keys = glyphChars.keys().sort();\n // add first and last glyph indexes\n var first = keys[0];\n var last = keys[keys.length - 1];\n var middlePart = this.toHexString(first, false) + this.toHexString(last, false) + Operators.newLine;\n var builder = '';\n builder += this.cmapPrefix;\n builder += middlePart;\n builder += this.cmapEndCodespaceRange;\n var nextRange = 0;\n for (var i = 0; i < keys.length; i++) {\n if (nextRange === 0) {\n if (i !== 0) {\n builder += this.cmapEndRange;\n }\n nextRange = Math.min(100, keys.length - i);\n builder += nextRange;\n builder += Operators.whiteSpace;\n builder += this.cmapBeginRange;\n }\n nextRange -= 1;\n var key = keys[i];\n /* tslint:disable */\n builder += this.toHexString(key, true) + this.toHexString(key, true) + this.toHexString(glyphChars.getValue(key), true) + '\\n';\n /* tslint:enable */\n }\n builder += this.cmapSuffix;\n this.cmap.clearStream();\n this.cmap.isResource = true;\n this.cmap.write(builder);\n }\n }\n };\n /**\n * Generates font program.\n */\n UnicodeTrueTypeFont.prototype.generateFontProgram = function () {\n var fontProgram = null;\n this.usedChars = (this.usedChars === null || this.usedChars === undefined) ? new Dictionary() : this.usedChars;\n this.ttfReader.setOffset(0);\n fontProgram = this.ttfReader.readFontProgram(this.usedChars);\n this.fontProgram.clearStream();\n this.fontProgram.isResource = true;\n this.fontProgram.writeBytes(fontProgram);\n };\n /**\n * Calculates flags for the font descriptor.\n * @private\n */\n UnicodeTrueTypeFont.prototype.getDescriptorFlags = function () {\n var flags = 0;\n var metrics = this.ttfReader.metrics;\n if (metrics.isFixedPitch) {\n flags |= FontDescriptorFlags.FixedPitch;\n }\n if (metrics.isSymbol) {\n flags |= FontDescriptorFlags.Symbolic;\n }\n else {\n flags |= FontDescriptorFlags.Nonsymbolic;\n }\n if (metrics.isItalic) {\n flags |= FontDescriptorFlags.Italic;\n }\n if (metrics.isBold) {\n flags |= FontDescriptorFlags.ForceBold;\n }\n return flags;\n };\n /**\n * Calculates BoundBox of the descriptor.\n * @private\n */\n UnicodeTrueTypeFont.prototype.getBoundBox = function () {\n var rect = this.ttfReader.metrics.fontBox;\n var width = Math.abs(rect.right - rect.left);\n var height = Math.abs(rect.top - rect.bottom);\n var rectangle = new RectangleF(rect.left, rect.bottom, width, height);\n return rectangle;\n };\n /**\n * Converts integer of decimal system to hex integer.\n */\n UnicodeTrueTypeFont.prototype.toHexString = function (n, isCaseChange) {\n var s = n.toString(16);\n if (isCaseChange) {\n s = s.toUpperCase();\n }\n return '<0000'.substring(0, 5 - s.length) + s + '>';\n };\n /**\n * Stores used symbols.\n */\n UnicodeTrueTypeFont.prototype.setSymbols = function (text) {\n if (text === null) {\n throw new Error('Argument Null Exception : text');\n }\n if (this.usedChars === null || this.usedChars === undefined) {\n this.usedChars = new Dictionary();\n }\n for (var i = 0; i < text.length; i++) {\n var ch = text[i];\n this.usedChars.setValue(ch, String.fromCharCode(0));\n }\n // else {\n // if (text === null) {\n // throw new Error('Argument Null Exception : glyphs');\n // }\n // if (this.usedChars === null || this.usedChars === undefined) {\n // this.usedChars = new Dictionary();\n // }\n // for (let i : number = 0; i < text.length; i++) {\n // let glyphIndex : number = text[i];\n // let glyph : TtfGlyphInfo = this.ttfReader.getGlyph(glyphIndex);\n // if (!glyph == null) {\n // let c : string = glyph.charCode.toLocaleString();\n // this.usedChars.setValue(c, String.fromCharCode(0));\n // }\n // }\n // }\n if (this.isEmbedFont === false) {\n this.getDescendantWidth();\n }\n };\n return UnicodeTrueTypeFont;\n}());\nexport { UnicodeTrueTypeFont };\n","/**\n * ArabicShapeRenderer.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../../../collections/dictionary';\nvar ArabicShapeRenderer = /** @class */ (function () {\n //#endregion\n //#region Constructor\n function ArabicShapeRenderer() {\n //#region Constants\n this.arabicCharTable = [['\\u0621', '\\uFE80'], ['\\u0622', '\\uFE81', '\\uFE82'],\n ['\\u0623', '\\uFE83', '\\uFE84'],\n ['\\u0624', '\\uFE85', '\\uFE86'],\n ['\\u0625', '\\uFE87', '\\uFE88'],\n ['\\u0626', '\\uFE89', '\\uFE8A', '\\uFE8B', '\\uFE8C'],\n ['\\u0627', '\\uFE8D', '\\uFE8E'],\n ['\\u0628', '\\uFE8F', '\\uFE90', '\\uFE91', '\\uFE92'],\n ['\\u0629', '\\uFE93', '\\uFE94'],\n ['\\u062A', '\\uFE95', '\\uFE96', '\\uFE97', '\\uFE98'],\n ['\\u062B', '\\uFE99', '\\uFE9A', '\\uFE9B', '\\uFE9C'],\n ['\\u062C', '\\uFE9D', '\\uFE9E', '\\uFE9F', '\\uFEA0'],\n ['\\u062D', '\\uFEA1', '\\uFEA2', '\\uFEA3', '\\uFEA4'],\n ['\\u062E', '\\uFEA5', '\\uFEA6', '\\uFEA7', '\\uFEA8'],\n ['\\u062F', '\\uFEA9', '\\uFEAA'],\n ['\\u0630', '\\uFEAB', '\\uFEAC'],\n ['\\u0631', '\\uFEAD', '\\uFEAE'],\n ['\\u0632', '\\uFEAF', '\\uFEB0'],\n ['\\u0633', '\\uFEB1', '\\uFEB2', '\\uFEB3', '\\uFEB4'],\n ['\\u0634', '\\uFEB5', '\\uFEB6', '\\uFEB7', '\\uFEB8'],\n ['\\u0635', '\\uFEB9', '\\uFEBA', '\\uFEBB', '\\uFEBC'],\n ['\\u0636', '\\uFEBD', '\\uFEBE', '\\uFEBF', '\\uFEC0'],\n ['\\u0637', '\\uFEC1', '\\uFEC2', '\\uFEC3', '\\uFEC4'],\n ['\\u0638', '\\uFEC5', '\\uFEC6', '\\uFEC7', '\\uFEC8'],\n ['\\u0639', '\\uFEC9', '\\uFECA', '\\uFECB', '\\uFECC'],\n ['\\u063A', '\\uFECD', '\\uFECE', '\\uFECF', '\\uFED0'],\n ['\\u0640', '\\u0640', '\\u0640', '\\u0640', '\\u0640'],\n ['\\u0641', '\\uFED1', '\\uFED2', '\\uFED3', '\\uFED4'],\n ['\\u0642', '\\uFED5', '\\uFED6', '\\uFED7', '\\uFED8'],\n ['\\u0643', '\\uFED9', '\\uFEDA', '\\uFEDB', '\\uFEDC'],\n ['\\u0644', '\\uFEDD', '\\uFEDE', '\\uFEDF', '\\uFEE0'],\n ['\\u0645', '\\uFEE1', '\\uFEE2', '\\uFEE3', '\\uFEE4'],\n ['\\u0646', '\\uFEE5', '\\uFEE6', '\\uFEE7', '\\uFEE8'],\n ['\\u0647', '\\uFEE9', '\\uFEEA', '\\uFEEB', '\\uFEEC'],\n ['\\u0648', '\\uFEED', '\\uFEEE'],\n ['\\u0649', '\\uFEEF', '\\uFEF0', '\\uFBE8', '\\uFBE9'],\n ['\\u064A', '\\uFEF1', '\\uFEF2', '\\uFEF3', '\\uFEF4'],\n ['\\u0671', '\\uFB50', '\\uFB51'],\n ['\\u0679', '\\uFB66', '\\uFB67', '\\uFB68', '\\uFB69'],\n ['\\u067A', '\\uFB5E', '\\uFB5F', '\\uFB60', '\\uFB61'],\n ['\\u067B', '\\uFB52', '\\uFB53', '\\uFB54', '\\uFB55'],\n ['\\u067E', '\\uFB56', '\\uFB57', '\\uFB58', '\\uFB59'],\n ['\\u067F', '\\uFB62', '\\uFB63', '\\uFB64', '\\uFB65'],\n ['\\u0680', '\\uFB5A', '\\uFB5B', '\\uFB5C', '\\uFB5D'],\n ['\\u0683', '\\uFB76', '\\uFB77', '\\uFB78', '\\uFB79'],\n ['\\u0684', '\\uFB72', '\\uFB73', '\\uFB74', '\\uFB75'],\n ['\\u0686', '\\uFB7A', '\\uFB7B', '\\uFB7C', '\\uFB7D'],\n ['\\u0687', '\\uFB7E', '\\uFB7F', '\\uFB80', '\\uFB81'],\n ['\\u0688', '\\uFB88', '\\uFB89'],\n ['\\u068C', '\\uFB84', '\\uFB85'],\n ['\\u068D', '\\uFB82', '\\uFB83'],\n ['\\u068E', '\\uFB86', '\\uFB87'],\n ['\\u0691', '\\uFB8C', '\\uFB8D'],\n ['\\u0698', '\\uFB8A', '\\uFB8B'],\n ['\\u06A4', '\\uFB6A', '\\uFB6B', '\\uFB6C', '\\uFB6D'],\n ['\\u06A6', '\\uFB6E', '\\uFB6F', '\\uFB70', '\\uFB71'],\n ['\\u06A9', '\\uFB8E', '\\uFB8F', '\\uFB90', '\\uFB91'],\n ['\\u06AD', '\\uFBD3', '\\uFBD4', '\\uFBD5', '\\uFBD6'],\n ['\\u06AF', '\\uFB92', '\\uFB93', '\\uFB94', '\\uFB95'],\n ['\\u06B1', '\\uFB9A', '\\uFB9B', '\\uFB9C', '\\uFB9D'],\n ['\\u06B3', '\\uFB96', '\\uFB97', '\\uFB98', '\\uFB99'],\n ['\\u06BA', '\\uFB9E', '\\uFB9F'],\n ['\\u06BB', '\\uFBA0', '\\uFBA1', '\\uFBA2', '\\uFBA3'],\n ['\\u06BE', '\\uFBAA', '\\uFBAB', '\\uFBAC', '\\uFBAD'],\n ['\\u06C0', '\\uFBA4', '\\uFBA5'],\n ['\\u06C1', '\\uFBA6', '\\uFBA7', '\\uFBA8', '\\uFBA9'],\n ['\\u06C5', '\\uFBE0', '\\uFBE1'],\n ['\\u06C6', '\\uFBD9', '\\uFBDA'],\n ['\\u06C7', '\\uFBD7', '\\uFBD8'],\n ['\\u06C8', '\\uFBDB', '\\uFBDC'],\n ['\\u06C9', '\\uFBE2', '\\uFBE3'],\n ['\\u06CB', '\\uFBDE', '\\uFBDF'],\n ['\\u06CC', '\\uFBFC', '\\uFBFD', '\\uFBFE', '\\uFBFF'],\n ['\\u06D0', '\\uFBE4', '\\uFBE5', '\\uFBE6', '\\uFBE7'],\n ['\\u06D2', '\\uFBAE', '\\uFBAF'],\n ['\\u06D3', '\\uFBB0', '\\uFBB1']\n ];\n this.alef = '\\u0627';\n this.alefHamza = '\\u0623';\n this.alefHamzaBelow = '\\u0625';\n this.alefMadda = '\\u0622';\n this.lam = '\\u0644';\n this.hamza = '\\u0621';\n this.zeroWidthJoiner = '\\u200D';\n this.hamzaAbove = '\\u0654';\n this.hamzaBelow = '\\u0655';\n this.wawHamza = '\\u0624';\n this.yehHamza = '\\u0626';\n this.waw = '\\u0648';\n this.alefMaksura = '\\u0649';\n this.yeh = '\\u064A';\n this.farsiYeh = '\\u06CC';\n this.shadda = '\\u0651';\n this.madda = '\\u0653';\n this.lwa = '\\uFEFB';\n this.lwawh = '\\uFEF7';\n this.lwawhb = '\\uFEF9';\n this.lwawm = '\\uFEF5';\n this.bwhb = '\\u06D3';\n this.fathatan = '\\u064B';\n this.superScriptalef = '\\u0670';\n this.vowel = 0x1;\n // #endregion\n //#region Fields\n this.arabicMapTable = new Dictionary();\n for (var i = 0; i < this.arabicCharTable.length; i++) {\n this.arabicMapTable.setValue(this.arabicCharTable[i][0], this.arabicCharTable[i]);\n }\n }\n //#endregion\n //#region implementation\n ArabicShapeRenderer.prototype.getCharacterShape = function (input, index) {\n if ((input >= this.hamza) && (input <= this.bwhb)) {\n var value = [];\n if (this.arabicMapTable.getValue(input)) {\n value = this.arabicMapTable.getValue(input);\n return value[index + 1];\n }\n }\n else if (input >= this.lwawm && input <= this.lwa) {\n return (input);\n }\n return input;\n };\n ArabicShapeRenderer.prototype.shape = function (text, level) {\n var builder = '';\n var str2 = '';\n for (var i = 0; i < text.length; i++) {\n var c = text[i];\n if (c >= '؀' && c <= 'ۿ') {\n //if(c>= 0x0600.toString() && c<= 0x06FF.toString()) {\n str2 = str2 + c;\n }\n else {\n if (str2.length > 0) {\n var st = this.doShape(str2.toString(), 0);\n builder = builder + st;\n str2 = '';\n }\n builder = builder + c;\n }\n }\n if (str2.length > 0) {\n var st = this.doShape(str2.toString(), 0);\n builder = builder + st;\n }\n return builder.toString();\n };\n ArabicShapeRenderer.prototype.doShape = function (input, level) {\n var str = '';\n var ligature = 0;\n var len = 0;\n var i = 0;\n var next = '';\n var previous = new ArabicShape();\n var present = new ArabicShape();\n while (i < input.length) {\n next = input[i++];\n ligature = this.ligature(next, present);\n if (ligature === 0) {\n var shapeCount = this.getShapeCount(next);\n len = (shapeCount === 1) ? 0 : 2;\n if (previous.Shapes > 2) {\n len += 1;\n }\n len = len % (present.Shapes);\n present.Value = this.getCharacterShape(present.Value, len);\n str = this.append(str, previous, level);\n previous = present;\n present = new ArabicShape();\n present.Value = next;\n present.Shapes = shapeCount;\n present.Ligature++;\n }\n }\n len = (previous.Shapes > 2) ? 1 : 0;\n len = len % (present.Shapes);\n present.Value = this.getCharacterShape(present.Value, len);\n str = this.append(str, previous, level);\n str = this.append(str, present, level);\n return str.toString();\n };\n ArabicShapeRenderer.prototype.append = function (builder, shape, level) {\n if (shape.Value !== '') {\n builder = builder + shape.Value;\n shape.Ligature -= 1;\n if (shape.Type !== '') {\n if ((level & this.vowel) === 0) {\n builder = builder + shape.Type;\n shape.Ligature -= 1;\n }\n else {\n shape.Ligature -= 1;\n }\n }\n if (shape.vowel !== '') {\n if ((level & this.vowel) === 0) {\n builder = builder + shape.vowel;\n shape.Ligature -= 1;\n }\n else {\n shape.Ligature -= 1;\n }\n }\n }\n return builder;\n };\n ArabicShapeRenderer.prototype.ligature = function (value, shape) {\n if (shape.Value !== '') {\n var result = 0;\n if ((value >= this.fathatan && value <= this.hamzaBelow) || value === this.superScriptalef) {\n result = 1;\n if ((shape.vowel !== '') && (value !== this.shadda)) {\n result = 2;\n }\n if (value === this.shadda) {\n if (shape.Type == null) {\n shape.Type = this.shadda;\n }\n else {\n return 0;\n }\n }\n else if (value === this.hamzaBelow) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefHamzaBelow;\n result = 2;\n }\n else if (value === this.lwa) {\n shape.Value = this.lwawhb;\n result = 2;\n }\n else {\n shape.Type = this.hamzaBelow;\n }\n }\n else if (value === this.hamzaAbove) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefHamza;\n result = 2;\n }\n else if (shape.Value === this.lwa) {\n shape.Value = this.lwawh;\n result = 2;\n }\n else if (shape.Value === this.waw) {\n shape.Value = this.wawHamza;\n result = 2;\n }\n else if (shape.Value === this.yeh || shape.Value === this.alefMaksura || shape.Value === this.farsiYeh) {\n shape.Value = this.yehHamza;\n result = 2;\n }\n else {\n shape.Type = this.hamzaAbove;\n }\n }\n else if (value === this.madda) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefMadda;\n result = 2;\n }\n }\n else {\n shape.vowel = value;\n }\n if (result === 1) {\n shape.Ligature++;\n }\n return result;\n }\n if (shape.vowel !== '') {\n return 0;\n }\n if (shape.Value === this.lam) {\n if (value === this.alef) {\n shape.Value = this.lwa;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefHamza) {\n shape.Value = this.lwawh;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefHamzaBelow) {\n shape.Value = this.lwawhb;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefMadda) {\n shape.Value = this.lwawm;\n shape.Shapes = 2;\n result = 3;\n }\n }\n // else if (shape.Value === '') {\n // shape.Value = value;\n // shape.Shapes = this.getShapeCount(value);\n // result = 1;\n // }\n return result;\n }\n else {\n return 0;\n }\n };\n ArabicShapeRenderer.prototype.getShapeCount = function (shape) {\n if ((shape >= this.hamza) && (shape <= this.bwhb) && !((shape >= this.fathatan && shape <= this.hamzaBelow)\n || shape === this.superScriptalef)) {\n var c = [];\n if (this.arabicMapTable.getValue(shape)) {\n c = this.arabicMapTable.getValue(shape);\n return c.length - 1;\n }\n }\n else if (shape === this.zeroWidthJoiner) {\n return 4;\n }\n return 1;\n };\n return ArabicShapeRenderer;\n}());\nexport { ArabicShapeRenderer };\n//#endregion\n//#region Internals\nvar ArabicShape = /** @class */ (function () {\n function ArabicShape() {\n //#region Fields\n this.shapeValue = '';\n this.shapeType = '';\n this.shapeVowel = '';\n this.shapeLigature = 0;\n this.shapeShapes = 1;\n //#endregion\n }\n Object.defineProperty(ArabicShape.prototype, \"Value\", {\n //#endregion\n //#region Properties \n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeValue;\n },\n set: function (value) {\n this.shapeValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Type\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeType;\n },\n set: function (value) {\n this.shapeType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"vowel\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeVowel;\n },\n set: function (value) {\n this.shapeVowel = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Ligature\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeLigature;\n },\n set: function (value) {\n this.shapeLigature = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Shapes\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeShapes;\n },\n set: function (value) {\n this.shapeShapes = value;\n },\n enumerable: true,\n configurable: true\n });\n return ArabicShape;\n}());\nexport { ArabicShape };\n//#endregion\n","/**\n * Bidi.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../../../collections/dictionary';\n/**\n * `Metrics` of the font.\n * @private\n */\nvar Bidi = /** @class */ (function () {\n //#endregion\n //#region Constructor\n function Bidi() {\n //#region Fields\n this.indexes = [];\n this.indexLevels = [];\n this.mirroringShapeCharacters = new Dictionary();\n this.update();\n }\n //#endregion\n //#region implementation\n Bidi.prototype.doMirrorShaping = function (text) {\n var result = [];\n for (var i = 0; i < text.length; i++) {\n if (((this.indexLevels[i] & 1) === 1) && this.mirroringShapeCharacters.containsKey(text[i].charCodeAt(0))) {\n result[i] = String.fromCharCode(this.mirroringShapeCharacters.getValue(text[i].charCodeAt(0)));\n }\n else {\n result[i] = text[i].toString();\n }\n }\n var res = '';\n for (var j = 0; j < result.length; j++) {\n res = res + result[j];\n }\n return res;\n };\n Bidi.prototype.getLogicalToVisualString = function (inputText, isRtl) {\n var rtlCharacters = new RtlCharacters();\n this.indexLevels = rtlCharacters.getVisualOrder(inputText, isRtl);\n this.setDefaultIndexLevel();\n this.doOrder(0, this.indexLevels.length - 1);\n var text = this.doMirrorShaping(inputText);\n //let text : string = inputText;\n var resultBuilder = '';\n for (var i = 0; i < this.indexes.length; i++) {\n var index = this.indexes[i];\n resultBuilder += text[index];\n }\n return resultBuilder.toString();\n };\n Bidi.prototype.setDefaultIndexLevel = function () {\n for (var i = 0; i < this.indexLevels.length; i++) {\n this.indexes[i] = i;\n }\n };\n Bidi.prototype.doOrder = function (sIndex, eIndex) {\n var max = this.indexLevels[sIndex];\n var min = max;\n var odd = max;\n var even = max;\n for (var i = sIndex + 1; i <= eIndex; ++i) {\n var data = this.indexLevels[i];\n if (data > max) {\n max = data;\n }\n else if (data < min) {\n min = data;\n }\n odd &= data;\n even |= data;\n }\n if ((even & 1) === 0) {\n return;\n }\n if ((odd & 1) === 1) {\n this.reArrange(sIndex, eIndex + 1);\n return;\n }\n min |= 1;\n while (max >= min) {\n var pstart = sIndex;\n /*tslint:disable:no-constant-condition */\n while (true) {\n while (pstart <= eIndex) {\n if (this.indexLevels[pstart] >= max) {\n break;\n }\n pstart += 1;\n }\n if (pstart > eIndex) {\n break;\n }\n var pend = pstart + 1;\n while (pend <= eIndex) {\n if (this.indexLevels[pend] < max) {\n break;\n }\n pend += 1;\n }\n this.reArrange(pstart, pend);\n pstart = pend + 1;\n }\n max -= 1;\n }\n };\n Bidi.prototype.reArrange = function (i, j) {\n var length = (i + j) / 2;\n --j;\n for (; i < length; ++i, --j) {\n var temp = this.indexes[i];\n this.indexes[i] = this.indexes[j];\n this.indexes[j] = temp;\n }\n };\n Bidi.prototype.update = function () {\n this.mirroringShapeCharacters.setValue(40, 41);\n this.mirroringShapeCharacters.setValue(41, 40);\n this.mirroringShapeCharacters.setValue(60, 62);\n this.mirroringShapeCharacters.setValue(62, 60);\n this.mirroringShapeCharacters.setValue(91, 93);\n this.mirroringShapeCharacters.setValue(93, 91);\n this.mirroringShapeCharacters.setValue(123, 125);\n this.mirroringShapeCharacters.setValue(125, 123);\n this.mirroringShapeCharacters.setValue(171, 187);\n this.mirroringShapeCharacters.setValue(187, 171);\n this.mirroringShapeCharacters.setValue(8249, 8250);\n this.mirroringShapeCharacters.setValue(8250, 8249);\n this.mirroringShapeCharacters.setValue(8261, 8262);\n this.mirroringShapeCharacters.setValue(8262, 8261);\n this.mirroringShapeCharacters.setValue(8317, 8318);\n this.mirroringShapeCharacters.setValue(8318, 8317);\n this.mirroringShapeCharacters.setValue(8333, 8334);\n this.mirroringShapeCharacters.setValue(8334, 8333);\n this.mirroringShapeCharacters.setValue(8712, 8715);\n this.mirroringShapeCharacters.setValue(8713, 8716);\n this.mirroringShapeCharacters.setValue(8714, 8717);\n this.mirroringShapeCharacters.setValue(8715, 8712);\n this.mirroringShapeCharacters.setValue(8716, 8713);\n this.mirroringShapeCharacters.setValue(8717, 8714);\n this.mirroringShapeCharacters.setValue(8725, 10741);\n this.mirroringShapeCharacters.setValue(8764, 8765);\n this.mirroringShapeCharacters.setValue(8765, 8764);\n this.mirroringShapeCharacters.setValue(8771, 8909);\n this.mirroringShapeCharacters.setValue(8786, 8787);\n this.mirroringShapeCharacters.setValue(8787, 8786);\n this.mirroringShapeCharacters.setValue(8788, 8789);\n this.mirroringShapeCharacters.setValue(8789, 8788);\n this.mirroringShapeCharacters.setValue(8804, 8805);\n this.mirroringShapeCharacters.setValue(8805, 8804);\n this.mirroringShapeCharacters.setValue(8806, 8807);\n this.mirroringShapeCharacters.setValue(8807, 8806);\n this.mirroringShapeCharacters.setValue(8808, 8809);\n this.mirroringShapeCharacters.setValue(8809, 8808);\n this.mirroringShapeCharacters.setValue(8810, 8811);\n this.mirroringShapeCharacters.setValue(8811, 8810);\n this.mirroringShapeCharacters.setValue(8814, 8815);\n this.mirroringShapeCharacters.setValue(8815, 8814);\n this.mirroringShapeCharacters.setValue(8816, 8817);\n this.mirroringShapeCharacters.setValue(8817, 8816);\n this.mirroringShapeCharacters.setValue(8818, 8819);\n this.mirroringShapeCharacters.setValue(8819, 8818);\n this.mirroringShapeCharacters.setValue(8820, 8821);\n this.mirroringShapeCharacters.setValue(8821, 8820);\n this.mirroringShapeCharacters.setValue(8822, 8823);\n this.mirroringShapeCharacters.setValue(8823, 8822);\n this.mirroringShapeCharacters.setValue(8824, 8825);\n this.mirroringShapeCharacters.setValue(8825, 8824);\n this.mirroringShapeCharacters.setValue(8826, 8827);\n this.mirroringShapeCharacters.setValue(8827, 8826);\n this.mirroringShapeCharacters.setValue(8828, 8829);\n this.mirroringShapeCharacters.setValue(8829, 8828);\n this.mirroringShapeCharacters.setValue(8830, 8831);\n this.mirroringShapeCharacters.setValue(8831, 8830);\n this.mirroringShapeCharacters.setValue(8832, 8833);\n this.mirroringShapeCharacters.setValue(8833, 8832);\n this.mirroringShapeCharacters.setValue(8834, 8835);\n this.mirroringShapeCharacters.setValue(8835, 8834);\n this.mirroringShapeCharacters.setValue(8836, 8837);\n this.mirroringShapeCharacters.setValue(8837, 8836);\n this.mirroringShapeCharacters.setValue(8838, 8839);\n this.mirroringShapeCharacters.setValue(8839, 8838);\n this.mirroringShapeCharacters.setValue(8840, 8841);\n this.mirroringShapeCharacters.setValue(8841, 8840);\n this.mirroringShapeCharacters.setValue(8842, 8843);\n this.mirroringShapeCharacters.setValue(8843, 8842);\n this.mirroringShapeCharacters.setValue(8847, 8848);\n this.mirroringShapeCharacters.setValue(8848, 8847);\n this.mirroringShapeCharacters.setValue(8849, 8850);\n this.mirroringShapeCharacters.setValue(8850, 8849);\n this.mirroringShapeCharacters.setValue(8856, 10680);\n this.mirroringShapeCharacters.setValue(8866, 8867);\n this.mirroringShapeCharacters.setValue(8867, 8866);\n this.mirroringShapeCharacters.setValue(8870, 10974);\n this.mirroringShapeCharacters.setValue(8872, 10980);\n this.mirroringShapeCharacters.setValue(8873, 10979);\n this.mirroringShapeCharacters.setValue(8875, 10981);\n this.mirroringShapeCharacters.setValue(8880, 8881);\n this.mirroringShapeCharacters.setValue(8881, 8880);\n this.mirroringShapeCharacters.setValue(8882, 8883);\n this.mirroringShapeCharacters.setValue(8883, 8882);\n this.mirroringShapeCharacters.setValue(8884, 8885);\n this.mirroringShapeCharacters.setValue(8885, 8884);\n /*tslint:disable:max-func-body-length */\n this.mirroringShapeCharacters.setValue(8886, 8887);\n this.mirroringShapeCharacters.setValue(8887, 8886);\n this.mirroringShapeCharacters.setValue(8905, 8906);\n this.mirroringShapeCharacters.setValue(8906, 8905);\n this.mirroringShapeCharacters.setValue(8907, 8908);\n this.mirroringShapeCharacters.setValue(8908, 8907);\n this.mirroringShapeCharacters.setValue(8909, 8771);\n this.mirroringShapeCharacters.setValue(8912, 8913);\n this.mirroringShapeCharacters.setValue(8913, 8912);\n this.mirroringShapeCharacters.setValue(8918, 8919);\n this.mirroringShapeCharacters.setValue(8919, 8918);\n this.mirroringShapeCharacters.setValue(8920, 8921);\n this.mirroringShapeCharacters.setValue(8921, 8920);\n this.mirroringShapeCharacters.setValue(8922, 8923);\n this.mirroringShapeCharacters.setValue(8923, 8922);\n this.mirroringShapeCharacters.setValue(8924, 8925);\n this.mirroringShapeCharacters.setValue(8925, 8924);\n this.mirroringShapeCharacters.setValue(8926, 8927);\n this.mirroringShapeCharacters.setValue(8927, 8926);\n this.mirroringShapeCharacters.setValue(8928, 8929);\n this.mirroringShapeCharacters.setValue(8929, 8928);\n this.mirroringShapeCharacters.setValue(8930, 8931);\n this.mirroringShapeCharacters.setValue(8931, 8930);\n this.mirroringShapeCharacters.setValue(8932, 8933);\n this.mirroringShapeCharacters.setValue(8933, 8932);\n this.mirroringShapeCharacters.setValue(8934, 8935);\n this.mirroringShapeCharacters.setValue(8935, 8934);\n this.mirroringShapeCharacters.setValue(8936, 8937);\n this.mirroringShapeCharacters.setValue(8937, 8936);\n this.mirroringShapeCharacters.setValue(8938, 8939);\n this.mirroringShapeCharacters.setValue(8939, 8938);\n this.mirroringShapeCharacters.setValue(8940, 8941);\n this.mirroringShapeCharacters.setValue(8941, 8940);\n this.mirroringShapeCharacters.setValue(8944, 8945);\n this.mirroringShapeCharacters.setValue(8945, 8944);\n this.mirroringShapeCharacters.setValue(8946, 8954);\n this.mirroringShapeCharacters.setValue(8947, 8955);\n this.mirroringShapeCharacters.setValue(8948, 8956);\n this.mirroringShapeCharacters.setValue(8950, 8957);\n this.mirroringShapeCharacters.setValue(8951, 8958);\n this.mirroringShapeCharacters.setValue(8954, 8946);\n this.mirroringShapeCharacters.setValue(8955, 8947);\n this.mirroringShapeCharacters.setValue(8956, 8948);\n this.mirroringShapeCharacters.setValue(8957, 8950);\n this.mirroringShapeCharacters.setValue(8958, 8951);\n this.mirroringShapeCharacters.setValue(8968, 8969);\n this.mirroringShapeCharacters.setValue(8969, 8968);\n this.mirroringShapeCharacters.setValue(8970, 8971);\n this.mirroringShapeCharacters.setValue(8971, 8970);\n this.mirroringShapeCharacters.setValue(9001, 9002);\n this.mirroringShapeCharacters.setValue(9002, 9001);\n this.mirroringShapeCharacters.setValue(10088, 10089);\n this.mirroringShapeCharacters.setValue(10089, 10088);\n this.mirroringShapeCharacters.setValue(10090, 10091);\n this.mirroringShapeCharacters.setValue(10091, 10090);\n this.mirroringShapeCharacters.setValue(10092, 10093);\n this.mirroringShapeCharacters.setValue(10093, 10092);\n this.mirroringShapeCharacters.setValue(10094, 10095);\n this.mirroringShapeCharacters.setValue(10095, 10094);\n this.mirroringShapeCharacters.setValue(10096, 10097);\n this.mirroringShapeCharacters.setValue(10097, 10096);\n this.mirroringShapeCharacters.setValue(10098, 10099);\n this.mirroringShapeCharacters.setValue(10099, 10098);\n this.mirroringShapeCharacters.setValue(10100, 10101);\n this.mirroringShapeCharacters.setValue(10101, 10100);\n this.mirroringShapeCharacters.setValue(10197, 10198);\n this.mirroringShapeCharacters.setValue(10198, 10197);\n this.mirroringShapeCharacters.setValue(10205, 10206);\n this.mirroringShapeCharacters.setValue(10206, 10205);\n this.mirroringShapeCharacters.setValue(10210, 10211);\n this.mirroringShapeCharacters.setValue(10211, 10210);\n this.mirroringShapeCharacters.setValue(10212, 10213);\n this.mirroringShapeCharacters.setValue(10213, 10212);\n this.mirroringShapeCharacters.setValue(10214, 10215);\n this.mirroringShapeCharacters.setValue(10215, 10214);\n this.mirroringShapeCharacters.setValue(10216, 10217);\n this.mirroringShapeCharacters.setValue(10217, 10216);\n this.mirroringShapeCharacters.setValue(10218, 10219);\n this.mirroringShapeCharacters.setValue(10219, 10218);\n this.mirroringShapeCharacters.setValue(10627, 10628);\n this.mirroringShapeCharacters.setValue(10628, 10627);\n this.mirroringShapeCharacters.setValue(10629, 10630);\n this.mirroringShapeCharacters.setValue(10630, 10629);\n this.mirroringShapeCharacters.setValue(10631, 10632);\n this.mirroringShapeCharacters.setValue(10632, 10631);\n this.mirroringShapeCharacters.setValue(10633, 10634);\n this.mirroringShapeCharacters.setValue(10634, 10633);\n this.mirroringShapeCharacters.setValue(10635, 10636);\n this.mirroringShapeCharacters.setValue(10636, 10635);\n this.mirroringShapeCharacters.setValue(10637, 10640);\n this.mirroringShapeCharacters.setValue(10638, 10639);\n this.mirroringShapeCharacters.setValue(10639, 10638);\n this.mirroringShapeCharacters.setValue(10640, 10637);\n this.mirroringShapeCharacters.setValue(10641, 10642);\n this.mirroringShapeCharacters.setValue(10642, 10641);\n this.mirroringShapeCharacters.setValue(10643, 10644);\n this.mirroringShapeCharacters.setValue(10644, 10643);\n this.mirroringShapeCharacters.setValue(10645, 10646);\n this.mirroringShapeCharacters.setValue(10646, 10645);\n this.mirroringShapeCharacters.setValue(10647, 10648);\n this.mirroringShapeCharacters.setValue(10648, 10647);\n this.mirroringShapeCharacters.setValue(10680, 8856);\n this.mirroringShapeCharacters.setValue(10688, 10689);\n this.mirroringShapeCharacters.setValue(10689, 10688);\n this.mirroringShapeCharacters.setValue(10692, 10693);\n this.mirroringShapeCharacters.setValue(10693, 10692);\n this.mirroringShapeCharacters.setValue(10703, 10704);\n this.mirroringShapeCharacters.setValue(10704, 10703);\n this.mirroringShapeCharacters.setValue(10705, 10706);\n this.mirroringShapeCharacters.setValue(10706, 10705);\n this.mirroringShapeCharacters.setValue(10708, 10709);\n this.mirroringShapeCharacters.setValue(10709, 10708);\n this.mirroringShapeCharacters.setValue(10712, 10713);\n this.mirroringShapeCharacters.setValue(10713, 10712);\n this.mirroringShapeCharacters.setValue(10714, 10715);\n this.mirroringShapeCharacters.setValue(10715, 10714);\n this.mirroringShapeCharacters.setValue(10741, 8725);\n this.mirroringShapeCharacters.setValue(10744, 10745);\n this.mirroringShapeCharacters.setValue(10745, 10744);\n this.mirroringShapeCharacters.setValue(10748, 10749);\n this.mirroringShapeCharacters.setValue(10749, 10748);\n this.mirroringShapeCharacters.setValue(10795, 10796);\n this.mirroringShapeCharacters.setValue(10796, 10795);\n this.mirroringShapeCharacters.setValue(10797, 10796);\n this.mirroringShapeCharacters.setValue(10798, 10797);\n this.mirroringShapeCharacters.setValue(10804, 10805);\n this.mirroringShapeCharacters.setValue(10805, 10804);\n this.mirroringShapeCharacters.setValue(10812, 10813);\n this.mirroringShapeCharacters.setValue(10813, 10812);\n this.mirroringShapeCharacters.setValue(10852, 10853);\n this.mirroringShapeCharacters.setValue(10853, 10852);\n this.mirroringShapeCharacters.setValue(10873, 10874);\n this.mirroringShapeCharacters.setValue(10874, 10873);\n this.mirroringShapeCharacters.setValue(10877, 10878);\n this.mirroringShapeCharacters.setValue(10878, 10877);\n this.mirroringShapeCharacters.setValue(10879, 10880);\n this.mirroringShapeCharacters.setValue(10880, 10879);\n this.mirroringShapeCharacters.setValue(10881, 10882);\n this.mirroringShapeCharacters.setValue(10882, 10881);\n this.mirroringShapeCharacters.setValue(10883, 10884);\n this.mirroringShapeCharacters.setValue(10884, 10883);\n this.mirroringShapeCharacters.setValue(10891, 10892);\n this.mirroringShapeCharacters.setValue(10892, 10891);\n this.mirroringShapeCharacters.setValue(10897, 10898);\n this.mirroringShapeCharacters.setValue(10898, 10897);\n this.mirroringShapeCharacters.setValue(10899, 10900);\n this.mirroringShapeCharacters.setValue(10900, 10899);\n this.mirroringShapeCharacters.setValue(10901, 10902);\n this.mirroringShapeCharacters.setValue(10902, 10901);\n this.mirroringShapeCharacters.setValue(10903, 10904);\n this.mirroringShapeCharacters.setValue(10904, 10903);\n this.mirroringShapeCharacters.setValue(10905, 10906);\n this.mirroringShapeCharacters.setValue(10906, 10905);\n this.mirroringShapeCharacters.setValue(10907, 10908);\n this.mirroringShapeCharacters.setValue(10908, 10907);\n this.mirroringShapeCharacters.setValue(10913, 10914);\n this.mirroringShapeCharacters.setValue(10914, 10913);\n this.mirroringShapeCharacters.setValue(10918, 10919);\n this.mirroringShapeCharacters.setValue(10919, 10918);\n this.mirroringShapeCharacters.setValue(10920, 10921);\n this.mirroringShapeCharacters.setValue(10921, 10920);\n this.mirroringShapeCharacters.setValue(10922, 10923);\n this.mirroringShapeCharacters.setValue(10923, 10922);\n this.mirroringShapeCharacters.setValue(10924, 10925);\n this.mirroringShapeCharacters.setValue(10925, 10924);\n this.mirroringShapeCharacters.setValue(10927, 10928);\n this.mirroringShapeCharacters.setValue(10928, 10927);\n this.mirroringShapeCharacters.setValue(10931, 10932);\n this.mirroringShapeCharacters.setValue(10932, 10931);\n this.mirroringShapeCharacters.setValue(10939, 10940);\n this.mirroringShapeCharacters.setValue(10940, 10939);\n this.mirroringShapeCharacters.setValue(10941, 10942);\n this.mirroringShapeCharacters.setValue(10942, 10941);\n this.mirroringShapeCharacters.setValue(10943, 10944);\n this.mirroringShapeCharacters.setValue(10944, 10943);\n this.mirroringShapeCharacters.setValue(10945, 10946);\n this.mirroringShapeCharacters.setValue(10946, 10945);\n this.mirroringShapeCharacters.setValue(10947, 10948);\n this.mirroringShapeCharacters.setValue(10948, 10947);\n this.mirroringShapeCharacters.setValue(10949, 10950);\n this.mirroringShapeCharacters.setValue(10950, 10949);\n this.mirroringShapeCharacters.setValue(10957, 10958);\n this.mirroringShapeCharacters.setValue(10958, 10957);\n this.mirroringShapeCharacters.setValue(10959, 10960);\n this.mirroringShapeCharacters.setValue(10960, 10959);\n this.mirroringShapeCharacters.setValue(10961, 10962);\n this.mirroringShapeCharacters.setValue(10962, 10961);\n this.mirroringShapeCharacters.setValue(10963, 10964);\n this.mirroringShapeCharacters.setValue(10964, 10963);\n this.mirroringShapeCharacters.setValue(10965, 10966);\n this.mirroringShapeCharacters.setValue(10966, 10965);\n this.mirroringShapeCharacters.setValue(10974, 8870);\n this.mirroringShapeCharacters.setValue(10979, 8873);\n this.mirroringShapeCharacters.setValue(10980, 8872);\n this.mirroringShapeCharacters.setValue(10981, 8875);\n this.mirroringShapeCharacters.setValue(10988, 10989);\n this.mirroringShapeCharacters.setValue(10989, 10988);\n this.mirroringShapeCharacters.setValue(10999, 11000);\n this.mirroringShapeCharacters.setValue(11000, 10999);\n this.mirroringShapeCharacters.setValue(11001, 11002);\n this.mirroringShapeCharacters.setValue(11002, 11001);\n this.mirroringShapeCharacters.setValue(12296, 12297);\n this.mirroringShapeCharacters.setValue(12297, 12296);\n this.mirroringShapeCharacters.setValue(12298, 12299);\n this.mirroringShapeCharacters.setValue(12299, 12298);\n this.mirroringShapeCharacters.setValue(12300, 12301);\n this.mirroringShapeCharacters.setValue(12301, 12300);\n this.mirroringShapeCharacters.setValue(12302, 12303);\n this.mirroringShapeCharacters.setValue(12303, 12302);\n this.mirroringShapeCharacters.setValue(12304, 12305);\n this.mirroringShapeCharacters.setValue(12305, 12304);\n this.mirroringShapeCharacters.setValue(12308, 12309);\n this.mirroringShapeCharacters.setValue(12309, 12308);\n this.mirroringShapeCharacters.setValue(12310, 12311);\n this.mirroringShapeCharacters.setValue(12311, 12310);\n this.mirroringShapeCharacters.setValue(12312, 12313);\n this.mirroringShapeCharacters.setValue(12313, 12312);\n this.mirroringShapeCharacters.setValue(12314, 12315);\n this.mirroringShapeCharacters.setValue(12315, 12314);\n this.mirroringShapeCharacters.setValue(65288, 65289);\n this.mirroringShapeCharacters.setValue(65289, 65288);\n this.mirroringShapeCharacters.setValue(65308, 65310);\n this.mirroringShapeCharacters.setValue(65310, 65308);\n this.mirroringShapeCharacters.setValue(65339, 65341);\n this.mirroringShapeCharacters.setValue(65341, 65339);\n this.mirroringShapeCharacters.setValue(65371, 65373);\n this.mirroringShapeCharacters.setValue(65373, 65371);\n this.mirroringShapeCharacters.setValue(65375, 65376);\n this.mirroringShapeCharacters.setValue(65376, 65375);\n this.mirroringShapeCharacters.setValue(65378, 65379);\n this.mirroringShapeCharacters.setValue(65379, 65378);\n };\n return Bidi;\n}());\nexport { Bidi };\nvar RtlCharacters = /** @class */ (function () {\n //#endregion\n //#region constructors\n function RtlCharacters() {\n //#region fields\n /// \n /// Specifies the character types.\n /// \n this.types = [];\n /// \n /// Specifies the text order (RTL or LTR).\n /// \n this.textOrder = -1;\n /// \n /// Specifies the RTL character types.\n /// \n /* tslint:disable-next-line:prefer-array-literal */\n this.rtlCharacterTypes = new Array(65536);\n //#endregion\n //#region constants\n /// \n /// Left-to-Right (Non-European or non-Arabic digits).\n /// \n this.L = 0;\n /// \n /// Left-to-Right Embedding\n /// \n this.LRE = 1;\n /// \n /// Left-to-Right Override\n /// \n this.LRO = 2;\n /// \n /// Right-to-Left (Hebrew alphabet, and related punctuation).\n /// \n this.R = 3;\n /// \n /// Right-to-Left Arabic \n /// \n this.AL = 4;\n /// \n /// Right-to-Left Embedding.\n /// \n this.RLE = 5;\n /// \n /// Right-to-Left Override\n /// \n this.RLO = 6;\n /// \n /// Pop Directional Format\n /// \n this.PDF = 7;\n /// \n /// European Number (European digits, Eastern Arabic-Indic digits).\n /// \n this.EN = 8;\n /// \n /// European Number Separator (Plus sign, Minus sign).\n /// \n this.ES = 9;\n /// \n /// European Number Terminator (Degree sign, currency symbols).\n /// \n this.ET = 10;\n /// \n /// Arabic Number (Arabic-Indic digits, Arabic decimal and thousands separators).\n /// \n this.AN = 11;\n /// \n /// Common Number Separator (Colon, Comma, Full Stop, No-Break Space.\n /// \n this.CS = 12;\n /// \n /// Nonspacing Mark (Characters with the General_Category values).\n /// \n this.NSM = 13;\n /// \n /// Boundary Neutral (Default ignorables, non-characters, and control characters, other than those explicitly given other types.)\n /// \n this.BN = 14;\n /// \n /// Paragraph Separator (Paragraph separator, appropriate Newline Functions, higher-level protocol paragraph determination).\n /// \n this.B = 15;\n /// \n /// \tSegment Separator (tab).\n /// \n this.S = 16;\n /// \n /// Whitespace (Space, Figure space, Line separator, Form feed, General Punctuation spaces).\n /// \n this.WS = 17;\n /// \n /// Other Neutrals (All other characters, including object replacement character).\n /// \n this.ON = 18;\n /// \n /// RTL character types.\n /// \n this.charTypes = [\n this.L, this.EN, this.BN, this.ES, this.ES, this.S, this.ET, this.ET, this.B, this.AN, this.AN, this.S, this.CS, this.CS,\n this.WS, this.NSM, this.NSM, this.B, this.BN, 27, this.BN, 28, 30, this.B, 31, 31, this.S, 32, 32, this.WS, 33, 34,\n this.ON, 35, 37, this.ET, 38, 42, this.ON, 43, 43, this.ET, 44, 44, this.CS, 45, 45, this.ET, 46, 46, this.CS,\n 47, 47, this.CS, 48, 57, this.EN, 58, 58, this.CS, 59, 64, this.ON, 65, 90, this.L, 91, 96, this.ON, 97, 122, this.L,\n 123, 126, this.ON, 127, 132, this.BN, 133, 133, this.B, 134, 159, this.BN, 160, 160, this.CS,\n 161, 161, this.ON, 162, 165, this.ET, 166, 169, this.ON, 170, 170, this.L, 171, 175, this.ON,\n 176, 177, this.ET, 178, 179, this.EN, 180, 180, this.ON, 181, 181, this.L, 182, 184, this.ON,\n 185, 185, this.EN, 186, 186, this.L, 187, 191, this.ON, 192, 214, this.L, 215, 215, this.ON,\n 216, 246, this.L, 247, 247, this.ON, 248, 696, this.L, 697, 698, this.ON, 699, 705, this.L,\n 706, 719, this.ON, 720, 721, this.L, 722, 735, this.ON, 736, 740, this.L, 741, 749, this.ON,\n 750, 750, this.L, 751, 767, this.ON, 768, 855, this.NSM, 856, 860, this.L, 861, 879, this.NSM,\n 880, 883, this.L, 884, 885, this.ON, 886, 893, this.L, 894, 894, this.ON, 895, 899, this.L,\n 900, 901, this.ON, 902, 902, this.L, 903, 903, this.ON, 904, 1013, this.L, 1014, 1014, this.ON,\n 1015, 1154, this.L, 1155, 1158, this.NSM, 1159, 1159, this.L, 1160, 1161, this.NSM,\n 1162, 1417, this.L, 1418, 1418, this.ON, 1419, 1424, this.L, 1425, 1441, this.NSM,\n 1442, 1442, this.L, 1443, 1465, this.NSM, 1466, 1466, this.L, 1467, 1469, this.NSM,\n 1470, 1470, this.R, 1471, 1471, this.NSM, 1472, 1472, this.R, 1473, 1474, this.NSM,\n 1475, 1475, this.R, 1476, 1476, this.NSM, 1477, 1487, this.L, 1488, 1514, this.R,\n 1515, 1519, this.L, 1520, 1524, this.R, 1525, 1535, this.L, 1536, 1539, this.AL,\n 1540, 1547, this.L, 1548, 1548, this.CS, 1549, 1549, this.AL, 1550, 1551, this.ON,\n 1552, 1557, this.NSM, 1558, 1562, this.L, 1563, 1563, this.AL, 1564, 1566, this.L,\n 1567, 1567, this.AL, 1568, 1568, this.L, 1569, 1594, this.AL, 1595, 1599, this.L,\n 1600, 1610, this.AL, 1611, 1624, this.NSM, 1625, 1631, this.L, 1632, 1641, this.AN,\n 1642, 1642, this.ET, 1643, 1644, this.AN, 1645, 1647, this.AL, 1648, 1648, this.NSM,\n 1649, 1749, this.AL, 1750, 1756, this.NSM, 1757, 1757, this.AL, 1758, 1764, this.NSM,\n 1765, 1766, this.AL, 1767, 1768, this.NSM, 1769, 1769, this.ON, 1770, 1773, this.NSM,\n 1774, 1775, this.AL, 1776, 1785, this.EN, 1786, 1805, this.AL, 1806, 1806, this.L,\n 1807, 1807, this.BN, 1808, 1808, this.AL, 1809, 1809, this.NSM, 1810, 1839, this.AL,\n 1840, 1866, this.NSM, 1867, 1868, this.L, 1869, 1871, this.AL, 1872, 1919, this.L,\n 1920, 1957, this.AL, 1958, 1968, this.NSM, 1969, 1969, this.AL, 1970, 2304, this.L,\n 2305, 2306, this.NSM, 2307, 2363, this.L, 2364, 2364, this.NSM, 2365, 2368, this.L,\n 2369, 2376, this.NSM, 2377, 2380, this.L, 2381, 2381, this.NSM, 2382, 2384, this.L,\n 2385, 2388, this.NSM, 2389, 2401, this.L, 2402, 2403, this.NSM, 2404, 2432, this.L,\n 2433, 2433, this.NSM, 2434, 2491, this.L, 2492, 2492, this.NSM, 2493, 2496, this.L,\n 2497, 2500, this.NSM, 2501, 2508, this.L, 2509, 2509, this.NSM, 2510, 2529, this.L,\n 2530, 2531, this.NSM, 2532, 2545, this.L, 2546, 2547, this.ET, 2548, 2560, this.L,\n 2561, 2562, this.NSM, 2563, 2619, this.L, 2620, 2620, this.NSM, 2621, 2624, this.L,\n 2625, 2626, this.NSM, 2627, 2630, this.L, 2631, 2632, this.NSM, 2633, 2634, this.L,\n 2635, 2637, this.NSM, 2638, 2671, this.L, 2672, 2673, this.NSM, 2674, 2688, this.L,\n 2689, 2690, this.NSM, 2691, 2747, this.L, 2748, 2748, this.NSM, 2749, 2752, this.L,\n 2753, 2757, this.NSM, 2758, 2758, this.L, 2759, 2760, this.NSM, 2761, 2764, this.L,\n 2765, 2765, this.NSM, 2766, 2785, this.L, 2786, 2787, this.NSM, 2788, 2800, this.L,\n 2801, 2801, this.ET, 2802, 2816, this.L, 2817, 2817, this.NSM, 2818, 2875, this.L,\n 2876, 2876, this.NSM, 2877, 2878, this.L, 2879, 2879, this.NSM, 2880, 2880, this.L,\n 2881, 2883, this.NSM, 2884, 2892, this.L, 2893, 2893, this.NSM, 2894, 2901, this.L,\n 2902, 2902, this.NSM, 2903, 2945, this.L, 2946, 2946, this.NSM, 2947, 3007, this.L,\n 3008, 3008, this.NSM, 3009, 3020, this.L, 3021, 3021, this.NSM, 3022, 3058, this.L,\n 3059, 3064, this.ON, 3065, 3065, this.ET, 3066, 3066, this.ON, 3067, 3133, this.L,\n 3134, 3136, this.NSM, 3137, 3141, this.L, 3142, 3144, this.NSM, 3145, 3145, this.L,\n 3146, 3149, this.NSM, 3150, 3156, this.L, 3157, 3158, this.NSM, 3159, 3259, this.L,\n 3260, 3260, this.NSM, 3261, 3275, this.L, 3276, 3277, this.NSM, 3278, 3392, this.L,\n 3393, 3395, this.NSM, 3396, 3404, this.L, 3405, 3405, this.NSM, 3406, 3529, this.L,\n 3530, 3530, this.NSM, 3531, 3537, this.L, 3538, 3540, this.NSM, 3541, 3541, this.L,\n 3542, 3542, this.NSM, 3543, 3632, this.L, 3633, 3633, this.NSM, 3634, 3635, this.L,\n 3636, 3642, this.NSM, 3643, 3646, this.L, 3647, 3647, this.ET, 3648, 3654, this.L,\n 3655, 3662, this.NSM, 3663, 3760, this.L, 3761, 3761, this.NSM, 3762, 3763, this.L,\n 3764, 3769, this.NSM, 3770, 3770, this.L, 3771, 3772, this.NSM, 3773, 3783, this.L,\n 3784, 3789, this.NSM, 3790, 3863, this.L, 3864, 3865, this.NSM, 3866, 3892, this.L,\n 3893, 3893, this.NSM, 3894, 3894, this.L, 3895, 3895, this.NSM, 3896, 3896, this.L,\n 3897, 3897, this.NSM, 3898, 3901, this.ON, 3902, 3952, this.L, 3953, 3966, this.NSM,\n 3967, 3967, this.L, 3968, 3972, this.NSM, 3973, 3973, this.L, 3974, 3975, this.NSM,\n 3976, 3983, this.L, 3984, 3991, this.NSM, 3992, 3992, this.L, 3993, 4028, this.NSM,\n 4029, 4037, this.L, 4038, 4038, this.NSM, 4039, 4140, this.L, 4141, 4144, this.NSM,\n 4145, 4145, this.L, 4146, 4146, this.NSM, 4147, 4149, this.L, 4150, 4151, this.NSM,\n 4152, 4152, this.L, 4153, 4153, this.NSM, 4154, 4183, this.L, 4184, 4185, this.NSM,\n 4186, 5759, this.L, 5760, 5760, this.WS, 5761, 5786, this.L, 5787, 5788, this.ON,\n 5789, 5905, this.L, 5906, 5908, this.NSM, 5909, 5937, this.L, 5938, 5940, this.NSM,\n 5941, 5969, this.L, 5970, 5971, this.NSM, 5972, 6001, this.L, 6002, 6003, this.NSM,\n 6004, 6070, this.L, 6071, 6077, this.NSM, 6078, 6085, this.L, 6086, 6086, this.NSM,\n 6087, 6088, this.L, 6089, 6099, this.NSM, 6100, 6106, this.L, 6107, 6107, this.ET,\n 6108, 6108, this.L, 6109, 6109, this.NSM, 6110, 6127, this.L, 6128, 6137, this.ON,\n 6138, 6143, this.L, 6144, 6154, this.ON, 6155, 6157, this.NSM, 6158, 6158, this.WS,\n 6159, 6312, this.L, 6313, 6313, this.NSM, 6314, 6431, this.L, 6432, 6434, this.NSM,\n 6435, 6438, this.L, 6439, 6443, this.NSM, 6444, 6449, this.L, 6450, 6450, this.NSM,\n 6451, 6456, this.L, 6457, 6459, this.NSM, 6460, 6463, this.L, 6464, 6464, this.ON,\n 6465, 6467, this.L, 6468, 6469, this.ON, 6470, 6623, this.L, 6624, 6655, this.ON,\n 6656, 8124, this.L, 8125, 8125, this.ON, 8126, 8126, this.L, 8127, 8129, this.ON,\n 8130, 8140, this.L, 8141, 8143, this.ON, 8144, 8156, this.L, 8157, 8159, this.ON,\n 8160, 8172, this.L, 8173, 8175, this.ON, 8176, 8188, this.L, 8189, 8190, this.ON,\n 8191, 8191, this.L, 8192, 8202, this.WS, 8203, 8205, this.BN, 8206, 8206, this.L,\n 8207, 8207, this.R, 8208, 8231, this.ON, 8232, 8232, this.WS, 8233, 8233, this.B,\n 8234, 8234, this.LRE, 8235, 8235, this.RLE, 8236, 8236, this.PDF, 8237, 8237, this.LRO,\n 8238, 8238, this.RLO, 8239, 8239, this.WS, 8240, 8244, this.ET, 8245, 8276, this.ON,\n 8277, 8278, this.L, 8279, 8279, this.ON, 8280, 8286, this.L, 8287, 8287, this.WS,\n 8288, 8291, this.BN, 8292, 8297, this.L, 8298, 8303, this.BN, 8304, 8304, this.EN,\n 8305, 8307, this.L, 8308, 8313, this.EN, 8314, 8315, this.ET, 8316, 8318, this.ON,\n 8319, 8319, this.L, 8320, 8329, this.EN, 8330, 8331, this.ET, 8332, 8334, this.ON,\n 8335, 8351, this.L, 8352, 8369, this.ET, 8370, 8399, this.L, 8400, 8426, this.NSM,\n 8427, 8447, this.L, 8448, 8449, this.ON, 8450, 8450, this.L, 8451, 8454, this.ON,\n 8455, 8455, this.L, 8456, 8457, this.ON, 8458, 8467, this.L, 8468, 8468, this.ON,\n 8469, 8469, this.L, 8470, 8472, this.ON, 8473, 8477, this.L, 8478, 8483, this.ON,\n 8484, 8484, this.L, 8485, 8485, this.ON, 8486, 8486, this.L, 8487, 8487, this.ON,\n 8488, 8488, this.L, 8489, 8489, this.ON, 8490, 8493, this.L, 8494, 8494, this.ET,\n 8495, 8497, this.L, 8498, 8498, this.ON, 8499, 8505, this.L, 8506, 8507, this.ON,\n 8508, 8511, this.L, 8512, 8516, this.ON, 8517, 8521, this.L, 8522, 8523, this.ON,\n 8524, 8530, this.L, 8531, 8543, this.ON, 8544, 8591, this.L, 8592, 8721, this.ON,\n 8722, 8723, this.ET, 8724, 9013, this.ON, 9014, 9082, this.L, 9083, 9108, this.ON,\n 9109, 9109, this.L, 9110, 9168, this.ON, 9169, 9215, this.L, 9216, 9254, this.ON,\n 9255, 9279, this.L, 9280, 9290, this.ON, 9291, 9311, this.L, 9312, 9371, this.EN,\n 9372, 9449, this.L, 9450, 9450, this.EN, 9451, 9751, this.ON, 9752, 9752, this.L,\n 9753, 9853, this.ON, 9854, 9855, this.L, 9856, 9873, this.ON, 9874, 9887, this.L,\n 9888, 9889, this.ON, 9890, 9984, this.L, 9985, 9988, this.ON, 9989, 9989, this.L,\n 9990, 9993, this.ON, 9994, 9995, this.L, 9996, 10023, this.ON, 10024, 10024, this.L,\n 10025, 10059, this.ON, 10060, 10060, this.L, 10061, 10061, this.ON, 10062, 10062, this.L,\n 10063, 10066, this.ON, 10067, 10069, this.L, 10070, 10070, this.ON, 10071, 10071, this.L,\n 10072, 10078, this.ON, 10079, 10080, this.L, 10081, 10132, this.ON, 10133, 10135, this.L,\n 10136, 10159, this.ON, 10160, 10160, this.L, 10161, 10174, this.ON, 10175, 10191, this.L,\n 10192, 10219, this.ON, 10220, 10223, this.L, 10224, 11021, this.ON, 11022, 11903, this.L,\n 11904, 11929, this.ON, 11930, 11930, this.L, 11931, 12019, this.ON, 12020, 12031, this.L,\n 12032, 12245, this.ON, 12246, 12271, this.L, 12272, 12283, this.ON, 12284, 12287, this.L,\n 12288, 12288, this.WS, 12289, 12292, this.ON, 12293, 12295, this.L, 12296, 12320, this.ON,\n 12321, 12329, this.L, 12330, 12335, this.NSM, 12336, 12336, this.ON, 12337, 12341, this.L,\n 12342, 12343, this.ON, 12344, 12348, this.L, 12349, 12351, this.ON, 12352, 12440, this.L,\n 12441, 12442, this.NSM, 12443, 12444, this.ON, 12445, 12447, this.L, 12448, 12448, this.ON,\n 12449, 12538, this.L, 12539, 12539, this.ON, 12540, 12828, this.L, 12829, 12830, this.ON,\n 12831, 12879, this.L, 12880, 12895, this.ON, 12896, 12923, this.L, 12924, 12925, this.ON,\n 12926, 12976, this.L, 12977, 12991, this.ON, 12992, 13003, this.L, 13004, 13007, this.ON,\n 13008, 13174, this.L, 13175, 13178, this.ON, 13179, 13277, this.L, 13278, 13279, this.ON,\n 13280, 13310, this.L, 13311, 13311, this.ON, 13312, 19903, this.L, 19904, 19967, this.ON,\n 19968, 42127, this.L, 42128, 42182, this.ON, 42183, 64284, this.L, 64285, 64285, this.R,\n 64286, 64286, this.NSM, 64287, 64296, this.R, 64297, 64297, this.ET, 64298, 64310, this.R,\n 64311, 64311, this.L, 64312, 64316, this.R, 64317, 64317, this.L, 64318, 64318, this.R,\n 64319, 64319, this.L, 64320, 64321, this.R, 64322, 64322, this.L, 64323, 64324, this.R,\n 64325, 64325, this.L, 64326, 64335, this.R, 64336, 64433, this.AL, 64434, 64466, this.L,\n 64467, 64829, this.AL, 64830, 64831, this.ON, 64832, 64847, this.L, 64848, 64911, this.AL,\n 64912, 64913, this.L, 64914, 64967, this.AL, 64968, 65007, this.L, 65008, 65020, this.AL,\n 65021, 65021, this.ON, 65022, 65023, this.L, 65024, 65039, this.NSM, 65040, 65055, this.L,\n 65056, 65059, this.NSM, 65060, 65071, this.L, 65072, 65103, this.ON, 65104, 65104, this.CS,\n 65105, 65105, this.ON, 65106, 65106, this.CS, 65107, 65107, this.L, 65108, 65108, this.ON,\n 65109, 65109, this.CS, 65110, 65118, this.ON, 65119, 65119, this.ET, 65120, 65121, this.ON,\n 65122, 65123, this.ET, 65124, 65126, this.ON, 65127, 65127, this.L, 65128, 65128, this.ON,\n 65129, 65130, this.ET, 65131, 65131, this.ON, 65132, 65135, this.L, 65136, 65140, this.AL,\n 65141, 65141, this.L, 65142, 65276, this.AL, 65277, 65278, this.L, 65279, 65279, this.BN,\n 65280, 65280, this.L, 65281, 65282, this.ON, 65283, 65285, this.ET, 65286, 65290, this.ON,\n 65291, 65291, this.ET, 65292, 65292, this.CS, 65293, 65293, this.ET, 65294, 65294, this.CS,\n 65295, 65295, this.ES, 65296, 65305, this.EN, 65306, 65306, this.CS, 65307, 65312, this.ON,\n 65313, 65338, this.L, 65339, 65344, this.ON, 65345, 65370, this.L, 65371, 65381, this.ON,\n 65382, 65503, this.L, 65504, 65505, this.ET, 65506, 65508, this.ON, 65509, 65510, this.ET,\n 65511, 65511, this.L, 65512, 65518, this.ON, 65519, 65528, this.L, 65529, 65531, this.BN,\n 65532, 65533, this.ON, 65534, 65535, this.L\n ];\n for (var i = 0; i < this.charTypes.length; ++i) {\n var start = this.charTypes[i];\n var end = this.charTypes[++i];\n var b = this.charTypes[++i];\n while (start <= end) {\n this.rtlCharacterTypes[start++] = b;\n }\n }\n }\n //#endregion\n //#region implementation\n RtlCharacters.prototype.getVisualOrder = function (inputText, isRtl) {\n this.types = this.getCharacterCode(inputText);\n this.textOrder = isRtl ? this.LRE : this.L;\n this.doVisualOrder();\n var result = [];\n for (var i = 0; i < this.levels.length; i++) {\n result[i] = this.levels[i];\n }\n return result;\n };\n RtlCharacters.prototype.getCharacterCode = function (text) {\n var characterCodes = [];\n for (var i = 0; i < text.length; i++) {\n characterCodes[i] = this.rtlCharacterTypes[text[i].charCodeAt(0)];\n }\n return characterCodes;\n };\n RtlCharacters.prototype.setDefaultLevels = function () {\n for (var i = 0; i < this.length; i++) {\n this.levels[i] = this.textOrder;\n }\n };\n RtlCharacters.prototype.setLevels = function () {\n this.setDefaultLevels();\n for (var n = 0; n < this.length; ++n) {\n var level = this.levels[n];\n if ((level & 0x80) !== 0) {\n level &= 0x7f;\n this.result[n] = ((level & 0x1) === 0) ? this.L : this.R;\n }\n this.levels[n] = level;\n }\n };\n RtlCharacters.prototype.updateLevels = function (index, level, length) {\n if ((level & 1) === 0) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.R) {\n this.levels[i] += 1;\n }\n else if (this.result[i] !== this.L) {\n this.levels[i] += 2;\n }\n }\n }\n else {\n for (var i = index; i < length; ++i) {\n if (this.result[i] !== this.R) {\n this.levels[i] += 1;\n }\n }\n }\n };\n RtlCharacters.prototype.doVisualOrder = function () {\n this.length = this.types.length;\n this.result = this.types;\n this.levels = [];\n this.setLevels();\n this.length = this.getEmbeddedCharactersLength();\n var preview = this.textOrder;\n var i = 0;\n while (i < this.length) {\n var level = this.levels[i];\n var preType = ((Math.max(preview, level) & 0x1) === 0) ? this.L : this.R;\n var length_1 = i + 1;\n while (length_1 < this.length && this.levels[length_1] === level) {\n ++length_1;\n }\n var success = length_1 < this.length ? this.levels[length_1] : this.textOrder;\n var type = ((Math.max(success, level) & 0x1) === 0) ? this.L : this.R;\n this.checkNSM(i, length_1, level, preType, type);\n this.updateLevels(i, level, length_1);\n preview = level;\n i = length_1;\n }\n this.checkEmbeddedCharacters(this.length);\n };\n RtlCharacters.prototype.getEmbeddedCharactersLength = function () {\n var index = 0;\n for (var i = 0; i < this.length; ++i) {\n if (!(this.types[i] === this.LRE || this.types[i] === this.RLE || this.types[i] === this.LRO ||\n this.types[i] === this.RLO || this.types[i] === this.PDF || this.types[i] === this.BN)) {\n this.result[index] = this.result[i];\n this.levels[index] = this.levels[i];\n index++;\n }\n }\n return index;\n };\n RtlCharacters.prototype.checkEmbeddedCharacters = function (length) {\n for (var i = this.types.length - 1; i >= 0; --i) {\n if (this.types[i] === this.LRE || this.types[i] === this.RLE || this.types[i] === this.LRO ||\n this.types[i] === this.RLO || this.types[i] === this.PDF || this.types[i] === this.BN) {\n this.result[i] = this.types[i];\n this.levels[i] = -1;\n }\n else {\n length -= 1;\n this.result[i] = this.result[length];\n this.levels[i] = this.levels[length];\n }\n }\n for (var i = 0; i < this.types.length; i++) {\n if (this.levels[i] === -1) {\n if (i === 0) {\n this.levels[i] = this.textOrder;\n }\n else {\n this.levels[i] = this.levels[i - 1];\n }\n }\n }\n };\n RtlCharacters.prototype.checkNSM = function (index, length, level, startType, endType) {\n var charType = startType;\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.NSM) {\n this.result[i] = charType;\n }\n else {\n charType = this.result[i];\n }\n }\n this.checkEuropeanDigits(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanDigits = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.EN) {\n for (var j = i - 1; j >= index; --j) {\n if (this.result[j] === this.L || this.result[j] === this.R || this.result[j] === this.AL) {\n if (this.result[j] === this.AL) {\n this.result[i] = this.AN;\n }\n break;\n }\n }\n }\n }\n this.checkArabicCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkArabicCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.AL) {\n this.result[i] = this.R;\n }\n }\n this.checkEuropeanNumberSeparator(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanNumberSeparator = function (index, length, level, startType, endType) {\n for (var i = index + 1; i < length - 1; ++i) {\n if (this.result[i] === this.ES || this.result[i] === this.CS) {\n var preview = this.result[i - 1];\n var success = this.result[i + 1];\n if (preview === this.EN && success === this.EN) {\n this.result[i] = this.EN;\n }\n else if (this.result[i] === this.CS && preview === this.AN && success === this.AN) {\n this.result[i] = this.AN;\n }\n }\n }\n this.checkEuropeanNumberTerminator(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanNumberTerminator = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.ET) {\n var s = i;\n var b = [];\n b.push(this.ET);\n var l = this.getLength(s, length, b);\n var data = s === index ? startType : this.result[s - 1];\n if (data !== this.EN) {\n data = (l === length) ? endType : this.result[l];\n }\n if (data === this.EN) {\n for (var j = s; j < l; ++j) {\n this.result[j] = this.EN;\n }\n }\n i = l;\n }\n }\n this.checkOtherNeutrals(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkOtherNeutrals = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.ES || this.result[i] === this.ET || this.result[i] === this.CS) {\n this.result[i] = this.ON;\n }\n }\n this.checkOtherCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkOtherCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.EN) {\n var pst = startType;\n for (var j = i - 1; j >= index; --j) {\n if (this.result[j] === this.L || this.result[j] === this.R) {\n pst = this.result[j];\n break;\n }\n }\n if (pst === this.L) {\n this.result[i] = this.L;\n }\n }\n }\n this.checkCommanCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.getLength = function (index, length, validSet) {\n --index;\n while (++index < length) {\n var t = this.result[index];\n for (var i = 0; i < validSet.length; ++i) {\n if (t === validSet[i]) {\n index = this.getLength(++index, length, validSet);\n }\n }\n return index;\n }\n return length;\n };\n RtlCharacters.prototype.checkCommanCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.WS || this.result[i] === this.ON || this.result[i] === this.B ||\n this.result[i] === this.S) {\n var s = i;\n var byte = [this.B, this.S, this.WS, this.ON];\n var l = this.getLength(s, length, byte);\n var lt = 0;\n var tt = 0;\n var rt = 0;\n if (s === index) {\n lt = startType;\n }\n else {\n lt = this.result[s - 1];\n if (lt === this.AN) {\n lt = this.R;\n }\n else if (lt === this.EN) {\n lt = this.R;\n }\n }\n if (l === length) {\n tt = endType;\n }\n else {\n tt = this.result[l];\n if (tt === this.AN) {\n tt = this.R;\n }\n else if (tt === this.EN) {\n tt = this.R;\n }\n }\n if (lt === tt) {\n rt = lt;\n }\n else {\n rt = ((level & 0x1) === 0) ? this.L : this.R;\n }\n for (var j = s; j < l; ++j) {\n this.result[j] = rt;\n }\n i = l;\n }\n }\n };\n return RtlCharacters;\n}());\nexport { RtlCharacters };\n","import { PdfString } from './../../primitives/pdf-string';\nimport { ArabicShapeRenderer } from './rtl/rtl-text-shape';\nimport { PdfTextDirection } from './../enum';\nimport { Bidi } from './rtl/rtl-bidirectional';\n/**\n * `Metrics` of the font.\n * @private\n */\nvar RtlRenderer = /** @class */ (function () {\n function RtlRenderer() {\n //region Constants\n /// Open bracket symbol.\n /// \n this.openBracket = '(';\n /// \n /// Close bracket symbol.\n /// \n this.closeBracket = ')';\n //#endregion\n }\n //#region Constructors\n /// \n /// Initializes a new instance of the class.\n /// \n // public constructor() {\n // }\n //#region Public Methods\n /// \n /// Layouts text. Changes blocks position in the RTL text.\n /// Ligates the text if needed.\n /// \n /// Line of the text.\n /// Font to be used for string printing.\n /// Font alignment.\n /// Indicates whether Word Spacing used or not.\n /// Layout string.\n RtlRenderer.prototype.layout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var result = [];\n if (font.Unicode) {\n result = this.customLayout(line, rtl, format, font, wordSpace);\n }\n else {\n result = [];\n result[0] = line;\n }\n return result;\n };\n /// \n /// Layouts a string and splits it by the words and using correct lay outing.\n /// \n /// Text line.\n /// Font object.\n /// Indicates whether RTL should be applied.\n /// Indicates whether word spacing is used.\n /// Array of words if converted, null otherwise.\n RtlRenderer.prototype.splitLayout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var words = [];\n var system = false;\n if (!system || words == null) {\n words = this.customSplitLayout(line, font, rtl, wordSpace, format);\n }\n return words;\n };\n //#endregion\n //#region Implementation\n // private isEnglish( word : string) : boolean\n // {\n // let c : string = (word.length > 0) ? word[0] : '';\n // return (c >= '0' && c < 'ÿ');\n // }\n // private keepOrder( words : string, startIndex : number, count: number, result : string[], resultIndex : number) : void\n // {\n // for (let i : number = 0, ri = resultIndex - count + 1; i < count; ++i, ++ri) {\n // result[ri] = words[i + startIndex];\n // }\n // }\n /// \n /// Uses system API to layout the text.\n /// \n /// Line of the text to be layouted.\n /// Font which is used for text printing.\n /// Indicates whether we use RTL or RTL lay outing of the text container.\n /// Layout string.\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.getGlyphIndex = function (line, font, rtl, /*out*/ glyphs, custom) {\n var success = true;\n var fail = false;\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n glyphs = null;\n if (line.length === 0) {\n return { success: fail, glyphs: glyphs };\n }\n var renderer = new ArabicShapeRenderer();\n var text = renderer.shape(line, 0);\n var internalFont = font.fontInternal;\n var ttfReader = internalFont.ttfReader;\n glyphs = new Uint16Array(text.length);\n var i = 0;\n for (var k = 0, len = text.length; k < len; k++) {\n var ch = text[k];\n var glyphInfo = ttfReader.getGlyph(ch);\n if (glyphInfo !== null && typeof glyphInfo !== 'undefined') {\n glyphs[i++] = (glyphInfo).index;\n }\n }\n return { success: success, glyphs: glyphs };\n };\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.customLayout = function (line, rtl, format, font, wordSpace) {\n if (wordSpace === null || typeof wordSpace === 'undefined') {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n var result = null;\n //bidirectional order.\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n var bidi = new Bidi();\n result = bidi.getLogicalToVisualString(line, rtl);\n }\n return result;\n }\n else {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var layouted = null;\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n var renderer = new ArabicShapeRenderer();\n var txt = renderer.shape(line, 0);\n layouted = this.customLayout(txt, rtl, format);\n }\n // else {\n // layouted = this.customLayout(line, rtl, format);\n // }\n // We have unicode font, but from the file. \n var result = [];\n // Split the text by words if word spacing is not default.\n if (wordSpace) {\n var words = layouted.split('');\n var count = words.length;\n for (var i = 0; i < count; i++) {\n words[i] = this.addChars(font, words[i]);\n }\n result = words;\n }\n else {\n result = [];\n result[0] = this.addChars(font, layouted);\n }\n return result;\n }\n };\n /// \n /// Add information about used glyphs to the font.\n /// \n /// Font used for text rendering.\n /// Array of used glyphs.\n /// String in the form to be written to the file.\n RtlRenderer.prototype.addChars = function (font, glyphs) {\n var line = glyphs;\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n var text = line;\n var internalFont = font.fontInternal;\n var ttfReader = internalFont.ttfReader;\n font.setSymbols(text);\n // Reconvert string according to unicode standard.\n text = ttfReader.convertString(text);\n var bytes = PdfString.toUnicodeArray(text, false);\n text = PdfString.byteToString(bytes);\n return text;\n // else {\n // if (font == null) {\n // throw new Error('ArgumentNullException : font');\n // }\n // if (glyphs == null) {\n // throw new Error('ArgumentNullException : glyphs');\n // }\n // // Mark the chars as used.\n // let text : string = '';\n // font.setSymbols(glyphs);\n // // Create string from the glyphs.\n // \n // let chars : string[] = [];\n // for (let i : number = 0; i < glyphs.length; i++) {\n // chars[i] = glyphs[i].toString();\n // }\n // for (let j : number = 0 ; j < chars.length; j++) {\n // text = text + chars[j];\n // }\n // let bytes : number[] = PdfString.toUnicodeArray(text, false);\n // text = PdfString.byteToString(bytes);\n // return text;\n // }\n };\n /// \n /// Layouts a string and splits it by the words by using custom lay outing.\n /// \n /// Text line.\n /// Font object.\n /// Indicates whether RTL should be applied.\n /// Indicates whether word spacing is used.\n /// Array of words if converted, null otherwise.\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.customSplitLayout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var reversedLine = this.customLayout(line, rtl, format);\n var words = reversedLine.split('');\n return words;\n };\n return RtlRenderer;\n}());\nexport { RtlRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfColorSpace } from './../enum';\nimport { PdfColor } from './../pdf-color';\nimport { PdfBrush } from './pdf-brush';\nimport { PdfDictionary } from '../../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfBoolean } from './../../primitives/pdf-boolean';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfName } from '../../primitives/pdf-name';\nimport { PdfNumber } from '../../primitives/pdf-number';\nimport { PdfReferenceHolder } from '../../primitives/pdf-reference';\n/**\n * `PdfGradientBrush` class provides objects used to fill the interiors of graphical shapes such as rectangles,\n * ellipses, pies, polygons, and paths.\n * @private\n */\nvar PdfGradientBrush = /** @class */ (function (_super) {\n __extends(PdfGradientBrush, _super);\n //Constructor\n /**\n * Initializes a new instance of the `PdfGradientBrush` class.\n * @public\n */\n /* tslint:disable-next-line:max-line-length */\n function PdfGradientBrush(shading) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Local variable to store the background color.\n * @private\n */\n _this.mbackground = new PdfColor(255, 255, 255);\n /**\n * Local variable to store the stroking color.\n * @private\n */\n _this.mbStroking = false;\n /**\n * Local variable to store the function.\n * @private\n */\n _this.mfunction = null;\n /**\n * Local variable to store the DictionaryProperties.\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n _this.mpatternDictionary = new PdfDictionary();\n _this.mpatternDictionary.items.setValue(_this.dictionaryProperties.type, new PdfName(_this.dictionaryProperties.pattern));\n _this.mpatternDictionary.items.setValue(_this.dictionaryProperties.patternType, new PdfNumber(2));\n _this.shading = shading;\n _this.colorSpace = PdfColorSpace.Rgb;\n return _this;\n }\n Object.defineProperty(PdfGradientBrush.prototype, \"background\", {\n //Properties\n /**\n * Gets or sets the background color of the brush.\n * @public\n */\n get: function () {\n return this.mbackground;\n },\n set: function (value) {\n this.mbackground = value;\n var sh = this.shading;\n if (value.isEmpty) {\n sh.remove(this.dictionaryProperties.background);\n }\n else {\n sh.items.setValue(this.dictionaryProperties.background, value.toArray(this.colorSpace));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"antiAlias\", {\n /**\n * Gets or sets a value indicating whether use anti aliasing algorithm.\n * @public\n */\n get: function () {\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n return aa.value;\n },\n set: function (value) {\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n if ((aa == null && typeof aa === 'undefined')) {\n aa = new PdfBoolean(value);\n sh.items.setValue(this.dictionaryProperties.antiAlias, aa);\n }\n else {\n aa.value = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"function\", {\n /**\n * Gets or sets the function of the brush.\n * @protected\n */\n get: function () {\n return this.mfunction;\n },\n set: function (value) {\n this.mfunction = value;\n if (value != null && typeof value !== 'undefined') {\n this.shading.items.setValue(this.dictionaryProperties.function, new PdfReferenceHolder(this.mfunction));\n }\n else {\n this.shading.remove(this.dictionaryProperties.function);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"bBox\", {\n /**\n * Gets or sets the boundary box of the brush.\n * @protected\n */\n get: function () {\n var sh = this.shading;\n var box = (sh.items.getValue(this.dictionaryProperties.bBox));\n return box;\n },\n set: function (value) {\n var sh = this.shading;\n if (value == null && typeof value === 'undefined') {\n sh.remove(this.dictionaryProperties.bBox);\n }\n else {\n sh.items.setValue(this.dictionaryProperties.bBox, value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"colorSpace\", {\n /**\n * Gets or sets the color space of the brush.\n * @public\n */\n get: function () {\n return this.mcolorSpace;\n },\n set: function (value) {\n var colorSpace = this.shading.items.getValue(this.dictionaryProperties.colorSpace);\n if ((value !== this.mcolorSpace) || (colorSpace == null)) {\n this.mcolorSpace = value;\n var csValue = this.colorSpaceToDeviceName(value);\n this.shading.items.setValue(this.dictionaryProperties.colorSpace, new PdfName(csValue));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"stroking\", {\n /**\n * Gets or sets a value indicating whether this PdfGradientBrush is stroking.\n * @public\n */\n get: function () {\n return this.mbStroking;\n },\n set: function (value) {\n this.mbStroking = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"patternDictionary\", {\n /**\n * Gets the pattern dictionary.\n * @protected\n */\n get: function () {\n if (this.mpatternDictionary == null) {\n this.mpatternDictionary = new PdfDictionary();\n }\n return this.mpatternDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"shading\", {\n /**\n * Gets or sets the shading dictionary.\n * @protected\n */\n get: function () {\n return this.mshading;\n },\n set: function (value) {\n if (value == null) {\n throw new Error('ArgumentNullException : Shading');\n }\n if (value !== this.mshading) {\n this.mshading = value;\n this.patternDictionary.items.setValue(this.dictionaryProperties.shading, new PdfReferenceHolder(this.mshading));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"matrix\", {\n /**\n * Gets or sets the transformation matrix.\n * @public\n */\n get: function () {\n return this.mmatrix;\n },\n set: function (value) {\n if (value == null) {\n throw new Error('ArgumentNullException : Matrix');\n }\n if (value !== this.mmatrix) {\n this.mmatrix = value.clone();\n var m = new PdfArray(this.mmatrix.matrix.elements);\n this.mpatternDictionary.items.setValue(this.dictionaryProperties.matrix, m);\n }\n },\n enumerable: true,\n configurable: true\n });\n //Overrides\n /**\n * Monitors the changes of the brush and modify PDF state respectfully.\n * @param brush The brush.\n * @param streamWriter The stream writer.\n * @param getResources The get resources delegate.\n * @param saveChanges if set to true the changes should be saved anyway.\n * @param currentColorSpace The current color space.\n */\n /* tslint:disable-next-line:max-line-length */\n PdfGradientBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n var diff = false;\n if (brush instanceof PdfGradientBrush) {\n if ((this.colorSpace !== currentColorSpace)) {\n this.colorSpace = currentColorSpace;\n this.resetFunction();\n }\n // Set the /Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mbStroking);\n // Set the pattern for non-stroking operations.\n var resources = getResources.getResources();\n var name_1 = resources.getName(this);\n streamWriter.setColourWithPattern(null, name_1, this.mbStroking);\n diff = true;\n }\n return diff;\n };\n /**\n * Resets the changes, which were made by the brush.\n * In other words resets the state to the initial one.\n * @param streamWriter The stream writer.\n */\n PdfGradientBrush.prototype.resetChanges = function (streamWriter) {\n // Unable reset.\n };\n //Implementation\n /**\n * Converts colorspace enum to a PDF name.\n * @param colorSpace The color space enum value.\n */\n PdfGradientBrush.prototype.colorSpaceToDeviceName = function (colorSpace) {\n var result;\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n result = 'DeviceRGB';\n break;\n }\n return result;\n };\n /**\n * Resets the pattern dictionary.\n * @param dictionary A new pattern dictionary.\n */\n PdfGradientBrush.prototype.resetPatternDictionary = function (dictionary) {\n this.mpatternDictionary = dictionary;\n };\n /**\n * Clones the anti aliasing value.\n * @param brush The brush.\n */\n PdfGradientBrush.prototype.cloneAntiAliasingValue = function (brush) {\n if ((brush == null)) {\n throw new Error('ArgumentNullException : brush');\n }\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n if ((aa != null)) {\n brush.shading.items.setValue(this.dictionaryProperties.antiAlias, new PdfBoolean(aa.value));\n }\n };\n /**\n * Clones the background value.\n * @param brush The brush.\n */\n PdfGradientBrush.prototype.cloneBackgroundValue = function (brush) {\n var background = this.background;\n if (!background.isEmpty) {\n brush.background = background;\n }\n };\n Object.defineProperty(PdfGradientBrush.prototype, \"element\", {\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.patternDictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGradientBrush;\n}(PdfBrush));\nexport { PdfGradientBrush };\n","/**\n * ImageDecoder class\n */\nimport { ByteArray } from './byte-array';\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../../primitives/pdf-name';\nimport { PdfNumber } from './../../primitives/pdf-number';\nimport { PdfBoolean } from './../../primitives/pdf-boolean';\nimport { PdfDictionary } from './../../primitives/pdf-dictionary';\n/**\n * Specifies the image `format`.\n * @private\n */\nexport var ImageFormat;\n(function (ImageFormat) {\n /**\n * Specifies the type of `Unknown`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * Specifies the type of `Bmp`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Bmp\"] = 1] = \"Bmp\";\n /**\n * Specifies the type of `Emf`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Emf\"] = 2] = \"Emf\";\n /**\n * Specifies the type of `Gif`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Gif\"] = 3] = \"Gif\";\n /**\n * Specifies the type of `Jpeg`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Jpeg\"] = 4] = \"Jpeg\";\n /**\n * Specifies the type of `Png`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Png\"] = 5] = \"Png\";\n /**\n * Specifies the type of `Wmf`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Wmf\"] = 6] = \"Wmf\";\n /**\n * Specifies the type of `Icon`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Icon\"] = 7] = \"Icon\";\n})(ImageFormat || (ImageFormat = {}));\n/**\n * `Decode the image stream`.\n * @private\n */\nvar ImageDecoder = /** @class */ (function () {\n /**\n * Initialize the new instance for `image-decoder` class.\n * @private\n */\n function ImageDecoder(stream) {\n /**\n * Start of file markers.\n * @hidden\n * @private\n */\n this.sof1Marker = 0x00C1;\n this.sof2Marker = 0x00C2;\n this.sof3Marker = 0x00C3;\n this.sof5Marker = 0x00C5;\n this.sof6Marker = 0x00C6;\n this.sof7Marker = 0x00C7;\n this.sof9Marker = 0x00C9;\n this.sof10Marker = 0x00CA;\n this.sof11Marker = 0x00CB;\n this.sof13Marker = 0x00CD;\n this.sof14Marker = 0x00CE;\n this.sof15Marker = 0x00CF;\n /**\n * Specifies `format` of image.\n * @hidden\n * @private\n */\n this.mFormat = ImageFormat.Unknown;\n /**\n * `Bits per component`.\n * @default 8\n * @hidden\n * @private\n */\n this.mbitsPerComponent = 8;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.mStream = stream;\n this.initialize();\n }\n Object.defineProperty(ImageDecoder.prototype, \"height\", {\n /**\n * Gets the `height` of image.\n * @hidden\n * @private\n */\n get: function () {\n return this.mHeight;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"width\", {\n /**\n * Gets the `width` of image.\n * @hidden\n * @private\n */\n get: function () {\n return this.mWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"bitsPerComponent\", {\n /**\n * Gets `bits per component`.\n * @hidden\n * @private\n */\n get: function () {\n return this.mbitsPerComponent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"size\", {\n /**\n * Gets the `size` of an image data.\n * @hidden\n * @private\n */\n get: function () {\n return this.mImageData.count;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"imageData\", {\n /**\n * Gets the value of an `image data`.\n * @hidden\n * @private\n */\n get: function () {\n return this.mImageData;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"imageDataAsNumberArray\", {\n /**\n * Gets the value of an `image data as number array`.\n * @hidden\n * @private\n */\n get: function () {\n return this.mImageData.internalBuffer.buffer;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Initialize` image data and image stream.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.initialize = function () {\n if (this.mFormat === ImageFormat.Unknown && this.checkIfJpeg()) {\n this.mFormat = ImageFormat.Jpeg;\n this.parseJpegImage();\n }\n else {\n throw new TypeError('Only the JPEG format is supported');\n }\n this.reset();\n this.mImageData = new ByteArray(this.mStream.count);\n this.mStream.read(this.mImageData, 0, this.mImageData.count);\n };\n /**\n * `Reset` stream position into 0.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.reset = function () {\n this.mStream.position = 0;\n };\n /**\n * `Parse` Jpeg image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.parseJpegImage = function () {\n this.reset();\n var imgData = new ByteArray(this.mStream.count);\n this.mStream.read(imgData, 0, imgData.count);\n var i = 4;\n var isLengthExceed = false;\n /* tslint:disable */\n var length = imgData.getBuffer(i) * 256 + imgData.getBuffer(i + 1);\n while (i < imgData.count) {\n i += length;\n if (i < imgData.count) {\n if (imgData.getBuffer(i + 1) === 192) {\n this.mHeight = imgData.getBuffer(i + 5) * 256 + imgData.getBuffer(i + 6);\n this.mWidth = imgData.getBuffer(i + 7) * 256 + imgData.getBuffer(i + 8);\n return;\n }\n else {\n i += 2;\n length = imgData.getBuffer(i) * 256 + imgData.getBuffer(i + 1);\n }\n }\n else {\n isLengthExceed = true;\n break;\n }\n }\n if (isLengthExceed) {\n this.mStream.position = 0;\n this.skip(this.mStream, 2);\n this.readExceededJPGImage(this.mStream);\n }\n /* tslint:enable */\n };\n Object.defineProperty(ImageDecoder.prototype, \"format\", {\n /**\n * Gets the image `format`.\n * @private\n * @hidden\n */\n get: function () {\n return this.mFormat;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Checks if JPG`.\n * @private\n * @hidden\n */\n ImageDecoder.prototype.checkIfJpeg = function () {\n this.reset();\n for (var i = 0; i < ImageDecoder.mJpegHeader.length; i++) {\n if (ImageDecoder.mJpegHeader[i] !== this.mStream.readByte(i)) {\n return false;\n }\n this.mStream.position++;\n }\n return true;\n };\n /**\n * Return image `dictionary`.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getImageDictionary = function () {\n if (this.mFormat === ImageFormat.Jpeg) {\n var tempArrayBuffer = this.imageData.internalBuffer.length;\n this.imageStream = new PdfStream();\n this.imageStream.isResource = true;\n var tempString = '';\n var decodedString = '';\n for (var i = 0; i < this.imageDataAsNumberArray.byteLength; i++) {\n tempString += String.fromCharCode(null, this.mStream.readByte(i));\n }\n for (var i = 0; i < tempString.length; i++) {\n if (i % 2 !== 0) {\n decodedString += tempString[i];\n }\n }\n this.imageStream.data = [decodedString];\n this.imageStream.compress = false;\n this.imageStream.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.xObject));\n this.imageStream.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.image));\n this.imageStream.items.setValue(this.dictionaryProperties.width, new PdfNumber(this.width));\n this.imageStream.items.setValue(this.dictionaryProperties.height, new PdfNumber(this.height));\n this.imageStream.items.setValue(this.dictionaryProperties.bitsPerComponent, new PdfNumber(this.bitsPerComponent));\n this.imageStream.items.setValue(this.dictionaryProperties.filter, new PdfName(this.dictionaryProperties.dctdecode));\n this.imageStream.items.setValue(this.dictionaryProperties.colorSpace, new PdfName(this.getColorSpace()));\n this.imageStream.items.setValue(this.dictionaryProperties.decodeParms, this.getDecodeParams());\n return this.imageStream;\n }\n else {\n return this.imageStream;\n }\n };\n /**\n * Return `colorSpace` of an image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getColorSpace = function () {\n return this.dictionaryProperties.deviceRgb;\n };\n /**\n * Return `decode parameters` of an image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getDecodeParams = function () {\n var decodeParams = new PdfDictionary();\n decodeParams.items.setValue(this.dictionaryProperties.columns, new PdfNumber(this.width));\n decodeParams.items.setValue(this.dictionaryProperties.blackIs1, new PdfBoolean(true));\n decodeParams.items.setValue(this.dictionaryProperties.k, new PdfNumber(-1));\n decodeParams.items.setValue(this.dictionaryProperties.predictor, new PdfNumber(15));\n decodeParams.items.setValue(this.dictionaryProperties.bitsPerComponent, new PdfNumber(this.bitsPerComponent));\n return decodeParams;\n };\n /**\n * 'readExceededJPGImage' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.readExceededJPGImage = function (stream) {\n this.mStream = stream;\n var isContinueReading = true;\n while (isContinueReading) {\n var marker = this.getMarker(stream);\n switch (marker) {\n case this.sof1Marker:\n case this.sof2Marker:\n case this.sof3Marker:\n case this.sof5Marker:\n case this.sof6Marker:\n case this.sof7Marker:\n case this.sof9Marker:\n case this.sof10Marker:\n case this.sof11Marker:\n case this.sof13Marker:\n case this.sof14Marker:\n case this.sof15Marker:\n stream.position += 3;\n this.mHeight = this.mStream.readNextTwoBytes(stream);\n this.mWidth = this.mStream.readNextTwoBytes(stream);\n isContinueReading = false;\n break;\n default:\n this.skipStream(stream);\n break;\n }\n }\n };\n /**\n * 'skip' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.skip = function (stream, noOfBytes) {\n this.mStream = stream;\n var temp = new ByteArray(noOfBytes);\n this.mStream.read(temp, 0, temp.count);\n };\n /**\n * 'getMarker' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getMarker = function (stream) {\n var skippedByte = 0;\n var marker = 32;\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n while (marker !== 255) {\n skippedByte++;\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n }\n do {\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n } while (marker === 255);\n return marker;\n };\n /**\n * 'skipStream' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.skipStream = function (stream) {\n var markerLength = this.mStream.readNextTwoBytes(stream) - 2;\n if (markerLength > 0) {\n stream.position += markerLength;\n }\n };\n /**\n * Number array for `png header`.\n * @hidden\n * @private\n */\n ImageDecoder.mPngHeader = [137, 80, 78, 71, 13, 10, 26, 10];\n /**\n * Number Array for `jpeg header`.\n * @hidden\n * @private\n */\n ImageDecoder.mJpegHeader = [255, 216];\n /**\n * Number array for `gif header`.\n * @hidden\n * @private\n */\n ImageDecoder.GIF_HEADER = 'G,I,F,8';\n /**\n * Number array for `bmp header.`\n * @hidden\n * @private\n */\n ImageDecoder.BMP_HEADER = 'B,M';\n return ImageDecoder;\n}());\nexport { ImageDecoder };\n","/**\n * PdfTemplate.ts class for EJ2-PDF\n */\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfGraphics } from './../pdf-graphics';\nimport { PdfResources } from './../pdf-resources';\nimport { PdfName } from './../../primitives/pdf-name';\nimport { PointF, SizeF, RectangleF } from './../../drawing/pdf-drawing';\nimport { GetResourceEventHandler } from './../pdf-graphics';\n/**\n * Represents `Pdf Template` object.\n * @private\n */\nvar PdfTemplate = /** @class */ (function () {\n function PdfTemplate(arg1, arg2) {\n /**\n * Initialize an instance for `DictionaryProperties` class.\n * @private\n * @hidden\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Checks whether the transformation 'is performed'.\n * @default true\n * @private\n */\n this.writeTransformation = true;\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (arg1 instanceof SizeF && typeof arg2 === 'undefined') {\n this.content = new PdfStream();\n var tempSize = new SizeF(arg1.width, arg1.height);\n this.setSize(tempSize);\n this.initialize();\n }\n else {\n this.content = new PdfStream();\n this.setSize(new SizeF(arg1, arg2));\n this.initialize();\n }\n }\n Object.defineProperty(PdfTemplate.prototype, \"size\", {\n //Properties\n /**\n * Gets the size of the 'PdfTemplate'.\n */\n get: function () {\n return this.templateSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"width\", {\n /**\n * Gets the width of the 'PdfTemplate'.\n */\n get: function () {\n return this.size.width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"height\", {\n /**\n * Gets the height of the 'PdfTemplate'.\n */\n get: function () {\n return this.size.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"graphics\", {\n /**\n * Gets the `graphics` of the 'PdfTemplate'.\n */\n get: function () {\n if (this.pdfGraphics == null || typeof this.pdfGraphics === 'undefined') {\n var gr = new GetResourceEventHandler(this);\n var g = new PdfGraphics(this.size, gr, this.content);\n this.pdfGraphics = g;\n // if(this.writeTransformation) {\n // Transform co-ordinates to Top/Left.\n this.pdfGraphics.initializeCoordinates();\n // }\n }\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the resources and modifies the template dictionary.\n * @private\n */\n PdfTemplate.prototype.getResources = function () {\n if (this.resources == null) {\n this.resources = new PdfResources();\n this.content.items.setValue(this.dictionaryProperties.resources, this.resources);\n }\n return this.resources;\n };\n // Public methods\n /**\n * `Initialize` the type and subtype of the template.\n * @private\n */\n PdfTemplate.prototype.initialize = function () {\n this.addType();\n this.addSubType();\n };\n /**\n * `Adds type key`.\n * @private\n */\n PdfTemplate.prototype.addType = function () {\n var value = new PdfName(this.dictionaryProperties.xObject);\n this.content.items.setValue(this.dictionaryProperties.type, value);\n };\n /**\n * `Adds SubType key`.\n * @private\n */\n PdfTemplate.prototype.addSubType = function () {\n var value = new PdfName(this.dictionaryProperties.form);\n this.content.items.setValue(this.dictionaryProperties.subtype, value);\n };\n PdfTemplate.prototype.reset = function (size) {\n if (typeof size === 'undefined') {\n if (this.resources != null) {\n this.resources = null;\n this.content.remove(this.dictionaryProperties.resources);\n }\n if (this.graphics != null) {\n this.graphics.reset(this.size);\n }\n }\n else {\n this.setSize(size);\n this.reset();\n }\n };\n /**\n * `Set the size` of the 'PdfTemplate'.\n * @private\n */\n PdfTemplate.prototype.setSize = function (size) {\n var rect = new RectangleF(new PointF(0, 0), size);\n var val = PdfArray.fromRectangle(rect);\n this.content.items.setValue(this.dictionaryProperties.bBox, val);\n this.templateSize = size;\n };\n Object.defineProperty(PdfTemplate.prototype, \"element\", {\n // /**\n // * Returns the value of current graphics.\n // * @private\n // */\n // public GetGraphics(g : PdfGraphics) : PdfGraphics {\n // if (this.graphics == null || typeof this.graphics === 'undefined') {\n // this.graphics = g;\n // this.graphics.Size = this.Size;\n // this.graphics.StreamWriter = new PdfStreamWriter(this.content)\n // this.graphics.Initialize();\n // if(this.writeTransformation) {\n // this.graphics.InitializeCoordinates();\n // }\n // }\n // return this.graphics;\n // }\n // IPdfWrapper Members\n /**\n * Gets the `content stream` of 'PdfTemplate' class.\n * @private\n */\n get: function () {\n return this.content;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTemplate;\n}());\nexport { PdfTemplate };\n","/**\n * public Enum for `PdfBorderOverlapStyle`.\n * @private\n */\nexport var PdfBorderOverlapStyle;\n(function (PdfBorderOverlapStyle) {\n /**\n * Specifies the type of `Overlap`.\n * @private\n */\n PdfBorderOverlapStyle[PdfBorderOverlapStyle[\"Overlap\"] = 0] = \"Overlap\";\n /**\n * Specifies the type of `Inside`.\n * @private\n */\n PdfBorderOverlapStyle[PdfBorderOverlapStyle[\"Inside\"] = 1] = \"Inside\";\n})(PdfBorderOverlapStyle || (PdfBorderOverlapStyle = {}));\n","/**\n * Used to perform `convertion between pixels and points`.\n * @private\n */\nvar PdfUnitConverter = /** @class */ (function () {\n //constructors\n /**\n * Initializes a new instance of the `UnitConvertor` class with DPI value.\n * @private\n */\n function PdfUnitConverter(dpi) {\n this.updateProportionsHelper(dpi);\n }\n /**\n * `Converts` the value, from one graphics unit to another graphics unit.\n * @private\n */\n PdfUnitConverter.prototype.convertUnits = function (value, from, to) {\n return this.convertFromPixels(this.convertToPixels(value, from), to);\n };\n /**\n * Converts the value `to pixel` from specified graphics unit.\n * @private\n */\n PdfUnitConverter.prototype.convertToPixels = function (value, from) {\n var index = from;\n var result = (value * this.proportions[index]);\n return result;\n };\n /**\n * Converts value, to specified graphics unit `from Pixel`.\n * @private\n */\n PdfUnitConverter.prototype.convertFromPixels = function (value, to) {\n var index = to;\n var result = (value / this.proportions[index]);\n return result;\n };\n /**\n * `Update proportions` matrix according to Graphics settings.\n * @private\n */\n PdfUnitConverter.prototype.updateProportionsHelper = function (pixelPerInch) {\n this.proportions = [\n pixelPerInch / 2.54,\n pixelPerInch / 6.0,\n 1,\n pixelPerInch / 72.0,\n pixelPerInch,\n pixelPerInch / 300.0,\n pixelPerInch / 25.4 // Millimeter\n ];\n };\n //Fields\n /**\n * Indicates default `horizontal resolution`.\n * @default 96\n * @private\n */\n PdfUnitConverter.horizontalResolution = 96;\n /**\n * Indicates default `vertical resolution`.\n * @default 96\n * @private\n */\n PdfUnitConverter.verticalResolution = 96;\n return PdfUnitConverter;\n}());\nexport { PdfUnitConverter };\n","import { SizeF } from './../../drawing/pdf-drawing';\nimport { PdfGraphicsUnit } from './../enum';\nimport { PdfUnitConverter } from './../unit-convertor';\n/**\n * `PdfImage` class represents the base class for images and provides functionality for the 'PdfBitmap' class.\n * @private\n */\nvar PdfImage = /** @class */ (function () {\n function PdfImage() {\n }\n Object.defineProperty(PdfImage.prototype, \"width\", {\n /**\n * Gets and Sets the `width` of an image.\n * @private\n */\n get: function () {\n return this.imageWidth;\n },\n set: function (value) {\n this.imageWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"height\", {\n /**\n * Gets and Sets the `height` of an image.\n * @private\n */\n get: function () {\n return this.imageHeight;\n },\n set: function (value) {\n this.imageHeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"size\", {\n /**\n * Gets or sets the size of the image.\n * @private\n */\n set: function (value) {\n this.width = value.width;\n this.height = value.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"physicalDimension\", {\n /**\n * Gets the `physical dimension` of an image.\n * @private\n */\n get: function () {\n this.imagePhysicalDimension = this.getPointSize(this.width, this.height, this.horizontalResolution, this.verticalResolution);\n return new SizeF(this.width, this.height);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"element\", {\n // /**\n // * Gets the `image stream as string`.\n // * @private\n // */\n // public static fromString(string : string) : PdfImage {\n // let image : PdfImage = new PdfBitmap(string);\n // return image;\n // }\n /**\n * Gets the `element` image stream.\n * @private\n */\n get: function () {\n return this.imageStream;\n },\n enumerable: true,\n configurable: true\n });\n PdfImage.prototype.getPointSize = function (width, height, horizontalResolution, verticalResolution) {\n if (typeof horizontalResolution === 'undefined') {\n var dpiX = PdfUnitConverter.horizontalResolution;\n var dpiY = PdfUnitConverter.verticalResolution;\n var size = this.getPointSize(width, height, dpiX, dpiY);\n return size;\n }\n else {\n var ucX = new PdfUnitConverter(horizontalResolution);\n var ucY = new PdfUnitConverter(verticalResolution);\n var ptWidth = ucX.convertUnits(width, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);\n var ptHeight = ucY.convertUnits(height, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);\n var size = new SizeF(ptWidth, ptHeight);\n return size;\n }\n };\n return PdfImage;\n}());\nexport { PdfImage };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfBitmap.ts class for EJ2-PDF\n */\nimport { ImageDecoder } from './../../graphics/images/image-decoder';\nimport { ByteArray } from './../../graphics/images/byte-array';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfImage } from './pdf-image';\n/**\n * The 'PdfBitmap' contains methods and properties to handle the Bitmap images.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // base64 string of an image\n * let imageString : string = '/9j/3+2w7em7HzY/KiijFw … 1OEYRUYrQ45yc5OUtz/9k=';\n * // load the image from the base64 string of original image.\n * let image : PdfBitmap = new PdfBitmap(imageString);\n * // draw the image\n * page1.graphics.drawImage(image, new RectangleF({x : 10, y : 10}, {width : 200, height : 200}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfBitmap = /** @class */ (function (_super) {\n __extends(PdfBitmap, _super);\n /**\n * Create an instance for `PdfBitmap` class.\n * @param encodedString Base64 string of an image.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // base64 string of an image\n * let imageString : string = '/9j/3+2w7em7HzY/KiijFw … 1OEYRUYrQ45yc5OUtz/9k=';\n * //\n * // load the image from the base64 string of original image.\n * let image : PdfBitmap = new PdfBitmap(imageString);\n * //\n * // draw the image\n * page1.graphics.drawImage(image, new RectangleF({x : 10, y : 10}, {width : 200, height : 200}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n function PdfBitmap(encodedString) {\n var _this = _super.call(this) || this;\n //Fields\n /**\n * Specifies the `status` of an image.\n * @default true.\n * @hidden\n * @private\n */\n _this.imageStatus = true;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @hidden\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n _this.loadImage(encodedString);\n return _this;\n }\n /**\n * `Load image`.\n * @hidden\n * @private\n */\n PdfBitmap.prototype.loadImage = function (encodedString) {\n var task = this.initializeAsync(encodedString);\n };\n /**\n * `Initialize` image parameters.\n * @private\n */\n PdfBitmap.prototype.initializeAsync = function (encodedString) {\n var byteArray = new ByteArray(encodedString.length);\n byteArray.writeFromBase64String(encodedString);\n this.decoder = new ImageDecoder(byteArray);\n this.height = this.decoder.height;\n this.width = this.decoder.width;\n // FrameCount = BitmapImageDecoder.FrameCount;\n this.bitsPerComponent = this.decoder.bitsPerComponent;\n };\n /**\n * `Saves` the image into stream.\n * @private\n */\n PdfBitmap.prototype.save = function () {\n this.imageStatus = true;\n this.imageStream = this.decoder.getImageDictionary();\n };\n return PdfBitmap;\n}(PdfImage));\nexport { PdfBitmap };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfResources.ts class for EJ2-PDF\n */\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { TemporaryDictionary } from './../collections/object-object-pair/dictionary';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfCrossTable } from './../input-output/pdf-cross-table';\nimport { PdfFont } from './fonts/pdf-font';\nimport { PdfTemplate } from './figures/pdf-template';\nimport { PdfBrush } from './brushes/pdf-brush';\nimport { PdfTransparency } from './pdf-transparency';\nimport { PdfBitmap } from './../graphics/images/pdf-bitmap';\nimport { PdfImage } from './../graphics/images/pdf-image';\nimport { PdfGradientBrush } from './brushes/pdf-gradient-brush';\nimport { PdfTilingBrush } from './brushes/pdf-tiling-brush';\n/**\n * `PdfResources` class used to set resource contents like font, image.\n * @private\n */\nvar PdfResources = /** @class */ (function (_super) {\n __extends(PdfResources, _super);\n function PdfResources(baseDictionary) {\n var _this = _super.call(this, baseDictionary) || this;\n /**\n * Dictionary for the `properties names`.\n * @private\n */\n _this.properties = new PdfDictionary();\n return _this;\n }\n Object.defineProperty(PdfResources.prototype, \"names\", {\n //Properties\n /**\n * Gets the `font names`.\n * @private\n */\n get: function () {\n return this.getNames();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfResources.prototype, \"document\", {\n /**\n * Get or set the `page document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n },\n enumerable: true,\n configurable: true\n });\n //Public Methods\n /**\n * `Generates name` for the object and adds to the resource if the object is new.\n * @private\n */\n PdfResources.prototype.getName = function (obj) {\n var primitive = obj.element;\n var name = null;\n if (this.names.containsKey(primitive)) {\n name = this.names.getValue(primitive);\n }\n // Object is new.\n if (name == null) {\n var sName = this.generateName();\n name = new PdfName(sName);\n this.names.setValue(primitive, name);\n if (obj instanceof PdfFont) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfTemplate) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfGradientBrush || obj instanceof PdfTilingBrush) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfTransparency) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfImage || obj instanceof PdfBitmap) {\n this.add(obj, name);\n }\n }\n return name;\n };\n /**\n * Gets `resource names` to font dictionaries.\n * @private\n */\n PdfResources.prototype.getNames = function () {\n if (this.pdfNames == null) {\n this.pdfNames = new TemporaryDictionary();\n }\n var fonts = this.items.getValue(this.dictionaryProperties.font);\n if (fonts != null) {\n var reference = fonts;\n var dictionary = fonts;\n dictionary = PdfCrossTable.dereference(fonts);\n }\n return this.pdfNames;\n };\n /**\n * Add `RequireProcedureSet` into procset array.\n * @private\n */\n PdfResources.prototype.requireProcedureSet = function (procedureSetName) {\n if (procedureSetName == null) {\n throw new Error('ArgumentNullException:procedureSetName');\n }\n var procSets = this.items.getValue(this.dictionaryProperties.procset);\n if (procSets == null) {\n procSets = new PdfArray();\n this.items.setValue(this.dictionaryProperties.procset, procSets);\n }\n var name = new PdfName(procedureSetName);\n if (!procSets.contains(name)) {\n procSets.add(name);\n }\n };\n //Helper Methods\n /**\n * `Remove font` from array.\n * @private\n */\n PdfResources.prototype.removeFont = function (name) {\n var key = null;\n var keys = this.pdfNames.keys();\n for (var index = 0; index < this.pdfNames.size(); index++) {\n if (this.pdfNames.getValue(keys[index]) === new PdfName(name)) {\n key = keys[index];\n break;\n }\n }\n if (key != null) {\n this.pdfNames.remove(key);\n }\n };\n /**\n * Generates `Unique string name`.\n * @private\n */\n PdfResources.prototype.generateName = function () {\n var name = Guid.getNewGuidString();\n return name;\n };\n PdfResources.prototype.add = function (arg1, arg2) {\n if (arg1 instanceof PdfFont) {\n var dictionary = null;\n var fonts = this.items.getValue(this.dictionaryProperties.font);\n if (fonts != null) {\n var reference = fonts;\n dictionary = fonts;\n dictionary = fonts;\n }\n else {\n dictionary = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.font, dictionary);\n }\n dictionary.items.setValue(arg2.value, new PdfReferenceHolder(arg1.element));\n }\n else if (arg1 instanceof PdfTemplate) {\n var xobjects = void 0;\n xobjects = this.items.getValue(this.dictionaryProperties.xObject);\n // Create fonts dictionary.\n if (xobjects == null) {\n xobjects = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.xObject, xobjects);\n }\n xobjects.items.setValue(arg2.value, new PdfReferenceHolder(arg1.element));\n }\n else if (arg1 instanceof PdfBrush) {\n if (arg1 instanceof PdfGradientBrush || arg1 instanceof PdfTilingBrush) {\n var savable = arg1.element;\n if (savable != null) {\n var pattern = this.items.getValue(this.dictionaryProperties.pattern);\n // Create a new pattern dictionary.\n if (pattern == null) {\n pattern = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.pattern, pattern);\n }\n pattern.items.setValue(arg2.value, new PdfReferenceHolder(savable));\n }\n }\n }\n else if (arg1 instanceof PdfTransparency) {\n var savable = arg1.element;\n var transDic = null;\n transDic = this.items.getValue(this.dictionaryProperties.extGState);\n // Create a new pattern dictionary.\n if (transDic == null) {\n transDic = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.extGState, transDic);\n }\n transDic.items.setValue(arg2.value, new PdfReferenceHolder(savable));\n }\n else {\n /* tslint:disable */\n var xobjects = this.Dictionary.items.getValue(this.dictionaryProperties.xObject);\n var parentXObjects = void 0;\n if (typeof this.pdfDocument !== 'undefined') {\n parentXObjects = this.pdfDocument.sections.element.items.getValue(this.dictionaryProperties.resources).items.getValue(this.dictionaryProperties.xObject);\n }\n var values = this.Dictionary.items.values();\n var hasSameImageStream = false;\n var oldReference = void 0;\n if (typeof this.pdfDocument !== 'undefined' && (typeof parentXObjects === undefined || parentXObjects == null)) {\n parentXObjects = new PdfDictionary();\n this.pdfDocument.sections.element.items.getValue(this.dictionaryProperties.resources).items.setValue(this.dictionaryProperties.xObject, parentXObjects);\n }\n else if (typeof this.pdfDocument !== 'undefined') {\n var values_1 = parentXObjects.items.values();\n for (var i = 0; i < values_1.length; i++) {\n if (typeof values_1[i] !== 'undefined' && typeof values_1[i].element !== 'undefined') {\n if (values_1[i].element.data[0] === arg1.element.data[0]) {\n oldReference = values_1[i];\n hasSameImageStream = true;\n }\n }\n }\n }\n if (xobjects == null) {\n xobjects = new PdfDictionary();\n this.Dictionary.items.setValue(this.dictionaryProperties.xObject, xobjects);\n }\n if (hasSameImageStream && typeof oldReference !== 'undefined') {\n xobjects.items.setValue(arg2.value, oldReference);\n }\n else {\n var reference = new PdfReferenceHolder(arg1.element);\n xobjects.items.setValue(arg2.value, reference);\n if (typeof this.pdfDocument !== 'undefined') {\n parentXObjects.items.setValue(arg2.value, reference);\n }\n }\n /* tslint:enable */\n }\n };\n return PdfResources;\n}(PdfDictionary));\nexport { PdfResources };\n/* tslint:disable */\n/**\n * Used to create new guid for resources.\n * @private\n */\nvar Guid = /** @class */ (function () {\n function Guid() {\n }\n /**\n * Generate `new GUID`.\n * @private\n */\n Guid.getNewGuidString = function () {\n return 'aaaaaaaa-aaaa-4aaa-baaa-aaaaaaaaaaaa'.replace(/[ab]/g, function (c) {\n var random = Math.random() * 16 | 0;\n var result = c === 'a' ? random : (random & 0x3 | 0x8);\n return result.toString(16);\n });\n };\n return Guid;\n}());\nexport { Guid };\n/* tslint:enable */ \n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { GetResourceEventHandler } from './../pdf-graphics';\nimport { PdfBrush } from './pdf-brush';\nimport { PointF, SizeF, RectangleF, Rectangle } from './../../drawing/pdf-drawing';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfNumber } from './../../primitives/pdf-number';\nimport { PdfGraphics } from './../pdf-graphics';\nimport { PdfResources } from './../pdf-resources';\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { PdfPage } from './../../pages/pdf-page';\n/**\n * `PdfTilingBrush` Implements a colored tiling brush.\n */\nvar PdfTilingBrush = /** @class */ (function (_super) {\n __extends(PdfTilingBrush, _super);\n /**\n * Initializes a new instance of the `PdfTilingBrush` class.\n * @public\n */\n function PdfTilingBrush(arg1, arg2) {\n var _this = _super.call(this) || this;\n /**\n * Local variable to store Stroking.\n * @private\n */\n _this.mStroking = false;\n /**\n * Local variable to store the tile start location.\n * @private\n */\n _this.mLocation = new PointF(0, 0);\n /**\n * Local variable to store the dictionary properties.\n * @private\n */\n _this.mDictionaryProperties = new DictionaryProperties();\n var rect = null;\n if (arg1 instanceof Rectangle) {\n rect = arg1;\n }\n else if (arg1 instanceof SizeF) {\n rect = new Rectangle(0, 0, arg1.width, arg1.height);\n }\n if (arg2 !== null && arg2 instanceof PdfPage) {\n _this.mPage = arg2;\n }\n _this.brushStream = new PdfStream();\n _this.mResources = new PdfResources();\n _this.brushStream.items.setValue(_this.mDictionaryProperties.resources, _this.mResources);\n _this.setBox(rect);\n _this.setObligatoryFields();\n if (arg2 !== null && arg2 instanceof PdfPage) {\n _this.mPage = arg2;\n _this.graphics.colorSpace = arg2.document.colorSpace;\n }\n return _this;\n }\n /**\n * Initializes a new instance of the `PdfTilingBrush` class.\n * @private\n * @param rectangle The size of the smallest brush cell.\n * @param page The Current Page Object.\n * @param location The Tile start location.\n * @param matrix The matrix.\n */\n PdfTilingBrush.prototype.initialize = function (rectangle, page, location, matrix) {\n this.mPage = page;\n this.mLocation = location;\n this.mTransformationMatrix = matrix;\n this.tempBrushStream = this.brushStream;\n this.brushStream = new PdfStream();\n var tempResource = new PdfResources();\n this.brushStream.items.setValue(this.mDictionaryProperties.resources, tempResource);\n this.setBox(rectangle);\n this.setObligatoryFields();\n return this;\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"location\", {\n //Properties\n /**\n * Location representing the start position of the tiles.\n * @public\n */\n get: function () {\n return this.mLocation;\n },\n set: function (value) {\n this.mLocation = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the obligatory fields.\n * @private\n */\n PdfTilingBrush.prototype.setObligatoryFields = function () {\n this.brushStream.items.setValue(this.mDictionaryProperties.patternType, new PdfNumber(1));\n // Tiling brush.\n this.brushStream.items.setValue(this.mDictionaryProperties.paintType, new PdfNumber(1));\n // Coloured.\n this.brushStream.items.setValue(this.mDictionaryProperties.tilingType, new PdfNumber(1));\n // Constant spacing.\n this.brushStream.items.setValue(this.mDictionaryProperties.xStep, new PdfNumber((this.mBox.right - this.mBox.left)));\n this.brushStream.items.setValue(this.mDictionaryProperties.yStep, new PdfNumber((this.mBox.bottom - this.mBox.top)));\n if ((this.mPage != null) && (this.mLocation != null)) {\n if ((this.mTransformationMatrix == null && typeof this.mTransformationMatrix === 'undefined')) {\n // Transform the tile origin to fit the location\n var tileTransform = (this.mPage.size.height % this.rectangle.size.height) - (this.mLocation.y);\n /* tslint:disable-next-line:max-line-length */\n this.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray([1, 0, 0, 1, this.mLocation.x, tileTransform]));\n }\n else {\n var tileTransform = 0;\n // Transform the tile origin to fit the location\n var elements = this.mTransformationMatrix.matrix.elements;\n if ((this.mPage.size.height > this.rectangle.size.height)) {\n tileTransform = (this.mTransformationMatrix.matrix.offsetY\n - (this.mPage.size.height % this.rectangle.size.height));\n }\n else {\n tileTransform = ((this.mPage.size.height % this.rectangle.size.height) + this.mTransformationMatrix.matrix.offsetY);\n }\n this.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray([\n elements[0], elements[1], elements[2], elements[3], elements[4], tileTransform\n ]));\n }\n }\n };\n /**\n * Sets the BBox coordinates.\n * @private\n */\n PdfTilingBrush.prototype.setBox = function (box) {\n this.mBox = box;\n var rect = new RectangleF(this.mBox.left, this.mBox.top, this.mBox.right, this.mBox.bottom);\n this.brushStream.items.setValue(this.mDictionaryProperties.bBox, PdfArray.fromRectangle(rect));\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"rectangle\", {\n //Properties\n /**\n * Gets the boundary box of the smallest brush cell.\n * @public\n */\n get: function () {\n return this.mBox;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTilingBrush.prototype, \"size\", {\n /**\n * Gets the size of the smallest brush cell.\n * @public\n */\n get: function () {\n return this.mBox.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTilingBrush.prototype, \"graphics\", {\n /**\n * Gets Graphics context of the brush.\n */\n get: function () {\n if ((this.mGraphics == null && typeof this.mGraphics === 'undefined')) {\n var gr = new GetResourceEventHandler(this);\n var g = new PdfGraphics(this.size, gr, this.brushStream);\n this.mGraphics = g;\n this.mResources = this.getResources();\n this.mGraphics.initializeCoordinates();\n }\n return this.mGraphics;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the resources and modifies the template dictionary.\n * @public\n */\n PdfTilingBrush.prototype.getResources = function () {\n return this.mResources;\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"stroking\", {\n /**\n * Gets or sets a value indicating whether this PdfTilingBrush\n * is used for stroking operations.\n */\n get: function () {\n return this.mStroking;\n },\n set: function (value) {\n this.mStroking = value;\n },\n enumerable: true,\n configurable: true\n });\n //PdfBrush methods\n /**\n * Creates a new copy of a brush.\n * @public\n */\n PdfTilingBrush.prototype.clone = function () {\n var brush = this.initialize(this.rectangle, this.mPage, this.location, this.mTransformationMatrix);\n if ((this.mTransformationMatrix != null) && (this.mTransformationMatrix.matrix != null)) {\n /* tslint:disable-next-line:max-line-length */\n brush.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray(this.mTransformationMatrix.matrix.elements));\n }\n brush.brushStream.data = this.tempBrushStream.data;\n brush.mResources = new PdfResources(this.mResources);\n brush.brushStream.items.setValue(this.mDictionaryProperties.resources, brush.mResources);\n return brush;\n };\n /**\n * Monitors the changes of the brush and modify PDF state respectfully.\n * @param brush The brush\n * @param streamWriter The stream writer\n * @param getResources The get resources delegate.\n * @param saveChanges if set to true the changes should be saved anyway.\n * @param currentColorSpace The current color space.\n */\n /* tslint:disable-next-line:max-line-length */\n PdfTilingBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n var diff = false;\n if (brush !== this) {\n // Set the Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mStroking);\n // Set the pattern for non-stroking operations.\n var resources1 = getResources.getResources();\n var name1 = resources1.getName(this);\n streamWriter.setColourWithPattern(null, name1, this.mStroking);\n diff = true;\n }\n else if (brush instanceof PdfTilingBrush) {\n // Set the /Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mStroking);\n // Set the pattern for non-stroking operations.\n var resources = getResources.getResources();\n var name_1 = resources.getName(this);\n streamWriter.setColourWithPattern(null, name_1, this.mStroking);\n diff = true;\n }\n return diff;\n };\n /**\n * Resets the changes, which were made by the brush.\n * In other words resets the state to the initial one.\n * @param streamWriter The stream writer.\n */\n PdfTilingBrush.prototype.resetChanges = function (streamWriter) {\n // We shouldn't do anything to reset changes.\n // All changes will be reset automatically by setting a new colour space.\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"element\", {\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @public\n */\n get: function () {\n return this.brushStream;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTilingBrush;\n}(PdfBrush));\nexport { PdfTilingBrush };\n","/**\n * PdfGraphics.ts class for EJ2-PDF\n */\nimport { PdfColorSpace, TextRenderingMode, PdfFillMode, PdfTextAlignment } from './enum';\nimport { PdfVerticalAlignment, PdfBlendMode } from './enum';\nimport { PdfSubSuperScript } from './fonts/enum';\nimport { PdfStreamWriter } from './../input-output/pdf-stream-writer';\nimport { PdfPen } from './pdf-pen';\nimport { PdfBrush } from './brushes/pdf-brush';\nimport { PdfSolidBrush } from './brushes/pdf-solid-brush';\nimport { PdfFont } from './fonts/pdf-font';\nimport { PdfTransformationMatrix, Matrix } from './pdf-transformation-matrix';\nimport { PointF, SizeF, RectangleF } from './../drawing/pdf-drawing';\nimport { ProcedureSets } from './constants';\nimport { PdfString } from './../primitives/pdf-string';\nimport { PdfStringFormat } from './fonts/pdf-string-format';\nimport { TemporaryDictionary } from './../collections/object-object-pair/dictionary';\nimport { PdfTransparency } from './pdf-transparency';\nimport { PdfStringLayouter, LineType } from './fonts/string-layouter';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { StringTokenizer } from './fonts/string-tokenizer';\nimport { PdfAutomaticFieldInfoCollection } from './../document/automatic-fields/automatic-field-info-collection';\nimport { PdfAutomaticFieldInfo } from './../document/automatic-fields/automatic-field-info';\nimport { Operators } from './../input-output/pdf-operators';\nimport { UnicodeTrueTypeFont } from './fonts/unicode-true-type-font';\nimport { InternalEnum } from './../primitives/pdf-string';\nimport { RtlRenderer } from './fonts/rtl-renderer';\nimport { PdfTextDirection } from './enum';\nimport { PathPointType } from './figures/enum';\nimport { PdfGradientBrush } from './../../implementation/graphics/brushes/pdf-gradient-brush';\nimport { PdfTilingBrush } from './brushes/pdf-tiling-brush';\n/**\n * `PdfGraphics` class represents a graphics context of the objects.\n * It's used for performing all the graphics operations.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * //graphics of the page\n * let page1Graphics : PdfGraphics = page1.graphics;\n * // draw the text on the page1 graphics\n * page1Graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * //\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfGraphics = /** @class */ (function () {\n function PdfGraphics(arg1, arg2, arg3) {\n /**\n * Represents the `Current color space`.\n * @private\n */\n this.currentColorSpace = PdfColorSpace.Rgb;\n /**\n * Stores `previous rendering mode`.\n * @private\n */\n this.previousTextRenderingMode = TextRenderingMode.Fill;\n /**\n * Previous `character spacing` value or 0.\n * @private\n */\n this.previousCharacterSpacing = 0.0;\n /**\n * Previous `word spacing` value or 0.\n * @private\n */\n this.previousWordSpacing = 0.0;\n /**\n * The `previously used text scaling` value.\n * @private\n */\n this.previousTextScaling = 100.0;\n /**\n * Instance of `ProcedureSets` class.\n * @private\n */\n this.procedureSets = new ProcedureSets();\n /**\n * To check wihether it is a `direct text rendering`.\n * @default true\n * @private\n */\n this.isNormalRender = true;\n /**\n * check whether to `use font size` to calculate the shift.\n * @default false\n * @private\n */\n this.isUseFontSize = false;\n /**\n * check whether the font is in `italic type`.\n * @default false\n * @private\n */\n this.isItalic = false;\n /**\n * Check whether it is an `emf Text Matrix`.\n * @default false\n * @private\n */\n this.isEmfTextScaled = false;\n /**\n * Check whether it is an `emf` call.\n * @default false\n * @private\n */\n this.isEmf = false;\n /**\n * Check whether it is an `emf plus` call.\n * @default false\n * @private\n */\n this.isEmfPlus = false;\n /**\n * Check whether it is in `base line format`.\n * @default true\n * @private\n */\n this.isBaselineFormat = true;\n /**\n * Emf Text `Scaling Factor`.\n * @private\n */\n this.emfScalingFactor = new SizeF(0, 0);\n /**\n * To check whether the `last color space` of document and garphics is saved.\n * @private\n */\n this.colorSpaceChanged = false;\n /**\n * Stores an instance of `DictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isOverloadWithPosition = false;\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isPointOverload = false;\n /**\n * Current colorspaces.\n * @hidden\n * @private\n */\n this.currentColorSpaces = ['RGB', 'CMYK', 'GrayScale', 'Indexed'];\n /**\n * Checks the current image `is optimized` or not.\n * @default false.\n * @private\n */\n this.isImageOptimized = false;\n /**\n * Stores the `graphics states`.\n * @private\n */\n this.graphicsState = [];\n /**\n * Indicates whether the object `had trasparency`.\n * @default false\n * @private\n */\n this.istransparencySet = false;\n /**\n * Stores the instance of `PdfAutomaticFieldInfoCollection` class .\n * @default null\n * @private\n */\n this.internalAutomaticFields = null;\n /**\n * Stores the index of the start line that should draw with in the next page.\n * @private\n */\n this.startCutIndex = -1;\n this.getResources = arg2;\n this.canvasSize = arg1;\n if (arg3 instanceof PdfStreamWriter) {\n this.pdfStreamWriter = arg3;\n }\n else {\n this.pdfStreamWriter = new PdfStreamWriter(arg3);\n }\n this.initialize();\n }\n Object.defineProperty(PdfGraphics.prototype, \"stringLayoutResult\", {\n // Properties\n /**\n * Returns the `result` after drawing string.\n * @private\n */\n get: function () {\n return this.pdfStringLayoutResult;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"size\", {\n /**\n * Gets the `size` of the canvas.\n * @private\n */\n get: function () {\n return this.canvasSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"mediaBoxUpperRightBound\", {\n /**\n * Gets and Sets the value of `MediaBox upper right bound`.\n * @private\n */\n get: function () {\n if (typeof this.internalMediaBoxUpperRightBound === 'undefined') {\n this.internalMediaBoxUpperRightBound = 0;\n }\n return this.internalMediaBoxUpperRightBound;\n },\n set: function (value) {\n this.internalMediaBoxUpperRightBound = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"clientSize\", {\n /**\n * Gets the `size` of the canvas reduced by margins and page templates.\n * @private\n */\n get: function () {\n return new SizeF(this.clipBounds.width, this.clipBounds.height);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"colorSpace\", {\n /**\n * Gets or sets the current `color space` of the document\n * @private\n */\n get: function () {\n return this.currentColorSpace;\n },\n set: function (value) {\n this.currentColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"streamWriter\", {\n /**\n * Gets the `stream writer`.\n * @private\n */\n get: function () {\n return this.pdfStreamWriter;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"matrix\", {\n /**\n * Gets the `transformation matrix` reflecting current transformation.\n * @private\n */\n get: function () {\n if (this.transformationMatrix == null) {\n this.transformationMatrix = new PdfTransformationMatrix();\n }\n return this.transformationMatrix;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"layer\", {\n /**\n * Gets the `layer` for the graphics, if exists.\n * @private\n */\n get: function () {\n return this.pageLayer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"page\", {\n /**\n * Gets the `page` for this graphics, if exists.\n * @private\n */\n get: function () {\n return this.pageLayer.page;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"automaticFields\", {\n get: function () {\n if (this.internalAutomaticFields == null || typeof this.internalAutomaticFields === 'undefined') {\n this.internalAutomaticFields = new PdfAutomaticFieldInfoCollection();\n }\n return this.internalAutomaticFields;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Initializes` this instance.\n * @private\n */\n PdfGraphics.prototype.initialize = function () {\n this.bStateSaved = false;\n this.currentPen = null;\n this.currentBrush = null;\n this.currentFont = null;\n this.currentColorSpace = PdfColorSpace.Rgb;\n this.bCSInitialized = false;\n this.transformationMatrix = null;\n this.previousTextRenderingMode = (-1); //.Fill;\n this.previousCharacterSpacing = -1.0;\n this.previousWordSpacing = -1.0;\n this.previousTextScaling = -100.0;\n // this.m_trasparencies = null;\n this.currentStringFormat = null;\n this.clipBounds = new RectangleF(new PointF(0, 0), this.size);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.pdf);\n };\n PdfGraphics.prototype.drawPdfTemplate = function (template, location, size) {\n if (typeof size === 'undefined') {\n if (template == null) {\n throw Error('ArgumentNullException-template');\n }\n this.drawPdfTemplate(template, location, template.size);\n }\n else {\n // let crossTable : PdfCrossTable = null;\n // if (this.pageLayer != null) {\n // crossTable = (this.page as PdfPage).section.parentDocument.crossTable;\n // }\n if (template == null) {\n throw Error('ArgumentNullException-template');\n }\n var scaleX = (template.width > 0) ? size.width / template.width : 1;\n var scaleY = (template.height > 0) ? size.height / template.height : 1;\n var bNeedScale = !(scaleX === 1 && scaleY === 1);\n // Save state.\n var state = this.save();\n // Take into consideration that rect location is bottom/left.\n var matrix = new PdfTransformationMatrix();\n if (this.pageLayer != null) {\n this.getTranslateTransform(location.x, location.y + size.height, matrix);\n }\n if (bNeedScale) {\n this.getScaleTransform(scaleX, scaleY, matrix);\n }\n this.pdfStreamWriter.modifyCtm(matrix);\n // Output template.\n var resources = this.getResources.getResources();\n var name_1 = resources.getName(template);\n this.pdfStreamWriter.executeObject(name_1);\n // Restore state.\n this.restore(state);\n //Transfer automatic fields from template.\n var g = template.graphics;\n if (g != null) {\n for (var index = 0; index < g.automaticFields.automaticFields.length; index++) {\n var fieldInfo = g.automaticFields.automaticFields[index];\n var newLocation = new PointF(fieldInfo.location.x + location.x, fieldInfo.location.y + location.y);\n var scalingX = template.size.width == 0 ? 0 : size.width / template.size.width;\n var scalingY = template.size.height == 0 ? 0 : size.height / template.size.height;\n this.automaticFields.add(new PdfAutomaticFieldInfo(fieldInfo.field, newLocation, scalingX, scalingY));\n this.page.dictionary.modify();\n }\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageB);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageC);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageI);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n }\n };\n /**\n * @public\n */\n PdfGraphics.prototype.drawString = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) {\n if (typeof arg1 === 'string' && arg2 instanceof PdfFont && (arg3 instanceof PdfPen || arg3 === null) && (arg4 instanceof PdfBrush || arg4 === null) && typeof arg5 === 'number' && typeof arg6 === 'number' && (arg7 instanceof PdfStringFormat || arg7 === null) && typeof arg8 === 'undefined') {\n this.isOverloadWithPosition = true;\n this.drawString(arg1, arg2, arg3, arg4, arg5, arg6, (this.clientSize.width - arg5), 0, arg7);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n var temparg6 = arg6;\n var temparg7 = arg7;\n var temparg8 = arg8;\n var temparg9 = arg9;\n var layouter = new PdfStringLayouter();\n var result = layouter.layout(arg1, arg2, temparg9, new SizeF(temparg7, temparg8), this.isOverloadWithPosition, this.clientSize);\n if (!result.empty) {\n var rect = this.checkCorrectLayoutRectangle(result.actualSize, temparg5, temparg6, temparg9);\n if (temparg7 <= 0) {\n temparg5 = rect.x;\n temparg7 = rect.width;\n }\n if (temparg8 <= 0) {\n temparg6 = rect.y;\n temparg8 = rect.height;\n }\n this.drawStringLayoutResult(result, arg2, temparg3, temparg4, new RectangleF(temparg5, temparg6, temparg7, temparg8), temparg9);\n this.isEmfTextScaled = false;\n this.emfScalingFactor = new SizeF(0, 0);\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n this.isNormalRender = true;\n this.pdfStringLayoutResult = result;\n this.isUseFontSize = false;\n }\n };\n PdfGraphics.prototype.drawLine = function (arg1, arg2, arg3, arg4, arg5) {\n if (arg2 instanceof PointF) {\n var temparg2 = arg2;\n var temparg3 = arg3;\n this.drawLine(arg1, temparg2.x, temparg2.y, temparg3.x, temparg3.y);\n }\n else {\n var temparg2 = arg2;\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n this.stateControl(arg1, null, null);\n var sw = this.streamWriter;\n sw.beginPath(temparg2, temparg3);\n sw.appendLineSegment(temparg4, temparg5);\n sw.strokePath();\n this.getResources.getResources().requireProcedureSet(this.procedureSets.pdf);\n }\n };\n PdfGraphics.prototype.drawRectangle = function (arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof PdfPen && typeof arg2 === 'number') {\n var temparg3 = arg3;\n this.drawRectangle(arg1, null, arg2, temparg3, arg4, arg5);\n }\n else if (arg1 instanceof PdfBrush && typeof arg2 === 'number') {\n var temparg3 = arg3;\n this.drawRectangle(null, arg1, arg2, temparg3, arg4, arg5);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n var temparg6 = arg6;\n if ((arg2 instanceof PdfTilingBrush)) {\n this.bCSInitialized = false;\n var xOffset = (this.matrix.matrix.offsetX + temparg3);\n var yOffset = void 0;\n if (((this.layer != null) && (this.layer.page != null))) {\n yOffset = ((this.layer.page.size.height - this.matrix.matrix.offsetY) + temparg4);\n }\n else {\n yOffset = ((this.clientSize.height - this.matrix.matrix.offsetY) + temparg4);\n }\n (arg2).location = new PointF(xOffset, yOffset);\n (arg2).graphics.colorSpace = this.colorSpace;\n }\n else if ((arg2 instanceof PdfGradientBrush)) {\n arg2.colorSpace = this.colorSpace;\n }\n if (arg2 instanceof PdfSolidBrush && arg2.color.isEmpty) {\n arg2 = null;\n }\n var temparg1 = arg1;\n var temparg2 = arg2;\n this.stateControl(temparg1, temparg2, null);\n this.streamWriter.appendRectangle(temparg3, temparg4, temparg5, temparg6);\n this.drawPathHelper(temparg1, temparg2, false);\n }\n };\n /**\n * Draw rounded rectangle specified by a brush, pen, coordinate pair, a width, a height and a radius.\n * ```typescript\n * // Create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // Create a new page\n * let page : PdfPage = document.pages.add();\n * // Create brush for draw rectangle\n * let brush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(238, 130, 238));\n * // Create a new PDF pen\n * let pen: PdfPen = new PdfPen(new PdfColor(255, 0, 0), 1);\n * // Draw rounded rectangle\n * page.graphics.drawRoundedRectangle(pen, brush, 20, 20, 100, 50, 5);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param pen Stoke color of the rectangle.\n * @param brush Fill color of the rectangle.\n * @param x The x-coordinate of the upper-left corner of the rectangle to draw.\n * @param y The y-coordinate of the upper-left corner of the rectangle to draw.\n * @param width Width of the rectangle to draw.\n * @param height Height of the rectangle to draw.\n * @param radius Radius of the arcs to draw.\n */\n PdfGraphics.prototype.drawRoundedRectangle = function (pen, brush, x, y, width, height, radius) {\n if (pen === null) {\n throw new Error('pen');\n }\n if (brush === null) {\n throw new Error('brush');\n }\n if (radius === 0) {\n this.drawRectangle(pen, brush, x, y, width, height);\n }\n else {\n var bounds = [x, y, width, height];\n var diameter = radius * 2;\n var size = [diameter, diameter];\n var arc = [bounds[0], bounds[1], size[0], size[1]];\n this._pathPoints = [];\n this._pathTypes = [];\n var startFigure = true;\n startFigure = this._addArc(arc[0], arc[1], arc[2], arc[3], 180, 90, startFigure);\n arc[0] = (bounds[0] + bounds[2]) - diameter;\n startFigure = this._addArc(arc[0], arc[1], arc[2], arc[3], 270, 90, startFigure);\n arc[1] = (bounds[1] + bounds[3]) - diameter;\n startFigure = this._addArc(arc[0], arc[1], arc[2], arc[3], 0, 90, startFigure);\n arc[0] = bounds[0];\n startFigure = this._addArc(arc[0], arc[1], arc[2], arc[3], 90, 90, startFigure);\n var index = this._pathPoints.length - 1;\n var type = ((this._pathTypes[index]));\n type = (type | PathPointType.CloseSubpath);\n this._pathTypes[index] = (type);\n this._drawPath(pen, brush, this._pathPoints, this._pathTypes, PdfFillMode.Alternate);\n this._pathPoints = [];\n this._pathTypes = [];\n }\n };\n PdfGraphics.prototype._addArc = function (x, y, width, height, startAngle, sweepAngle, startFigure) {\n var points = this._getBezierArcPoints(x, y, (x + width), (y + height), startAngle, sweepAngle);\n for (var i = 0; i < points.length; i = i + 8) {\n var point = [points[i], points[i + 1], points[i + 2], points[i + 3], points[i + 4], points[i + 5], points[i + 6], points[i + 7]];\n startFigure = this._addArcPoints(point, PathPointType.Bezier3, startFigure);\n }\n return startFigure;\n };\n PdfGraphics.prototype._addArcPoints = function (points, pointType, startFigure) {\n for (var i = 0; i < points.length; i++) {\n var point = new PointF(points[i], points[(i + 1)]);\n if (i === 0) {\n if (this._pathPoints.length === 0 || startFigure) {\n this._addPoint(point, PathPointType.Start);\n startFigure = false;\n }\n else if (point.x !== this._getLastPoint().x || point.y !== this._getLastPoint().y) {\n this._addPoint(point, PathPointType.Line);\n }\n }\n else {\n this._addPoint(point, pointType);\n }\n i++;\n }\n return startFigure;\n };\n PdfGraphics.prototype._getLastPoint = function () {\n var lastPoint = new PointF(0, 0);\n var count = this._pathPoints.length;\n if (count > 0) {\n lastPoint.x = this._pathPoints[(count - 1)].x;\n lastPoint.y = this._pathPoints[(count - 1)].y;\n }\n return lastPoint;\n };\n PdfGraphics.prototype._addPoint = function (point, type) {\n this._pathPoints.push(point);\n this._pathTypes.push(type);\n };\n PdfGraphics.prototype._getBezierArcPoints = function (x1, y1, x2, y2, s1, e1) {\n if ((x1 > x2)) {\n var tmp = void 0;\n tmp = x1;\n x1 = x2;\n x2 = tmp;\n }\n if ((y2 > y1)) {\n var tmp = void 0;\n tmp = y1;\n y1 = y2;\n y2 = tmp;\n }\n var fragAngle;\n var numFragments;\n if ((Math.abs(e1) <= 90)) {\n fragAngle = e1;\n numFragments = 1;\n }\n else {\n numFragments = (Math.ceil((Math.abs(e1) / 90)));\n fragAngle = (e1 / numFragments);\n }\n var xcen = ((x1 + x2) / 2);\n var ycen = ((y1 + y2) / 2);\n var rx = ((x2 - x1) / 2);\n var ry = ((y2 - y1) / 2);\n var halfAng = ((fragAngle * (Math.PI / 360)));\n var kappa = (Math.abs(4.0 / 3.0 * (1.0 - Math.cos(halfAng)) / Math.sin(halfAng)));\n var pointList = [];\n for (var i = 0; (i < numFragments); i++) {\n var theta0 = (((s1 + (i * fragAngle)) * (Math.PI / 180)));\n var theta1 = (((s1 + ((i + 1) * fragAngle)) * (Math.PI / 180)));\n var cos0 = (Math.cos(theta0));\n var cos1 = (Math.cos(theta1));\n var sin0 = (Math.sin(theta0));\n var sin1 = (Math.sin(theta1));\n if ((fragAngle > 0)) {\n pointList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 - (kappa * sin0)))), (ycen - (ry * (sin0 + (kappa * cos0)))), (xcen + (rx * (cos1 + (kappa * sin1)))), (ycen - (ry * (sin1 - (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n else {\n pointList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 + (kappa * sin0)))), (ycen - (ry * (sin0 - (kappa * cos0)))), (xcen + (rx * (cos1 - (kappa * sin1)))), (ycen - (ry * (sin1 + (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n }\n return pointList;\n };\n PdfGraphics.prototype.drawPathHelper = function (arg1, arg2, arg3, arg4) {\n if (typeof arg3 === 'boolean') {\n var temparg3 = arg3;\n this.drawPathHelper(arg1, arg2, PdfFillMode.Winding, temparg3);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var isPen = arg1 != null;\n var isBrush = arg2 != null;\n var isEvenOdd = (temparg3 === PdfFillMode.Alternate);\n if (isPen && isBrush) {\n this.streamWriter.fillStrokePath(isEvenOdd);\n }\n else if (!isPen && !isBrush) {\n this.streamWriter.endPath();\n }\n else if (isPen) {\n this.streamWriter.strokePath();\n }\n else {\n this.streamWriter.fillPath(isEvenOdd);\n }\n }\n };\n PdfGraphics.prototype.drawImage = function (arg1, arg2, arg3, arg4, arg5) {\n if (typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'undefined') {\n var size = arg1.physicalDimension;\n this.drawImage(arg1, arg2, arg3, size.width, size.height);\n }\n else {\n var temparg2 = arg2;\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n arg1.save();\n var matrix = new PdfTransformationMatrix();\n this.getTranslateTransform(temparg2, (temparg3 + temparg5), matrix);\n this.getScaleTransform(arg4, arg5, matrix);\n this.pdfStreamWriter.write('q');\n this.pdfStreamWriter.modifyCtm(matrix);\n // Output template.\n var resources = this.getResources.getResources();\n if (typeof this.pageLayer !== 'undefined' && this.page != null) {\n resources.document = this.page.document;\n }\n var name_2 = resources.getName(arg1);\n if (typeof this.pageLayer !== 'undefined') {\n this.page.setResources(resources);\n }\n this.pdfStreamWriter.executeObject(name_2);\n this.pdfStreamWriter.write(Operators.restoreState);\n this.pdfStreamWriter.write(Operators.newLine);\n var resource = this.getResources.getResources();\n resource.requireProcedureSet(this.procedureSets.imageB);\n resource.requireProcedureSet(this.procedureSets.imageC);\n resource.requireProcedureSet(this.procedureSets.imageI);\n resource.requireProcedureSet(this.procedureSets.text);\n }\n };\n //Implementation\n /**\n * Returns `bounds` of the line info.\n * @private\n */\n PdfGraphics.prototype.getLineBounds = function (lineIndex, result, font, layoutRectangle, format) {\n var bounds;\n if (!result.empty && lineIndex < result.lineCount && lineIndex >= 0) {\n var line = result.lines[lineIndex];\n var vShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n var y = vShift + layoutRectangle.y + (result.lineHeight * lineIndex);\n var lineWidth = line.width;\n var hShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(line, format, layoutRectangle, (lineIndex === 0));\n hShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n var x = layoutRectangle.x + hShift;\n var width = (!this.shouldJustify(line, layoutRectangle.width, format)) ? lineWidth - lineIndent : layoutRectangle.width - lineIndent;\n var height = result.lineHeight;\n bounds = new RectangleF(x, y, width, height);\n }\n else {\n bounds = new RectangleF(0, 0, 0, 0);\n }\n return bounds;\n };\n /**\n * Creates `lay outed rectangle` depending on the text settings.\n * @private\n */\n PdfGraphics.prototype.checkCorrectLayoutRectangle = function (textSize, x, y, format) {\n var layoutedRectangle = new RectangleF(x, y, textSize.width, textSize.width);\n if (format != null) {\n switch (format.alignment) {\n case PdfTextAlignment.Center:\n layoutedRectangle.x -= layoutedRectangle.width / 2;\n break;\n case PdfTextAlignment.Right:\n layoutedRectangle.x -= layoutedRectangle.width;\n break;\n }\n switch (format.lineAlignment) {\n case PdfVerticalAlignment.Middle:\n layoutedRectangle.y -= layoutedRectangle.height / 2;\n break;\n case PdfVerticalAlignment.Bottom:\n layoutedRectangle.y -= layoutedRectangle.height;\n break;\n }\n }\n return layoutedRectangle;\n };\n /**\n * Sets the `layer` for the graphics.\n * @private\n */\n PdfGraphics.prototype.setLayer = function (layer) {\n this.pageLayer = layer;\n var page = layer.page;\n if (page != null && typeof page !== 'undefined') {\n page.beginSave = this.pageSave;\n }\n };\n /**\n * Adding page number field before page saving.\n * @private\n */\n PdfGraphics.prototype.pageSave = function (page) {\n if (page.graphics.automaticFields != null) {\n for (var i = 0; i < page.graphics.automaticFields.automaticFields.length; i++) {\n var fieldInfo = page.graphics.automaticFields.automaticFields[i];\n fieldInfo.field.performDraw(page.graphics, fieldInfo.location, fieldInfo.scalingX, fieldInfo.scalingY);\n }\n }\n };\n /**\n * `Draws a layout result`.\n * @private\n */\n PdfGraphics.prototype.drawStringLayoutResult = function (result, font, pen, brush, layoutRectangle, format) {\n if (!result.empty) {\n this.applyStringSettings(font, pen, brush, format, layoutRectangle);\n // Set text scaling\n var textScaling = (format != null) ? format.horizontalScalingFactor : 100.0;\n if (textScaling !== this.previousTextScaling && !this.isEmfTextScaled) {\n this.pdfStreamWriter.setTextScaling(textScaling);\n this.previousTextScaling = textScaling;\n }\n var height = (format == null || format.lineSpacing === 0) ? font.height : format.lineSpacing + font.height;\n var subScript = (format != null && format.subSuperScript === PdfSubSuperScript.SubScript);\n var shift = 0;\n shift = (subScript) ? height - (font.height + font.metrics.getDescent(format)) : (height - font.metrics.getAscent(format));\n this.shift = shift;\n this.pdfStreamWriter.startNextLine(layoutRectangle.x, layoutRectangle.y - shift);\n this.pdfStreamWriter.setLeading(+height);\n var resultHeight = 0;\n var remainingString = '';\n for (var i = 0; i < result.lines.length; i++) {\n resultHeight += result.lineHeight;\n if ((layoutRectangle.y + resultHeight) > this.clientSize.height) {\n this.startCutIndex = i;\n break;\n }\n }\n for (var j = this.startCutIndex; (j < result.lines.length && j >= 0); j++) {\n remainingString += result.lines[j].text;\n }\n var bounds = new RectangleF(layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height);\n this.drawLayoutResult(result, font, format, layoutRectangle);\n this.underlineStrikeoutText(pen, brush, result, font, bounds, format);\n this.isEmfPlus = false;\n this.isUseFontSize = false;\n if (this.startCutIndex !== -1) {\n var page = this.getNextPage();\n page.graphics.drawString(remainingString, font, pen, brush, layoutRectangle.x, 0, layoutRectangle.width, 0, format);\n }\n }\n else {\n throw new Error('ArgumentNullException:result');\n }\n };\n /**\n * Gets the `next page`.\n * @private\n */\n PdfGraphics.prototype.getNextPage = function () {\n var section = this.currentPage.section;\n var nextPage = null;\n var index = section.indexOf(this.currentPage);\n if (index === section.count - 1) {\n nextPage = section.add();\n }\n else {\n nextPage = section.getPages()[index + 1];\n }\n return nextPage;\n };\n PdfGraphics.prototype.setClip = function (rectangle, mode) {\n if (typeof mode === 'undefined') {\n this.setClip(rectangle, PdfFillMode.Winding);\n }\n else {\n this.pdfStreamWriter.appendRectangle(rectangle);\n this.pdfStreamWriter.clipPath((mode === PdfFillMode.Alternate));\n }\n };\n /**\n * Applies all the `text settings`.\n * @private\n */\n PdfGraphics.prototype.applyStringSettings = function (font, pen, brush, format, bounds) {\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n else if ((brush instanceof PdfGradientBrush)) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n var setLineWidth = false;\n var tm = this.getTextRenderingMode(pen, brush, format);\n this.stateControl(pen, brush, font, format);\n this.pdfStreamWriter.beginText();\n if ((tm) !== this.previousTextRenderingMode) {\n this.pdfStreamWriter.setTextRenderingMode(tm);\n this.previousTextRenderingMode = tm;\n }\n // Set character spacing.\n var cs = (format != null) ? format.characterSpacing : 0;\n if (cs !== this.previousCharacterSpacing && !this.isEmfTextScaled) {\n this.pdfStreamWriter.setCharacterSpacing(cs);\n this.previousCharacterSpacing = cs;\n }\n // Set word spacing.\n // NOTE: it works only if the space code is equal to 32 (0x20).\n var ws = (format != null) ? format.wordSpacing : 0;\n if (ws !== this.previousWordSpacing) {\n this.pdfStreamWriter.setWordSpacing(ws);\n this.previousWordSpacing = ws;\n }\n };\n /**\n * Calculates `shift value` if the text is vertically aligned.\n * @private\n */\n PdfGraphics.prototype.getTextVerticalAlignShift = function (textHeight, boundsHeight, format) {\n var shift = 0;\n if (boundsHeight >= 0 && format != null && format.lineAlignment !== PdfVerticalAlignment.Top) {\n switch (format.lineAlignment) {\n case PdfVerticalAlignment.Middle:\n shift = (boundsHeight - textHeight) / 2;\n break;\n case PdfVerticalAlignment.Bottom:\n shift = boundsHeight - textHeight;\n break;\n }\n }\n return shift;\n };\n /**\n * `Draws layout result`.\n * @private\n */\n PdfGraphics.prototype.drawLayoutResult = function (result, font, format, layoutRectangle) {\n var vAlignShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n if (vAlignShift !== 0) {\n this.pdfStreamWriter.startNextLine(0, vAlignShift);\n }\n var ttfFont = font;\n var unicode = (ttfFont != null && ttfFont.isUnicode);\n var embed = (ttfFont != null && ttfFont.isEmbedFont);\n var lines = result.lines;\n for (var i = 0, len = lines.length; (i < len && i !== this.startCutIndex); i++) {\n var lineInfo = lines[i];\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var hAlignShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(lineInfo, format, layoutRectangle, (i === 0));\n hAlignShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n if (hAlignShift !== 0 && !this.isEmfTextScaled) {\n this.pdfStreamWriter.startNextLine(hAlignShift, 0);\n }\n if (unicode) {\n this.drawUnicodeLine(lineInfo, layoutRectangle, font, format);\n }\n else {\n this.drawAsciiLine(lineInfo, layoutRectangle, font, format);\n }\n if (hAlignShift !== 0 && !this.isEmfTextScaled) {\n this.pdfStreamWriter.startNextLine(-hAlignShift, 0);\n }\n if (this.isOverloadWithPosition && lines.length > 1) {\n this.pdfStreamWriter.startNextLine(-(layoutRectangle.x), 0);\n layoutRectangle.x = 0;\n layoutRectangle.width = this.clientSize.width;\n this.isOverloadWithPosition = false;\n this.isPointOverload = true;\n }\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n if (vAlignShift !== 0) {\n this.pdfStreamWriter.startNextLine(0, -(vAlignShift - result.lineHeight));\n }\n this.pdfStreamWriter.endText();\n };\n /**\n * `Draws Ascii line`.\n * @private\n */\n PdfGraphics.prototype.drawAsciiLine = function (lineInfo, layoutRectangle, font, format) {\n this.justifyLine(lineInfo, layoutRectangle.width, format);\n var value = '';\n if (lineInfo.text.indexOf('(') !== -1 || lineInfo.text.indexOf(')') !== -1) {\n for (var i = 0; i < lineInfo.text.length; i++) {\n if (lineInfo.text[i] === '(') {\n value += '\\\\\\(';\n }\n else if (lineInfo.text[i] === ')') {\n value += '\\\\\\)';\n }\n else {\n value += lineInfo.text[i];\n }\n }\n }\n if (value === '') {\n value = lineInfo.text;\n }\n var line = '(' + value + ')';\n this.pdfStreamWriter.showNextLineText(new PdfString(line));\n };\n /**\n * Draws unicode line.\n * @private\n */\n PdfGraphics.prototype.drawUnicodeLine = function (lineInfo, layoutRectangle, font, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var rtl = (format !== null && typeof format !== 'undefined' && format.rightToLeft);\n var useWordSpace = (format !== null && typeof format !== 'undefined' && (format.wordSpacing !== 0 || format.alignment === PdfTextAlignment.Justify));\n var ttfFont = font;\n var wordSpacing = this.justifyLine(lineInfo, layoutRectangle.width, format);\n var rtlRender = new RtlRenderer();\n if (rtl || (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None)) {\n var blocks = null;\n var rightAlign = (format !== null && typeof format !== 'undefined' && format.alignment === PdfTextAlignment.Right);\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n /* tslint:disable-next-line:max-line-length */\n blocks = rtlRender.layout(line, ttfFont, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, useWordSpace, format);\n }\n else {\n blocks = rtlRender.layout(line, ttfFont, rightAlign, useWordSpace, format);\n }\n var words = null;\n if (blocks.length > 1) {\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n /* tslint:disable-next-line:max-line-length */\n words = rtlRender.splitLayout(line, ttfFont, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, useWordSpace, format);\n }\n else {\n words = rtlRender.splitLayout(line, ttfFont, rightAlign, useWordSpace, format);\n }\n }\n else {\n words = [line];\n }\n this.drawUnicodeBlocks(blocks, words, ttfFont, format, wordSpacing);\n }\n else {\n if (useWordSpace) {\n var result = this.breakUnicodeLine(line, ttfFont, null);\n var blocks = result.tokens;\n var words = result.words;\n this.drawUnicodeBlocks(blocks, words, ttfFont, format, wordSpacing);\n }\n else {\n var token = this.convertToUnicode(line, ttfFont);\n var value = this.getUnicodeString(token);\n this.streamWriter.showNextLineText(value);\n }\n }\n };\n /**\n * Draws array of unicode tokens.\n */\n PdfGraphics.prototype.drawUnicodeBlocks = function (blocks, words, font, format, wordSpacing) {\n if (blocks == null) {\n throw new Error('Argument Null Exception : blocks');\n }\n if (words == null) {\n throw new Error('Argument Null Exception : words');\n }\n if (font == null) {\n throw new Error('Argument Null Exception : font');\n }\n this.streamWriter.startNextLine();\n var x = 0;\n var xShift = 0;\n var firstLineIndent = 0;\n var paragraphIndent = 0;\n try {\n if (format !== null && typeof format !== 'undefined') {\n firstLineIndent = format.firstLineIndent;\n paragraphIndent = format.paragraphIndent;\n format.firstLineIndent = 0;\n format.paragraphIndent = 0;\n }\n var spaceWidth = font.getCharWidth(StringTokenizer.whiteSpace, format) + wordSpacing;\n var characterSpacing = (format != null) ? format.characterSpacing : 0;\n var wordSpace = (format !== null && typeof format !== 'undefined' && wordSpacing === 0) ? format.wordSpacing : 0;\n spaceWidth += characterSpacing + wordSpace;\n for (var i = 0; i < blocks.length; i++) {\n var token = blocks[i];\n var word = words[i];\n var tokenWidth = 0;\n if (x !== 0) {\n this.streamWriter.startNextLine(x, 0);\n }\n if (word.length > 0) {\n tokenWidth += /*Utils.Round(*/ font.measureString(word, format).width /*)*/;\n tokenWidth += characterSpacing;\n var val = this.getUnicodeString(token);\n this.streamWriter.showText(val);\n }\n if (i !== blocks.length - 1) {\n x = tokenWidth + spaceWidth;\n xShift += x;\n }\n }\n // Rolback current line position.\n if (xShift > 0) {\n this.streamWriter.startNextLine(-xShift, 0);\n }\n }\n finally {\n if (format !== null && typeof format !== 'undefined') {\n format.firstLineIndent = firstLineIndent;\n format.paragraphIndent = paragraphIndent;\n }\n }\n };\n /**\n * Breakes the unicode line to the words and converts symbols to glyphs.\n */\n PdfGraphics.prototype.breakUnicodeLine = function (line, ttfFont, words) {\n if (line === null) {\n throw new Error('Argument Null Exception : line');\n }\n words = line.split(null);\n var tokens = [];\n for (var i = 0; i < words.length; i++) {\n // Reconvert string according to unicode standard.\n var word = words[i];\n var token = this.convertToUnicode(word, ttfFont);\n tokens[i] = token;\n }\n return { tokens: tokens, words: words };\n };\n /**\n * Creates PdfString from the unicode text.\n */\n PdfGraphics.prototype.getUnicodeString = function (token) {\n if (token === null) {\n throw new Error('Argument Null Exception : token');\n }\n var val = new PdfString(token);\n val.converted = true;\n val.encode = InternalEnum.ForceEncoding.Ascii;\n return val;\n };\n /**\n * Converts to unicode format.\n */\n PdfGraphics.prototype.convertToUnicode = function (text, ttfFont) {\n var token = null;\n if (text == null) {\n throw new Error('Argument Null Exception : text');\n }\n if (ttfFont == null) {\n throw new Error('Argument Null Exception : ttfFont');\n }\n if (ttfFont.fontInternal instanceof UnicodeTrueTypeFont) {\n var ttfReader = ttfFont.fontInternal.ttfReader;\n ttfFont.setSymbols(text);\n token = ttfReader.convertString(text);\n var bytes = PdfString.toUnicodeArray(token, false);\n token = PdfString.byteToString(bytes);\n }\n return token;\n };\n /**\n * `Justifies` the line if needed.\n * @private\n */\n PdfGraphics.prototype.justifyLine = function (lineInfo, boundsWidth, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var shouldJustify = this.shouldJustify(lineInfo, boundsWidth, format);\n var hasWordSpacing = (format != null && format.wordSpacing !== 0);\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n var wordSpace = 0;\n if (shouldJustify) {\n // Correct line width.\n if (hasWordSpacing) {\n lineWidth -= (whitespacesCount * format.wordSpacing);\n }\n var difference = boundsWidth - lineWidth;\n wordSpace = difference / whitespacesCount;\n this.pdfStreamWriter.setWordSpacing(wordSpace);\n }\n else {\n // If there is justifying, but the line shouldn't be justified, restore default word spacing.\n if (hasWordSpacing) {\n this.pdfStreamWriter.setWordSpacing(format.wordSpacing);\n }\n else {\n this.pdfStreamWriter.setWordSpacing(0);\n }\n }\n return wordSpace;\n };\n /**\n * `Reset` or reinitialize the current graphic value.\n * @private\n */\n PdfGraphics.prototype.reset = function (size) {\n this.canvasSize = size;\n this.streamWriter.clear();\n this.initialize();\n this.initializeCoordinates();\n };\n /**\n * Checks whether the line should be `justified`.\n * @private\n */\n PdfGraphics.prototype.shouldJustify = function (lineInfo, boundsWidth, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var justifyStyle = (format != null && format.alignment === PdfTextAlignment.Justify);\n var goodWidth = (boundsWidth >= 0 && lineWidth < boundsWidth);\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n var hasSpaces = (whitespacesCount > 0 && line[0] !== StringTokenizer.whiteSpace);\n var goodLineBreakStyle = ((lineInfo.lineType & LineType.LayoutBreak) > 0);\n var shouldJustify = (justifyStyle && goodWidth && hasSpaces && (goodLineBreakStyle || format.alignment === PdfTextAlignment.Justify));\n return shouldJustify;\n };\n /**\n * Emulates `Underline, Strikeout` of the text if needed.\n * @private\n */\n PdfGraphics.prototype.underlineStrikeoutText = function (pen, brush, result, font, layoutRectangle, format) {\n if (font.underline || font.strikeout) {\n // Calculate line width.\n var linePen = this.createUnderlineStikeoutPen(pen, brush, font, format);\n if (linePen != null) {\n // Approximate line positions.\n var vShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n var underlineYOffset = 0;\n underlineYOffset = layoutRectangle.y + vShift + font.metrics.getAscent(format) + 1.5 * linePen.width;\n var strikeoutYOffset = layoutRectangle.y + vShift + font.metrics.getHeight(format) / 2 + 1.5 * linePen.width;\n var lines = result.lines;\n // Run through the text and draw lines.\n for (var i = 0, len = result.lineCount; i < len; i++) {\n var lineInfo = lines[i];\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var hShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(lineInfo, format, layoutRectangle, (i === 0));\n hShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n var x1 = layoutRectangle.x + hShift;\n var x2 = (!this.shouldJustify(lineInfo, layoutRectangle.width, format)) ? x1 + lineWidth - lineIndent : x1 + layoutRectangle.width - lineIndent;\n if (font.underline) {\n var y = underlineYOffset;\n this.drawLine(linePen, x1, y, x2, y);\n underlineYOffset += result.lineHeight;\n }\n if (font.strikeout) {\n var y = strikeoutYOffset;\n this.drawLine(linePen, x1, y, x2, y);\n strikeoutYOffset += result.lineHeight;\n }\n if (this.isPointOverload && lines.length > 1) {\n layoutRectangle.x = 0;\n layoutRectangle.width = this.clientSize.width;\n }\n }\n this.isPointOverload = false;\n }\n }\n };\n /**\n * `Creates a pen` for drawing lines in the text.\n * @private\n */\n PdfGraphics.prototype.createUnderlineStikeoutPen = function (pen, brush, font, format) {\n // Calculate line width.\n var lineWidth = font.metrics.getSize(format) / 20;\n var linePen = null;\n // Create a pen fo the lines.\n if (pen != null) {\n linePen = new PdfPen(pen.color, lineWidth);\n }\n else if (brush != null) {\n linePen = new PdfPen(brush, lineWidth);\n }\n return linePen;\n };\n /**\n * Return `text rendering mode`.\n * @private\n */\n PdfGraphics.prototype.getTextRenderingMode = function (pen, brush, format) {\n var tm = TextRenderingMode.None;\n if (pen != null && brush != null) {\n tm = TextRenderingMode.FillStroke;\n }\n else if (pen != null) {\n tm = TextRenderingMode.Stroke;\n }\n else {\n tm = TextRenderingMode.Fill;\n }\n if (format != null && format.clipPath) {\n tm |= TextRenderingMode.ClipFlag;\n }\n return tm;\n };\n /**\n * Returns `line indent` for the line.\n * @private\n */\n PdfGraphics.prototype.getLineIndent = function (lineInfo, format, layoutBounds, firstLine) {\n var lineIndent = 0;\n var firstParagraphLine = ((lineInfo.lineType & LineType.FirstParagraphLine) > 0);\n if (format != null && firstParagraphLine) {\n lineIndent = (firstLine) ? format.firstLineIndent : format.paragraphIndent;\n lineIndent = (layoutBounds.width > 0) ? Math.min(layoutBounds.width, lineIndent) : lineIndent;\n }\n return lineIndent;\n };\n /**\n * Calculates shift value if the line is `horizontaly aligned`.\n * @private\n */\n PdfGraphics.prototype.getHorizontalAlignShift = function (lineWidth, boundsWidth, format) {\n var shift = 0;\n if (boundsWidth >= 0 && format != null && format.alignment !== PdfTextAlignment.Left) {\n switch (format.alignment) {\n case PdfTextAlignment.Center:\n shift = (boundsWidth - lineWidth) / 2;\n break;\n case PdfTextAlignment.Right:\n shift = boundsWidth - lineWidth;\n break;\n }\n }\n return shift;\n };\n /**\n * Gets or sets the value that indicates `text direction` mode.\n * @private\n */\n PdfGraphics.prototype.rightToLeft = function (format) {\n var rtl = (format !== null && typeof format !== 'undefined' && format.rightToLeft);\n if (format !== null && typeof format !== 'undefined') {\n if (format.textDirection !== PdfTextDirection.None && typeof format.textDirection !== 'undefined') {\n rtl = true;\n }\n }\n return rtl;\n };\n PdfGraphics.prototype.stateControl = function (pen, brush, font, format) {\n if (typeof format === 'undefined') {\n this.stateControl(pen, brush, font, null);\n }\n else {\n if (brush instanceof PdfGradientBrush) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n var saveState = false;\n if (brush !== null) {\n var solidBrush = brush;\n if (typeof this.pageLayer !== 'undefined' && this.pageLayer != null) {\n if (this.colorSpaceChanged === false) {\n this.lastDocumentCS = this.pageLayer.page.document.colorSpace;\n this.lastGraphicsCS = this.pageLayer.page.graphics.colorSpace;\n this.colorSpace = this.pageLayer.page.document.colorSpace;\n this.currentColorSpace = this.pageLayer.page.document.colorSpace;\n this.colorSpaceChanged = true;\n }\n }\n this.initCurrentColorSpace(this.currentColorSpace);\n }\n else if (pen != null) {\n var pdfPen = pen;\n if (typeof this.pageLayer !== 'undefined' && this.pageLayer != null) {\n this.colorSpace = this.pageLayer.page.document.colorSpace;\n this.currentColorSpace = this.pageLayer.page.document.colorSpace;\n }\n this.initCurrentColorSpace(this.currentColorSpace);\n }\n this.penControl(pen, saveState);\n this.brushControl(brush, saveState);\n this.fontControl(font, format, saveState);\n }\n };\n /**\n * Initializes the `current color space`.\n * @private\n */\n PdfGraphics.prototype.initCurrentColorSpace = function (colorspace) {\n var re = this.getResources.getResources();\n if (!this.bCSInitialized) {\n if (this.currentColorSpace != PdfColorSpace.GrayScale) {\n this.pdfStreamWriter.setColorSpace('Device' + this.currentColorSpaces[this.currentColorSpace], true);\n this.pdfStreamWriter.setColorSpace('Device' + this.currentColorSpaces[this.currentColorSpace], false);\n this.bCSInitialized = true;\n }\n else {\n this.pdfStreamWriter.setColorSpace('DeviceGray', true);\n this.pdfStreamWriter.setColorSpace('DeviceGray', false);\n this.bCSInitialized = true;\n }\n }\n };\n /**\n * Controls the `pen state`.\n * @private\n */\n PdfGraphics.prototype.penControl = function (pen, saveState) {\n if (pen != null) {\n this.currentPen = pen;\n pen.monitorChanges(this.currentPen, this.pdfStreamWriter, this.getResources, saveState, this.colorSpace, this.matrix.clone());\n this.currentPen = pen.clone();\n }\n };\n /**\n * Controls the `brush state`.\n * @private\n */\n PdfGraphics.prototype.brushControl = function (brush, saveState) {\n if (brush != null && typeof brush !== 'undefined') {\n var b = brush.clone();\n var lgb = b;\n if (lgb !== null && typeof lgb !== 'undefined' && !(brush instanceof PdfSolidBrush) && !(brush instanceof PdfTilingBrush)) {\n var m = lgb.matrix;\n var matrix = this.matrix.clone();\n if ((m != null)) {\n m.multiply(matrix);\n matrix = m;\n }\n lgb.matrix = matrix;\n }\n this.currentBrush = lgb;\n var br = (brush);\n b.monitorChanges(this.currentBrush, this.pdfStreamWriter, this.getResources, saveState, this.colorSpace);\n this.currentBrush = brush;\n brush = null;\n }\n };\n /**\n * Saves the font and other `font settings`.\n * @private\n */\n PdfGraphics.prototype.fontControl = function (font, format, saveState) {\n if (font != null) {\n var curSubSuper = (format != null) ? format.subSuperScript : PdfSubSuperScript.None;\n var prevSubSuper = (this.currentStringFormat != null) ? this.currentStringFormat.subSuperScript : PdfSubSuperScript.None;\n if (saveState || font !== this.currentFont || curSubSuper !== prevSubSuper) {\n var resources = this.getResources.getResources();\n this.currentFont = font;\n this.currentStringFormat = format;\n var size = font.metrics.getSize(format);\n this.isEmfTextScaled = false;\n var fontName = resources.getName(font);\n this.pdfStreamWriter.setFont(font, fontName, size);\n }\n }\n };\n PdfGraphics.prototype.setTransparency = function (arg1, arg2, arg3) {\n if (typeof arg2 === 'undefined') {\n this.istransparencySet = true;\n this.setTransparency(arg1, arg1, PdfBlendMode.Normal);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n this.setTransparency(arg1, arg2, PdfBlendMode.Normal);\n }\n else {\n if (this.trasparencies == null) {\n this.trasparencies = new TemporaryDictionary();\n }\n var transp = null;\n var td = new TransparencyData(arg1, arg2, arg3);\n if (this.trasparencies.containsKey(td)) {\n transp = this.trasparencies.getValue(td);\n }\n if (transp == null) {\n transp = new PdfTransparency(arg1, arg2, arg3);\n this.trasparencies.setValue(td, transp);\n }\n var resources = this.getResources.getResources();\n var name_3 = resources.getName(transp);\n var sw = this.streamWriter;\n sw.setGraphicsState(name_3);\n }\n };\n PdfGraphics.prototype.clipTranslateMargins = function (x, y, left, top, right, bottom) {\n if (x instanceof RectangleF && typeof y === 'undefined') {\n this.clipBounds = x;\n this.pdfStreamWriter.writeComment('Clip margins.');\n this.pdfStreamWriter.appendRectangle(x);\n this.pdfStreamWriter.closePath();\n this.pdfStreamWriter.clipPath(false);\n this.pdfStreamWriter.writeComment('Translate co-ordinate system.');\n this.translateTransform(x.x, x.y);\n }\n else if (typeof x === 'number') {\n var clipArea = new RectangleF(left, top, this.size.width - left - right, this.size.height - top - bottom);\n this.clipBounds = clipArea;\n this.pdfStreamWriter.writeComment(\"Clip margins.\");\n this.pdfStreamWriter.appendRectangle(clipArea);\n this.pdfStreamWriter.closePath();\n this.pdfStreamWriter.clipPath(false);\n this.pdfStreamWriter.writeComment(\"Translate co-ordinate system.\");\n this.translateTransform(x, y);\n }\n };\n /**\n * `Updates y` co-ordinate.\n * @private\n */\n PdfGraphics.prototype.updateY = function (y) {\n return -y;\n };\n /**\n * Used to `translate the transformation`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set translate transform\n * page1.graphics.translateTransform(100, 100);\n * //\n * // draw the rectangle after applying translate transform\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param offsetX The x-coordinate of the translation.\n * @param offsetY The y-coordinate of the translation.\n */\n PdfGraphics.prototype.translateTransform = function (offsetX, offsetY) {\n var matrix = new PdfTransformationMatrix();\n this.getTranslateTransform(offsetX, offsetY, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Translates` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getTranslateTransform = function (x, y, input) {\n input.translate(x, this.updateY(y));\n return input;\n };\n /**\n * Applies the specified `scaling operation` to the transformation matrix of this Graphics by prepending it to the object's transformation matrix.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // apply scaling trasformation\n * page1.graphics.scaleTransform(1.5, 2);\n * //\n * // draw the rectangle after applying scaling transform\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param scaleX Scale factor in the x direction.\n * @param scaleY Scale factor in the y direction.\n */\n PdfGraphics.prototype.scaleTransform = function (scaleX, scaleY) {\n var matrix = new PdfTransformationMatrix();\n this.getScaleTransform(scaleX, scaleY, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Scales` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getScaleTransform = function (x, y, input) {\n if (input == null) {\n input = new PdfTransformationMatrix();\n }\n input.scale(x, y);\n return input;\n };\n /**\n * Applies the specified `rotation` to the transformation matrix of this Graphics.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set RotateTransform with 25 degree of angle\n * page1.graphics.rotateTransform(25);\n * //\n * // draw the rectangle after RotateTransformation\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param angle Angle of rotation in degrees.\n */\n PdfGraphics.prototype.rotateTransform = function (angle) {\n var matrix = new PdfTransformationMatrix();\n this.getRotateTransform(angle, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Initializes coordinate system`.\n * @private\n */\n PdfGraphics.prototype.initializeCoordinates = function () {\n // Matrix equation: TM(T-1)=M', where T=[1 0 0 -1 0 h]\n this.pdfStreamWriter.writeComment('Change co-ordinate system to left/top.');\n // Translate co-ordinates only, don't flip.\n if (this.mediaBoxUpperRightBound !== -(this.size.height)) {\n if (this.cropBox == null) {\n if (this.mediaBoxUpperRightBound === this.size.height || this.mediaBoxUpperRightBound === 0) {\n this.translateTransform(0, this.updateY(this.size.height));\n }\n else {\n this.translateTransform(0, this.updateY(this.mediaBoxUpperRightBound));\n }\n }\n }\n };\n /**\n * `Rotates` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getRotateTransform = function (angle, input) {\n if (input == null || typeof input === 'undefined') {\n input = new PdfTransformationMatrix();\n }\n input.rotate(this.updateY(angle));\n return input;\n };\n /**\n * `Saves` the current state of this Graphics and identifies the saved state with a GraphicsState.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // save the graphics state\n * let state1 : PdfGraphicsState = page1.graphics.save();\n * //\n * page1.graphics.scaleTransform(1.5, 2);\n * // draw the rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // restore the graphics state\n * page1.graphics.restore(state1);\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfGraphics.prototype.save = function () {\n var state = new PdfGraphicsState(this, this.matrix.clone());\n state.brush = this.currentBrush;\n state.pen = this.currentPen;\n state.font = this.currentFont;\n state.colorSpace = this.currentColorSpace;\n state.characterSpacing = this.previousCharacterSpacing;\n state.wordSpacing = this.previousWordSpacing;\n state.textScaling = this.previousTextScaling;\n state.textRenderingMode = this.previousTextRenderingMode;\n this.graphicsState.push(state);\n this.pdfStreamWriter.saveGraphicsState();\n return state;\n };\n PdfGraphics.prototype.restore = function (state) {\n if (typeof state === 'undefined') {\n if (this.graphicsState.length > 0) {\n this.doRestoreState();\n }\n }\n else {\n if (this.graphicsState.indexOf(state) !== -1) {\n for (;;) {\n if (this.graphicsState.length === 0) {\n break;\n }\n var popState = this.doRestoreState();\n if (popState === state) {\n break;\n }\n }\n }\n }\n };\n /**\n * `Restores graphics state`.\n * @private\n */\n PdfGraphics.prototype.doRestoreState = function () {\n var state = this.graphicsState.pop();\n this.transformationMatrix = state.matrix;\n this.currentBrush = state.brush;\n this.currentPen = state.pen;\n this.currentFont = state.font;\n this.currentColorSpace = state.colorSpace;\n this.previousCharacterSpacing = state.characterSpacing;\n this.previousWordSpacing = state.wordSpacing;\n this.previousTextScaling = state.textScaling;\n this.previousTextRenderingMode = state.textRenderingMode;\n this.pdfStreamWriter.restoreGraphicsState();\n return state;\n };\n /**\n * `Draws the specified path`, using its original physical size, at the location specified by a coordinate pair.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * //Create new PDF path.\n * let path : PdfPath = new PdfPath();\n * //Add line path points.\n * path.addLine(new PointF(10, 100), new PointF(10, 200));\n * path.addLine(new PointF(100, 100), new PointF(100, 200));\n * path.addLine(new PointF(100, 200), new PointF(55, 150));\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(255, 0, 0));\n * // set brush\n * let brush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the path\n * page1.graphics.drawPath(pen, brush, path);\n * //\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param pen Color of the text.\n * @param brush Color of the text.\n * @param path Draw path.\n */\n PdfGraphics.prototype.drawPath = function (pen, brush, path) {\n this._drawPath(pen, brush, path.pathPoints, path.pathTypes, path.fillMode);\n };\n PdfGraphics.prototype._drawPath = function (pen, brush, pathPoints, pathTypes, fillMode) {\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n else if (brush instanceof PdfGradientBrush) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n this.stateControl(pen, brush, null);\n this.buildUpPath(pathPoints, pathTypes);\n this.drawPathHelper(pen, brush, fillMode, false);\n };\n /* tslint:disable-next-line:max-line-length */\n PdfGraphics.prototype.drawArc = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n if (arg2 instanceof RectangleF) {\n this.drawArc(arg1, arg2.x, arg2.y, arg2.width, arg2.height, arg3, arg4);\n }\n else {\n if ((arg7 !== 0)) {\n this.stateControl(arg1, null, null);\n this.constructArcPath(arg2, arg3, (arg2 + arg4), (arg3 + arg5), arg6, arg7);\n this.drawPathHelper(arg1, null, false);\n }\n }\n };\n /**\n * Builds up the path.\n * @private\n */\n PdfGraphics.prototype.buildUpPath = function (arg1, arg2) {\n var cnt = arg1.length;\n for (var i = 0; i < cnt; ++i) {\n var typeValue = 0;\n var point = arg1[i];\n switch (((arg2[i] & (PdfGraphics.pathTypesValuesMask)))) {\n case PathPointType.Start:\n this.pdfStreamWriter.beginPath(point.x, point.y);\n break;\n case PathPointType.Bezier3:\n var p2 = new PointF(0, 0);\n var p3 = new PointF(0, 0);\n var result1 = this.getBezierPoints(arg1, arg2, i, p2, p3);\n this.pdfStreamWriter.appendBezierSegment(point, result1.p2, result1.p3);\n i = result1.i;\n break;\n case PathPointType.Line:\n this.pdfStreamWriter.appendLineSegment(point);\n break;\n default:\n throw new Error('ArithmeticException - Incorrect path formation.');\n }\n typeValue = arg2[i];\n this.checkFlags(typeValue);\n }\n };\n /**\n * Gets the bezier points from respective arrays.\n * @private\n */\n /* tslint:disable-next-line:max-line-length */\n PdfGraphics.prototype.getBezierPoints = function (points, types, i, p2, p3) {\n var errorMsg = 'Malforming path.';\n ++i;\n if ((((types[i] & PdfGraphics.pathTypesValuesMask)) === PathPointType.Bezier3)) {\n p2 = points[i];\n ++i;\n if ((((types[i] & PdfGraphics.pathTypesValuesMask)) === PathPointType.Bezier3)) {\n p3 = points[i];\n }\n else {\n throw new Error('ArgumentException : errorMsg');\n }\n }\n else {\n throw new Error('ArgumentException : errorMsg');\n }\n return { i: i, p2: p2, p3: p3 };\n };\n /**\n * Checks path point type flags.\n * @private\n */\n PdfGraphics.prototype.checkFlags = function (type) {\n if ((((type & (PathPointType.CloseSubpath))) === PathPointType.CloseSubpath)) {\n this.pdfStreamWriter.closePath();\n }\n };\n /**\n * Constructs the arc path using Bezier curves.\n * @private\n */\n PdfGraphics.prototype.constructArcPath = function (x1, y1, x2, y2, startAng, sweepAngle) {\n var points = this.getBezierArc(x1, y1, x2, y2, startAng, sweepAngle);\n if ((points.length === 0)) {\n return;\n }\n var pt = [points[0], points[1], points[2], points[3], points[4], points[5], points[6], points[7]];\n this.pdfStreamWriter.beginPath(pt[0], pt[1]);\n var i = 0;\n for (i = 0; i < points.length; i = i + 8) {\n pt = [points[i], points[i + 1], points[i + 2], points[i + 3], points[i + 4], points[i + 5], points[i + 6], points[i + 7]];\n this.pdfStreamWriter.appendBezierSegment(pt[2], pt[3], pt[4], pt[5], pt[6], pt[7]);\n }\n };\n /**\n * Gets the bezier points for arc constructing.\n * @private\n */\n PdfGraphics.prototype.getBezierArc = function (numX1, numY1, numX2, numY2, s1, e1) {\n if ((numX1 > numX2)) {\n var tmp = void 0;\n tmp = numX1;\n numX1 = numX2;\n numX2 = tmp;\n }\n if ((numY2 > numY1)) {\n var tmp = void 0;\n tmp = numY1;\n numY1 = numY2;\n numY2 = tmp;\n }\n var fragAngle1;\n var numFragments;\n if ((Math.abs(e1) <= 90)) {\n fragAngle1 = e1;\n numFragments = 1;\n }\n else {\n numFragments = (Math.ceil((Math.abs(e1) / 90)));\n fragAngle1 = (e1 / numFragments);\n }\n var xcen = ((numX1 + numX2) / 2);\n var ycen = ((numY1 + numY2) / 2);\n var rx = ((numX2 - numX1) / 2);\n var ry = ((numY2 - numY1) / 2);\n var halfAng = ((fragAngle1 * (Math.PI / 360)));\n var kappa = (Math.abs(4.0 / 3.0 * (1.0 - Math.cos(halfAng)) / Math.sin(halfAng)));\n var pointsList = [];\n for (var i = 0; (i < numFragments); i++) {\n var thetaValue0 = (((s1 + (i * fragAngle1)) * (Math.PI / 180)));\n var thetaValue1 = (((s1 + ((i + 1) * fragAngle1)) * (Math.PI / 180)));\n var cos0 = (Math.cos(thetaValue0));\n var cos1 = (Math.cos(thetaValue1));\n var sin0 = (Math.sin(thetaValue0));\n var sin1 = (Math.sin(thetaValue1));\n if ((fragAngle1 > 0)) {\n /* tslint:disable-next-line:max-line-length */\n pointsList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 - (kappa * sin0)))), (ycen - (ry * (sin0 + (kappa * cos0)))), (xcen + (rx * (cos1 + (kappa * sin1)))), (ycen - (ry * (sin1 - (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n pointsList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 + (kappa * sin0)))), (ycen - (ry * (sin0 - (kappa * cos0)))), (xcen + (rx * (cos1 - (kappa * sin1)))), (ycen - (ry * (sin1 + (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n }\n return pointsList;\n };\n /* tslint:disable */\n // Constants\n /**\n * Specifies the mask of `path type values`.\n * @private\n */\n PdfGraphics.pathTypesValuesMask = 0xf;\n /**\n * Checks whether the object is `transparencyObject`.\n * @hidden\n * @private\n */\n PdfGraphics.transparencyObject = false;\n return PdfGraphics;\n}());\nexport { PdfGraphics };\n/**\n * `GetResourceEventHandler` class is alternate for event handlers and delegates.\n * @private\n * @hidden\n */\nvar GetResourceEventHandler = /** @class */ (function () {\n /**\n * Initialize instance of `GetResourceEventHandler` class.\n * Alternate for event handlers and delegates.\n * @private\n */\n function GetResourceEventHandler(sender) {\n this.sender = sender;\n }\n /**\n * Return the instance of `PdfResources` class.\n * @private\n */\n GetResourceEventHandler.prototype.getResources = function () {\n return this.sender.getResources();\n };\n return GetResourceEventHandler;\n}());\nexport { GetResourceEventHandler };\nvar PdfGraphicsState = /** @class */ (function () {\n function PdfGraphicsState(graphics, matrix) {\n /**\n * Stores `previous rendering mode`.\n * @default TextRenderingMode.Fill\n * @private\n */\n this.internalTextRenderingMode = TextRenderingMode.Fill;\n /**\n * `Previous character spacing` value or 0.\n * @default 0.0\n * @private\n */\n this.internalCharacterSpacing = 0.0;\n /**\n * `Previous word spacing` value or 0.\n * @default 0.0\n * @private\n */\n this.internalWordSpacing = 0.0;\n /**\n * The previously used `text scaling value`.\n * @default 100.0\n * @private\n */\n this.internalTextScaling = 100.0;\n /**\n * `Current color space`.\n * @default PdfColorSpace.Rgb\n * @private\n */\n this.pdfColorSpace = PdfColorSpace.Rgb;\n if (typeof graphics !== 'undefined') {\n this.pdfGraphics = graphics;\n var elements_1 = [];\n graphics.matrix.matrix.elements.forEach(function (element) {\n elements_1.push(element);\n });\n this.transformationMatrix = new PdfTransformationMatrix();\n this.transformationMatrix.matrix = new Matrix(elements_1);\n }\n }\n Object.defineProperty(PdfGraphicsState.prototype, \"graphics\", {\n // Properties\n /**\n * Gets the parent `graphics object`.\n * @private\n */\n get: function () {\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"matrix\", {\n /**\n * Gets the `current matrix`.\n * @private\n */\n get: function () {\n return this.transformationMatrix;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"characterSpacing\", {\n /**\n * Gets or sets the `current character spacing`.\n * @private\n */\n get: function () {\n return this.internalCharacterSpacing;\n },\n set: function (value) {\n this.internalCharacterSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"wordSpacing\", {\n /**\n * Gets or sets the `word spacing` value.\n * @private\n */\n get: function () {\n return this.internalWordSpacing;\n },\n set: function (value) {\n this.internalWordSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"textScaling\", {\n /**\n * Gets or sets the `text scaling` value.\n * @private\n */\n get: function () {\n return this.internalTextScaling;\n },\n set: function (value) {\n this.internalTextScaling = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"pen\", {\n /**\n * Gets or sets the `current pen` object.\n * @private\n */\n get: function () {\n return this.pdfPen;\n },\n set: function (value) {\n this.pdfPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"brush\", {\n /**\n * Gets or sets the `brush`.\n * @private\n */\n get: function () {\n return this.pdfBrush;\n },\n set: function (value) {\n this.pdfBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"font\", {\n /**\n * Gets or sets the `current font` object.\n * @private\n */\n get: function () {\n return this.pdfFont;\n },\n set: function (value) {\n this.pdfFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"colorSpace\", {\n /**\n * Gets or sets the `current color space` value.\n * @private\n */\n get: function () {\n return this.pdfColorSpace;\n },\n set: function (value) {\n this.pdfColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"textRenderingMode\", {\n /**\n * Gets or sets the `text rendering mode`.\n * @private\n */\n get: function () {\n return this.internalTextRenderingMode;\n },\n set: function (value) {\n this.internalTextRenderingMode = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGraphicsState;\n}());\nexport { PdfGraphicsState };\nvar TransparencyData = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `TransparencyData` class.\n * @private\n */\n function TransparencyData(alphaPen, alphaBrush, blendMode) {\n this.alphaPen = alphaPen;\n this.alphaBrush = alphaBrush;\n this.blendMode = blendMode;\n }\n return TransparencyData;\n}());\n/* tslint:enable */\n","import { PdfStream } from './../primitives/pdf-stream';\nimport { PdfGraphics, GetResourceEventHandler } from './../graphics/pdf-graphics';\nimport { PdfPageLayerCollection } from './pdf-page-layer-collection';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfColorSpace } from './../graphics/enum';\n/**\n * The `PdfPageLayer` used to create layers in PDF document.\n * @private\n */\nvar PdfPageLayer = /** @class */ (function () {\n function PdfPageLayer(page, streamClipPageTemplates) {\n // private bSaved : boolean;\n /**\n * Local Variable to store the `color space` of the document.\n * @private\n */\n this.pdfColorSpace = PdfColorSpace.Rgb;\n /**\n * Local Variable to set `visibility`.\n * @default true\n * @private\n */\n this.isVisible = true;\n /**\n * Indicates if `Sublayer` is present.\n * @default false\n * @private\n */\n this.sublayer = false;\n /**\n * Local variable to store `length` of the graphics.\n * @default 0\n * @private\n */\n this.contentLength = 0;\n /**\n * Instance for `PdfDictionaryProperties` Class.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n if (page === null) {\n throw new Error('ArgumentNullException:page');\n }\n this.pdfPage = page;\n this.clipPageTemplates = true;\n if (typeof streamClipPageTemplates === 'undefined') {\n this.content = new PdfStream();\n }\n else if (streamClipPageTemplates instanceof PdfStream || streamClipPageTemplates === null) {\n if (streamClipPageTemplates === null) {\n throw new Error('ArgumentNullException:stream');\n }\n this.content = streamClipPageTemplates;\n }\n else {\n this.content = new PdfStream();\n this.clipPageTemplates = streamClipPageTemplates;\n }\n }\n Object.defineProperty(PdfPageLayer.prototype, \"colorSpace\", {\n // Properties\n /**\n * Get or set the `color space`.\n * @private\n */\n get: function () {\n return this.pdfColorSpace;\n },\n set: function (value) {\n this.pdfColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"page\", {\n /**\n * Gets parent `page` of the layer.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"layerId\", {\n /**\n * Gets and Sets the `id of the layer`.\n * @private\n */\n get: function () {\n return this.layerid;\n },\n set: function (value) {\n this.layerid = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"name\", {\n /**\n * Gets or sets the `name` of the layer.\n * @private\n */\n get: function () {\n return this.layerName;\n },\n set: function (value) {\n this.layerName = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"visible\", {\n /**\n * Gets or sets the `visibility` of the layer.\n * @private\n */\n get: function () {\n return this.isVisible;\n },\n set: function (value) {\n this.isVisible = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"graphics\", {\n /**\n * Gets `Graphics` context of the layer, used to draw various graphical content on layer.\n * @private\n */\n get: function () {\n if ((this.pdfGraphics == null)) {\n this.initializeGraphics(this.page);\n }\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"layers\", {\n /**\n * Gets the collection of `PdfPageLayer`, this collection handle by the class 'PdfPageLayerCollection'.\n * @private\n */\n get: function () {\n if (this.layer == null) {\n this.layer = new PdfPageLayerCollection(this.page);\n this.layer.sublayer = true;\n return this.layer;\n }\n else {\n return this.layer;\n }\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Adds` a new PDF Page layer.\n * @private\n */\n PdfPageLayer.prototype.add = function () {\n var layer = new PdfPageLayer(this.pdfPage);\n layer.name = '';\n return layer;\n };\n /**\n * Returns a value indicating the `sign` of a single-precision floating-point number.\n * @private\n */\n PdfPageLayer.prototype.sign = function (number) {\n if (number === 0) {\n return 0;\n }\n else if (number > 0) {\n return 1;\n }\n else {\n return -1;\n }\n };\n /**\n * `Initializes Graphics context` of the layer.\n * @private\n */\n PdfPageLayer.prototype.initializeGraphics = function (page) {\n var oPage = page;\n var gr = new GetResourceEventHandler(this.page);\n var cropBox = null;\n this.pdfGraphics = new PdfGraphics(page.size, gr, this.content);\n this.pdfGraphics.mediaBoxUpperRightBound = 0;\n if (oPage != null) {\n var sc = oPage.section.parent;\n if (sc != null) {\n this.pdfGraphics.colorSpace = sc.document.colorSpace;\n this.colorSpace = sc.document.colorSpace;\n }\n }\n // Transform coordinates to the left/top and activate margins.\n var isSame = (this.sign(page.origin.y) === this.sign(page.origin.x));\n // if (page != null) {\n if (page.origin.x >= 0 && page.origin.y >= 0 || !(isSame)) {\n this.pdfGraphics.initializeCoordinates();\n }\n else {\n // this.m_graphics.InitializeCoordinates(page);\n }\n var clipRect = oPage.section.getActualBounds(oPage, true);\n var margins = oPage.section.pageSettings.margins;\n if (this.clipPageTemplates) {\n if (page.origin.x >= 0 && page.origin.y >= 0) {\n this.pdfGraphics.clipTranslateMargins(clipRect);\n }\n }\n else {\n this.graphics.clipTranslateMargins(clipRect.x, clipRect.y, margins.left, margins.top, margins.right, margins.bottom);\n }\n this.pdfGraphics.setLayer(this);\n // this.bSaved = false;\n };\n Object.defineProperty(PdfPageLayer.prototype, \"element\", {\n // IPdfWrapper Members\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.content;\n },\n enumerable: true,\n configurable: true\n });\n return PdfPageLayer;\n}());\nexport { PdfPageLayer };\n","/**\n * PdfCollection.ts class for EJ2-PDF\n * The class used to handle the collection of PdF objects.\n */\nvar PdfCollection = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `Collection` class.\n * @private\n */\n function PdfCollection() {\n //\n }\n Object.defineProperty(PdfCollection.prototype, \"count\", {\n // Properties\n /**\n * Gets the `Count` of stored objects.\n * @private\n */\n get: function () {\n if (typeof this.collection === 'undefined') {\n this.collection = [];\n }\n return this.collection.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCollection.prototype, \"list\", {\n /**\n * Gets the `list` of stored objects.\n * @private\n */\n get: function () {\n if (typeof this.collection === 'undefined') {\n this.collection = [];\n }\n return this.collection;\n },\n enumerable: true,\n configurable: true\n });\n return PdfCollection;\n}());\nexport { PdfCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfPageLayerCollection.ts class for EJ2-PDF\n */\nimport { PdfPageBase } from './pdf-page-base';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfPageLayer } from './pdf-page-layer';\nimport { PdfCollection } from './../general/pdf-collection';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfStream } from './../primitives/pdf-stream';\n/**\n * The class provides methods and properties to handle the collections of `PdfPageLayer`.\n */\nvar PdfPageLayerCollection = /** @class */ (function (_super) {\n __extends(PdfPageLayerCollection, _super);\n function PdfPageLayerCollection(page) {\n var _this = _super.call(this) || this;\n /**\n * Stores the `number of first level layers` in the document.\n * @default 0\n * @private\n */\n _this.parentLayerCount = 0;\n /**\n * Indicates if `Sublayer` is present.\n * @default false\n * @private\n */\n _this.sublayer = false;\n /**\n * Stores the `optional content dictionary`.\n * @private\n */\n _this.optionalContent = new PdfDictionary();\n if (page instanceof PdfPageBase) {\n // if (page == null) {\n // throw new Error('ArgumentNullException:page');\n // }\n _this.page = page;\n var lPage = page;\n // if (lPage != null) {\n _this.parseLayers(lPage);\n // }\n }\n return _this;\n }\n PdfPageLayerCollection.prototype.items = function (index, value) {\n if (typeof index === 'number' && typeof value === 'undefined') {\n var obj = this.list[index];\n return obj;\n }\n else {\n if (value == null) {\n throw new Error('ArgumentNullException: layer');\n }\n if (value.page !== this.page) {\n throw new Error('ArgumentException: The layer belongs to another page');\n }\n // // Add/remove the layer.\n // let layer : PdfPageLayer = this.items(index);\n // if (layer != null) {\n // this.RemoveLayer(layer);\n // }\n // this.List[index] = value;\n // this.InsertLayer(index, value);\n }\n };\n PdfPageLayerCollection.prototype.add = function (firstArgument, secondArgument) {\n if (typeof firstArgument === 'undefined') {\n var layer = new PdfPageLayer(this.page);\n layer.name = '';\n this.add(layer);\n return layer;\n }\n else if (firstArgument instanceof PdfPageLayer) {\n // if (layer == null)\n // throw new ArgumentNullException(\"layer\");\n // if (layer.Page != m_page)\n // throw new ArgumentException(\"The layer belongs to another page\");\n var index = this.list.push(firstArgument);\n // Register layer.\n this.addLayer(index, firstArgument);\n return index;\n }\n else {\n return 0;\n }\n };\n /**\n * Registers `layer` at the page.\n * @private\n */\n PdfPageLayerCollection.prototype.addLayer = function (index, layer) {\n var reference = new PdfReferenceHolder(layer);\n this.page.contents.add(reference);\n };\n // private RemoveLayer(layer : PdfPageLayer) : void {\n // if (layer == null) {\n // throw new Error('ArgumentNullException:layer');\n // }\n // let reference : PdfReferenceHolder = new PdfReferenceHolder(layer);\n // if (this.page != null) {\n // this.page.Contents.Remove(reference);\n // }\n // }\n /**\n * Inserts `PdfPageLayer` into the collection at specified index.\n * @private\n */\n PdfPageLayerCollection.prototype.insert = function (index, layer) {\n // if (index < 0)\n // throw new ArgumentOutOfRangeException(\"index\", \"Value can not be less 0\");\n // if (layer == null)\n // throw new ArgumentNullException(\"layer\");\n // if (layer.Page != m_page)\n // throw new ArgumentException(\"The layer belongs to another page\");\n var list = [];\n var length = this.list.length;\n for (var i = index; i < length; i++) {\n list.push(this.list.pop());\n }\n this.list.push(layer);\n for (var i = 0; i < list.length; i++) {\n this.list.push(list[i]);\n }\n // Register layer.\n this.insertLayer(index, layer);\n };\n /**\n * Registers layer at the page.\n * @private\n */\n PdfPageLayerCollection.prototype.insertLayer = function (index, layer) {\n if (layer == null) {\n throw new Error('ArgumentNullException:layer');\n }\n var reference = new PdfReferenceHolder(layer);\n this.page.contents.insert(index, reference);\n };\n // tslint:disable\n /**\n * `Parses the layers`.\n * @private\n */\n PdfPageLayerCollection.prototype.parseLayers = function (loadedPage) {\n // if (loadedPage == null) {\n // throw new Error('ArgumentNullException:loadedPage');\n // }\n var contents = this.page.contents;\n var resource = this.page.getResources();\n var crossTable = null;\n var ocproperties = null;\n var propertie = null;\n var isLayerAdded = false;\n // if (loadedPage instanceof PdfPage) {\n crossTable = loadedPage.crossTable;\n // } else {\n // crossTable = (loadedPage as PdfLoadedPage).CrossTable;\n // Propertie = PdfCrossTable.Dereference(Resource[DictionaryProperties.Properties]) as PdfDictionary;\n // ocproperties = PdfCrossTable.Dereference((loadedPage as PdfLoadedPage).\n // Document.Catalog[DictionaryProperties.OCProperties]) as PdfDictionary;\n // }\n var saveStream = new PdfStream();\n var restoreStream = new PdfStream();\n var saveState = 'q';\n var newLine = '\\n';\n var restoreState = 'Q';\n // for (let index : number = 0; index < contents.Items.length; index++) {\n // let obj : IPdfPrimitive = contents[index];\n // let stream : PdfStream = crossTable.GetObject(obj) as PdfStream;\n // if (stream == null)\n // throw new PdfDocumentException(\"Invalid contents array.\");\n // // if (stream.Compress)\n // {\n // if (!loadedPage.Imported)\n // stream.Decompress();\n // }\n // byte[] contentId = stream.Data;\n // string str = PdfString.ByteToString(contentId);\n // if (!loadedPage.Imported && (contents.Count == 1) && ((stream.Data[stream.Data.Length - 2] ==\n // RestoreState) || (stream.Data[stream.Data.Length - 1] == RestoreState)))\n // {\n // byte[] content = stream.Data;\n // byte[] data = new byte[content.Length + 4];\n // data[0] = SaveState;\n // data[1] = NewLine;\n // content.CopyTo(data, 2);\n // data[data.Length - 2] = NewLine;\n // data[data.Length - 1] = RestoreState;\n // stream.Data = data;\n // }\n // if (ocproperties != null)\n // {\n // if (Propertie != null)\n // {\n // foreach (KeyValuePair prop in Propertie.Items)\n // {\n // String Key = prop.Key.ToString();\n // PdfReferenceHolder refh = prop.Value as PdfReferenceHolder;\n // PdfDictionary Dict = null;\n // if (refh != null)\n // {\n // Dict = refh.Object as PdfDictionary;\n // }\n // else\n // {\n // Dict = prop.Value as PdfDictionary;\n // }\n // PdfDictionary m_usage = PdfCrossTable.Dereference(Dict[DictionaryProperties.Usage]) as PdfDictionary;\n // if (m_usage != null)\n // {\n // if (str.Contains(Key))\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // PdfDictionary printoption = PdfCrossTable.Dereference(m_usage[DictionaryProperties.Print])\n // as PdfDictionary;\n // if (printoption != null)\n // {\n // layer.m_printOption = printoption;\n // foreach (KeyValuePair value in printoption.Items)\n // {\n // if (value.Key.Value.Equals(DictionaryProperties.PrintState))\n // {\n // string printState = (value.Value as PdfName).Value;\n // if (printState.Equals(DictionaryProperties.OCGON))\n // {\n // layer.PrintState = PdfPrintState.AlwaysPrint;\n // break;\n // }\n // else\n // {\n // layer.PrintState = PdfPrintState.NeverPrint;\n // break;\n // }\n // }\n // }\n // }\n // PdfString layerName = PdfCrossTable.Dereference(Dict[DictionaryProperties.Name]) as PdfString;\n // layer.Name = layerName.Value;\n // List.add(layer);\n // isLayerAdded = true;\n // if(!str.Contains(\"EMC\"))\n // break;\n // }\n // }\n // else\n // {\n // if (str.Contains(Key))\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // List.add(layer);\n // if(Dict.ContainsKey(DictionaryProperties.Name))\n // {\n // PdfString layerName = PdfCrossTable.Dereference(Dict[DictionaryProperties.Name]) as PdfString;\n // layer.Name = layerName.Value;\n // }\n // isLayerAdded = true;\n // break;\n // }\n // }\n // }\n // }\n // }\n // if (!isLayerAdded)\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // List.add(layer);\n // }\n // else\n // isLayerAdded = false;\n // }\n var saveData = [];\n saveData.push(saveState);\n saveStream.data = saveData;\n contents.insert(0, new PdfReferenceHolder(saveStream));\n saveData = [];\n saveData.push(restoreState);\n restoreStream.data = saveData;\n contents.insert(contents.count, new PdfReferenceHolder(restoreStream));\n };\n /**\n * Returns `index of` the `PdfPageLayer` in the collection if exists, -1 otherwise.\n * @private\n */\n PdfPageLayerCollection.prototype.indexOf = function (layer) {\n if (layer == null) {\n throw new Error('ArgumentNullException: layer');\n }\n var index = this.list.indexOf(layer);\n return index;\n };\n return PdfPageLayerCollection;\n}(PdfCollection));\nexport { PdfPageLayerCollection };\n","import { PdfArray } from './../primitives/pdf-array';\nimport { PdfPageLayerCollection } from './pdf-page-layer-collection';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfResources } from './../graphics/pdf-resources';\n/**\n * The abstract base class for all pages,\n * `PdfPageBase` class provides methods and properties to create PDF pages and its elements.\n * @private\n */\nvar PdfPageBase = /** @class */ (function () {\n //constructors\n /**\n * Initializes a new instance of the `PdfPageBase` class.\n * @private\n */\n function PdfPageBase(dictionary) {\n /**\n * `Index` of the default layer.\n * @default -1.\n * @private\n */\n this.defLayerIndex = -1;\n /**\n * Local variable to store if page `updated`.\n * @default false.\n * @private\n */\n this.modified = false;\n /**\n * Instance of `DictionaryProperties` class.\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.pageDictionary = dictionary;\n }\n Object.defineProperty(PdfPageBase.prototype, \"section\", {\n //Properties\n /**\n * Gets the `section` of a page.\n * @private\n */\n get: function () {\n // if (this.pdfSection === null) {\n // throw new Error('PdfException : Page must be added to some section before using.');\n // }\n return this.pdfSection;\n },\n set: function (value) {\n this.pdfSection = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"dictionary\", {\n /**\n * Gets the page `dictionary`.\n * @private\n */\n get: function () {\n return this.pageDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.pageDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"defaultLayer\", {\n /**\n * Gets the `default layer` of the page (Read only).\n * @private\n */\n get: function () {\n var layer = this.layers;\n var index = this.defaultLayerIndex;\n var returnlayer = layer.items(index);\n return returnlayer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"defaultLayerIndex\", {\n /**\n * Gets or sets `index of the default layer`.\n * @private\n */\n get: function () {\n if (this.layerCollection.count === 0 || this.defLayerIndex === -1) {\n var layer = this.layerCollection.add();\n this.defLayerIndex = this.layerCollection.indexOf(layer);\n }\n return this.defLayerIndex;\n },\n /**\n * Gets or sets` index of the default layer`.\n * @private\n */\n set: function (value) {\n if (value < 0 || value > this.layers.count - 1) {\n throw new Error('ArgumentOutOfRangeException : value, Index can not be less 0 and greater Layers.Count - 1');\n }\n else {\n this.defLayerIndex = value;\n this.modified = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"layers\", {\n /**\n * Gets the collection of the page's `layers` (Read only).\n * @private\n */\n get: function () {\n if (this.layerCollection == null || typeof this.layerCollection === 'undefined') {\n this.layerCollection = new PdfPageLayerCollection(this);\n }\n return this.layerCollection;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Return an instance of `PdfResources` class.\n * @private\n */\n PdfPageBase.prototype.getResources = function () {\n if (this.resources == null) {\n this.resources = new PdfResources();\n this.dictionary.items.setValue(this.dictionaryProperties.resources, this.resources);\n }\n return this.resources;\n };\n Object.defineProperty(PdfPageBase.prototype, \"contents\", {\n /**\n * Gets `array of page's content`.\n * @private\n */\n get: function () {\n var obj = this.pageDictionary.items.getValue(this.dictionaryProperties.contents);\n var contents = obj;\n var rh = obj;\n if (contents == null) {\n contents = new PdfArray();\n this.pageDictionary.items.setValue(this.dictionaryProperties.contents, contents);\n }\n return contents;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the `resources`.\n * @private\n */\n PdfPageBase.prototype.setResources = function (res) {\n this.resources = res;\n this.dictionary.items.setValue(this.dictionaryProperties.resources, this.resources);\n this.modified = true;\n };\n return PdfPageBase;\n}());\nexport { PdfPageBase };\n","import { PdfArray } from './../primitives/pdf-array';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { SizeF, RectangleF, PointF } from './../drawing/pdf-drawing';\nimport { PdfStringLayouter } from './../graphics/fonts/string-layouter';\nimport { PdfColorSpace } from './../graphics/enum';\n/**\n * `PdfAnnotationCollection` class represents the collection of 'PdfAnnotation' objects.\n * @private\n */\nvar PdfAnnotationCollection = /** @class */ (function () {\n function PdfAnnotationCollection(page) {\n // Constants\n /**\n * `Error` constant message.\n * @private\n */\n this.alreadyExistsAnnotationError = 'This annotatation had been already added to page';\n /**\n * `Error` constant message.\n * @private\n */\n this.missingAnnotationException = 'Annotation is not contained in collection.';\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Array of the `annotations`.\n * @private\n */\n this.internalAnnotations = new PdfArray();\n /**\n * privte `list` for the annotations.\n * @private\n */\n this.lists = [];\n if (typeof page !== 'undefined') {\n this.page = page;\n }\n }\n Object.defineProperty(PdfAnnotationCollection.prototype, \"annotations\", {\n /**\n * Gets the `PdfAnnotation` object at the specified index. Read-Only.\n * @private\n */\n get: function () {\n return this.internalAnnotations;\n },\n set: function (value) {\n this.internalAnnotations = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /**\n * `Adds` a new annotation to the collection.\n * @private\n */\n PdfAnnotationCollection.prototype.add = function (annotation) {\n // this.SetPrint(annotation);\n this.doAdd(annotation);\n };\n /**\n * `Adds` a Annotation to collection.\n * @private\n */\n /* tslint:disable */\n PdfAnnotationCollection.prototype.doAdd = function (annotation) {\n if (typeof annotation.destination !== 'undefined') {\n var layout = new PdfStringLayouter();\n var layoutResult = layout.layout(annotation.text, annotation.font, annotation.stringFormat, new SizeF((annotation.bounds.width), 0), false, new SizeF(0, 0));\n var lastPosition = annotation.bounds.y;\n if (layoutResult.lines.length === 1) {\n var size = annotation.font.measureString(layoutResult.lines[0].text);\n annotation.bounds = new RectangleF(new PointF(annotation.bounds.x, lastPosition), size);\n annotation.text = layoutResult.lines[0].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annotation.text, annotation.font, null, annotation.brush, annotation.bounds.x, annotation.bounds.y, annotation.bounds.width, annotation.bounds.height, null);\n //Add annotation to dictionary.\n annotation.setPage(this.page);\n this.setColor(annotation);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n this.lists.push(annotation);\n }\n else {\n for (var i = 0; i < layoutResult.lines.length; i++) {\n var size = annotation.font.measureString(layoutResult.lines[i].text);\n if (i === 0) {\n annotation.bounds = new RectangleF(annotation.bounds.x, lastPosition, size.width, size.height);\n annotation.text = layoutResult.lines[i].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annotation.text, annotation.font, null, annotation.brush, annotation.bounds.x, lastPosition, size.width, size.height, null);\n //Add annotation to dictionary.\n annotation.setPage(this.page);\n this.setColor(annotation);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n this.lists.push(annotation);\n //Update y for drawing next line of the text.\n lastPosition += annotation.bounds.height;\n }\n else {\n var annot = annotation.clone();\n annot.bounds = new RectangleF(new PointF(annotation.bounds.x, lastPosition), size);\n annot.text = layoutResult.lines[i].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annot.text, annot.font, null, annot.brush, annot.bounds.x, annot.bounds.y, annot.bounds.width, annot.bounds.height, null);\n //Add annotation to dictionary.\n annot.setPage(this.page);\n this.setColor(annot);\n this.internalAnnotations.add(new PdfReferenceHolder(annot));\n this.lists.push(annot);\n //Update y for drawing next line of the text.\n lastPosition += annot.bounds.height;\n }\n }\n }\n }\n else {\n annotation.setPage(this.page);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n return this.lists.push(annotation);\n }\n };\n /* tslint:enable */\n /**\n * `Set a color of an annotation`.\n * @private\n */\n PdfAnnotationCollection.prototype.setColor = function (annotation) {\n var cs = PdfColorSpace.Rgb;\n var colours = annotation.color.toArray(cs);\n annotation.dictionary.items.setValue(this.dictionaryProperties.c, colours);\n };\n Object.defineProperty(PdfAnnotationCollection.prototype, \"element\", {\n // IPdfWrapper Members\n /**\n * Gets the `Element` representing this object.\n * @private\n */\n get: function () {\n return this.internalAnnotations;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAnnotationCollection;\n}());\nexport { PdfAnnotationCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfPageBase } from './pdf-page-base';\nimport { PdfDictionary, SaveTemplateEventHandler } from './../primitives/pdf-dictionary';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { SizeF } from './../drawing/pdf-drawing';\nimport { PdfAnnotationCollection } from './../annotations/annotation-collection';\nimport { PdfPageLayer } from './pdf-page-layer';\n/**\n * Provides methods and properties to create pages and its elements.\n * `PdfPage` class inherited from the `PdfPageBase` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * //\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPage = /** @class */ (function (_super) {\n __extends(PdfPage, _super);\n //constructors\n /**\n * Initialize the new instance for `PdfPage` class.\n * @private\n */\n function PdfPage() {\n var _this = _super.call(this, new PdfDictionary()) || this;\n /**\n * Stores the instance of `PdfAnnotationCollection` class.\n * @hidden\n * @default null\n * @private\n */\n _this.annotationCollection = null;\n /**\n * Stores the instance of `PageBeginSave` event for Page Number Field.\n * @default null\n * @private\n */\n _this.beginSave = null;\n _this.initialize();\n return _this;\n }\n Object.defineProperty(PdfPage.prototype, \"document\", {\n //Properties\n /**\n * Gets current `document`.\n * @private\n */\n get: function () {\n if (this.section !== null && this.section.parent !== null) {\n return this.section.parent.document;\n }\n else {\n return null;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"graphics\", {\n /**\n * Get the current `graphics`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // get graphics\n * let graphics : PdfGraphics = page1.graphics;\n * //\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var result = this.defaultLayer.graphics;\n result.currentPage = this;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"crossTable\", {\n /**\n * Gets the `cross table`.\n * @private\n */\n get: function () {\n if (this.section === null) {\n throw new Error('PdfDocumentException : Page is not created');\n }\n return this.section.parent === null ? this.section.parentDocument.crossTable : this.section.parent.document.crossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"size\", {\n /**\n * Gets the size of the PDF page- Read only.\n * @public\n */\n get: function () {\n return this.section.pageSettings.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"origin\", {\n /**\n * Gets the `origin` of the page.\n * @private\n */\n get: function () {\n return this.section.pageSettings.origin;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"annotations\", {\n /**\n * Gets a collection of the `annotations` of the page- Read only.\n * @private\n */\n get: function () {\n if (this.annotationCollection == null) {\n this.annotationCollection = new PdfAnnotationCollection(this);\n // if (!this.Dictionary.ContainsKey(this.dictionaryProperties.annots)) {\n this.dictionary.items.setValue(this.dictionaryProperties.annots, this.annotationCollection.element);\n // }\n this.annotationCollection.annotations = this.dictionary.items.getValue(this.dictionaryProperties.annots);\n }\n return this.annotationCollection;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Initializes` a page.\n * @private\n */\n PdfPage.prototype.initialize = function () {\n this.dictionary.items.setValue(this.dictionaryProperties.type, new PdfName('Page'));\n this.dictionary.pageBeginDrawTemplate = new SaveTemplateEventHandler(this);\n };\n /**\n * Sets parent `section` to the page.\n * @private\n */\n PdfPage.prototype.setSection = function (section) {\n this.section = section;\n this.dictionary.items.setValue(this.dictionaryProperties.parent, new PdfReferenceHolder(section));\n };\n /**\n * `Resets the progress`.\n * @private\n */\n PdfPage.prototype.resetProgress = function () {\n this.isProgressOn = false;\n };\n /**\n * Get the page size reduced by page margins and page template dimensions.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the specified point using `getClientSize` method\n * let point : PointF = new PointF(page1.getClientSize().width - 200, page1.getClientSize().height - 200);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, point);\n * //\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfPage.prototype.getClientSize = function () {\n var returnValue = this.section.getActualBounds(this, true);\n return new SizeF(returnValue.width, returnValue.height);\n };\n /**\n * Helper method to retrive the instance of `PageBeginSave` event for header and footer elements.\n * @private\n */\n PdfPage.prototype.pageBeginSave = function () {\n var doc = this.document;\n if (typeof doc !== undefined && doc != null) {\n this.drawPageTemplates(doc);\n }\n if (this.beginSave != null && typeof this.beginSave !== 'undefined') {\n this.beginSave(this);\n }\n };\n /**\n * Helper method to draw template elements.\n * @private\n */\n PdfPage.prototype.drawPageTemplates = function (document) {\n // Draw Background templates.\n var hasBackTemplates = this.section.containsTemplates(document, this, false);\n if (hasBackTemplates) {\n var backLayer = new PdfPageLayer(this, false);\n this.layers.insert(0, backLayer);\n this.section.drawTemplates(this, backLayer, document, false);\n if (backLayer.graphics !== null && typeof backLayer.graphics !== 'undefined') {\n for (var i = 0; i < backLayer.graphics.automaticFields.automaticFields.length; i++) {\n var fieldInfo = backLayer.graphics.automaticFields.automaticFields[i];\n fieldInfo.field.performDraw(backLayer.graphics, fieldInfo.location, fieldInfo.scalingX, fieldInfo.scalingY);\n }\n }\n }\n // Draw Foreground templates.\n var hasFrontTemplates = this.section.containsTemplates(document, this, true);\n if (hasFrontTemplates) {\n var frontLayer = new PdfPageLayer(this, false);\n this.layers.add(frontLayer);\n this.section.drawTemplates(this, frontLayer, document, true);\n }\n };\n return PdfPage;\n}(PdfPageBase));\nexport { PdfPage };\n","/**\n * Provides data for `PageAddedEventHandler` event.\n * This event raises when adding the new PDF page to the PDF document.\n */\nvar PageAddedEventArgs = /** @class */ (function () {\n function PageAddedEventArgs(page) {\n if (typeof page !== 'undefined') {\n this.pdfPage = page;\n }\n else {\n this.pdfPage = null;\n }\n }\n Object.defineProperty(PageAddedEventArgs.prototype, \"page\", {\n /**\n * Gets the `newly added page`.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n return PageAddedEventArgs;\n}());\nexport { PageAddedEventArgs };\n","/**\n * Represents the `collection of pages in a section`.\n * @private\n */\nvar PdfSectionPageCollection = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfSectionPageCollection` class.\n * @private\n */\n function PdfSectionPageCollection(section) {\n // Fields\n /**\n * @hidden\n * @private\n */\n this.pdfSection = null;\n if (section == null) {\n throw Error('ArgumentNullException(\"section\")');\n }\n this.section = section;\n }\n Object.defineProperty(PdfSectionPageCollection.prototype, \"section\", {\n // Properties\n /**\n * Gets the `PdfPage` at the specified index.\n * @private\n */\n get: function () {\n return this.pdfSection;\n },\n set: function (value) {\n this.pdfSection = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public Methods\n /**\n * `Determines` whether the specified page is within the collection.\n * @private\n */\n PdfSectionPageCollection.prototype.contains = function (page) {\n return this.section.contains(page);\n };\n /**\n * `Removes` the specified page from collection.\n * @private\n */\n PdfSectionPageCollection.prototype.remove = function (page) {\n this.section.remove(page);\n };\n /**\n * `Adds` a new page from collection.\n * @private\n */\n PdfSectionPageCollection.prototype.add = function () {\n return this.section.add();\n };\n return PdfSectionPageCollection;\n}());\nexport { PdfSectionPageCollection };\n","import { TemplateType } from './../pages/enum';\n// import { PdfStampCollection } from `./../Pages/PdfStampCollection`;\n/**\n * `PdfDocumentTemplate` class encapsulates a page template for all the pages in the document.\n * @private\n */\nvar PdfDocumentTemplate = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfDocumentTemplate` class.\n * @public\n */\n function PdfDocumentTemplate() {\n //\n }\n Object.defineProperty(PdfDocumentTemplate.prototype, \"left\", {\n // private m_stamps : PdfStampCollection;\n // Properties\n /**\n * `Left` page template object.\n * @public\n */\n get: function () {\n return this.leftTemplate;\n },\n set: function (value) {\n this.leftTemplate = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"top\", {\n /**\n * `Top` page template object.\n * @public\n */\n get: function () {\n return this.topTemplate;\n },\n set: function (value) {\n this.topTemplate = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"right\", {\n /**\n * `Right` page template object.\n * @public\n */\n get: function () {\n return this.rightTemplate;\n },\n set: function (value) {\n this.rightTemplate = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"bottom\", {\n /**\n * `Bottom` page template object.\n * @public\n */\n get: function () {\n return this.bottomTemplate;\n },\n set: function (value) {\n this.bottomTemplate = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenLeft\", {\n /**\n * `EvenLeft` page template object.\n * @public\n */\n get: function () {\n return this.evenLeft;\n },\n set: function (value) {\n this.evenLeft = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenTop\", {\n /**\n * `EvenTop` page template object.\n * @public\n */\n get: function () {\n return this.evenTop;\n },\n set: function (value) {\n this.evenTop = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenRight\", {\n /**\n * `EvenRight` page template object.\n * @public\n */\n get: function () {\n return this.evenRight;\n },\n set: function (value) {\n this.evenRight = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenBottom\", {\n /**\n * `EvenBottom` page template object.\n * @public\n */\n get: function () {\n return this.evenBottom;\n },\n set: function (value) {\n this.evenBottom = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddLeft\", {\n /**\n * `OddLeft` page template object.\n * @public\n */\n get: function () {\n return this.oddLeft;\n },\n set: function (value) {\n this.oddLeft = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddTop\", {\n /**\n * `OddTop` page template object.\n * @public\n */\n get: function () {\n return this.oddTop;\n },\n set: function (value) {\n this.oddTop = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddRight\", {\n /**\n * `OddRight` page template object.\n * @public\n */\n get: function () {\n return this.oddRight;\n },\n set: function (value) {\n this.oddRight = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddBottom\", {\n /**\n * `OddBottom` page template object.\n * @public\n */\n get: function () {\n return this.oddBottom;\n },\n set: function (value) {\n this.oddBottom = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Returns `left` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getLeft = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenLeft != null) ? this.EvenLeft : this.left;\n }\n else {\n template = (this.OddLeft != null) ? this.OddLeft : this.left;\n }\n // }\n return template;\n };\n /**\n * Returns `top` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getTop = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenTop != null) ? this.EvenTop : this.top;\n }\n else {\n template = (this.OddTop != null) ? this.OddTop : this.top;\n }\n // }\n return template;\n };\n /**\n * Returns `right` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getRight = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenRight != null) ? this.EvenRight : this.right;\n }\n else {\n template = (this.OddRight != null) ? this.OddRight : this.right;\n }\n // }\n return template;\n };\n /**\n * Returns `bottom` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getBottom = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenBottom != null) ? this.EvenBottom : this.bottom;\n }\n else {\n template = (this.OddBottom != null) ? this.OddBottom : this.bottom;\n }\n // }\n return template;\n };\n /**\n * Checks whether the page `is even`.\n * @private\n */\n PdfDocumentTemplate.prototype.isEven = function (page) {\n var pages = page.section.document.pages;\n var index = 0;\n if (pages.pageCollectionIndex.containsKey(page)) {\n index = pages.pageCollectionIndex.getValue(page) + 1;\n }\n else {\n index = pages.indexOf(page) + 1;\n }\n var even = ((index % 2) === 0);\n return even;\n };\n /**\n * Checks a `template element`.\n * @private\n */\n PdfDocumentTemplate.prototype.checkElement = function (templateElement, type) {\n if (templateElement != null) {\n if ((typeof templateElement.type !== 'undefined') && (templateElement.type !== TemplateType.None)) {\n throw new Error('NotSupportedException:Can not reassign the template element. Please, create new one.');\n }\n templateElement.type = type;\n }\n return templateElement;\n };\n return PdfDocumentTemplate;\n}());\nexport { PdfDocumentTemplate };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfSectionTemplate.ts class for EJ2-PDF\n */\nimport { PdfDocumentTemplate } from './../document/pdf-document-template';\n/**\n * Represents a `page template` for all the pages in the section.\n */\nvar PdfSectionTemplate = /** @class */ (function (_super) {\n __extends(PdfSectionTemplate, _super);\n // Constructors\n /**\n * `Creates a new object`.\n * @private\n */\n function PdfSectionTemplate() {\n var _this = _super.call(this) || this;\n _this.leftValue = _this.topValue = _this.rightValue = _this.bottomValue = _this.stampValue = true;\n return _this;\n }\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentLeftTemplate\", {\n // Properties\n /**\n * Gets or sets value indicating whether parent `Left page template should be used or not`.\n * @private\n */\n get: function () {\n return this.leftValue;\n },\n set: function (value) {\n this.leftValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentTopTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Top page template should be used or not`.\n * @private\n */\n get: function () {\n return this.topValue;\n },\n set: function (value) {\n this.topValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentRightTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Right page template should be used or not`.\n * @private\n */\n get: function () {\n return this.rightValue;\n },\n set: function (value) {\n this.rightValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentBottomTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Bottom page template should be used or not`.\n * @private\n */\n get: function () {\n return this.bottomValue;\n },\n set: function (value) {\n this.bottomValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentStamps\", {\n /**\n * Gets or sets value indicating whether the `stamp value` is true or not.\n * @private\n */\n get: function () {\n return this.stampValue;\n },\n set: function (value) {\n this.stampValue = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfSectionTemplate;\n}(PdfDocumentTemplate));\nexport { PdfSectionTemplate };\n","import { PdfPage } from './pdf-page';\nimport { PageAddedEventArgs } from './page-added-event-arguments';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { SaveSectionEventHandler } from './../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfSectionCollection } from './pdf-section-collection';\nimport { PdfSectionPageCollection } from './pdf-section-page-collection';\nimport { RectangleF } from './../drawing/pdf-drawing';\nimport { PdfSectionTemplate } from './pdf-section-templates';\n/**\n * Represents a `section` entity. A section it's a set of the pages with similar page settings.\n */\nvar PdfSection = /** @class */ (function () {\n function PdfSection(document, pageSettings) {\n //Fields\n //public PageAdded() : PageAddedEventArgs.PageAddedEventHandler = new PageAddedEventArgs.PageAddedEventHandler(Object,args)\n /**\n * @hidden\n * @private\n */\n this.pageAdded = new PageAddedEventArgs();\n /**\n * @hidden\n * @private\n */\n this.pdfPages = [];\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.pdfDocument = document;\n if (typeof pageSettings === 'undefined') {\n this.settings = document.pageSettings.clone();\n this.initialSettings = this.settings.clone();\n }\n else {\n this.settings = pageSettings.clone();\n this.initialSettings = this.settings.clone();\n }\n this.initialize();\n }\n Object.defineProperty(PdfSection.prototype, \"parent\", {\n //Property\n /**\n * Gets or sets the `parent`.\n * @private\n */\n get: function () {\n return this.sectionCollection;\n },\n set: function (value) {\n this.sectionCollection = value;\n this.section.items.setValue(this.dictionaryProperties.parent, new PdfReferenceHolder(value));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"parentDocument\", {\n /**\n * Gets the `parent document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"pageSettings\", {\n /**\n * Gets or sets the `page settings` of the section.\n * @private\n */\n get: function () {\n return this.settings;\n },\n set: function (value) {\n if (value != null) {\n this.settings = value;\n }\n else {\n throw Error('Value can not be null.');\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.section;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"count\", {\n /**\n * Gets the `count` of the pages in the section.\n * @private\n */\n get: function () {\n return this.pagesReferences.count;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"template\", {\n /**\n * Gets or sets a `template` for the pages in the section.\n * @private\n */\n get: function () {\n if (this.pageTemplate == null) {\n this.pageTemplate = new PdfSectionTemplate();\n }\n return this.pageTemplate;\n },\n set: function (value) {\n this.pageTemplate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"document\", {\n /**\n * Gets the `document`.\n * @private\n */\n get: function () {\n return this.sectionCollection.document;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"pages\", {\n /**\n * Gets the collection of `pages` in a section (Read only)\n * @private\n */\n get: function () {\n if (this.pagesCollection == null || typeof this.pagesCollection === 'undefined') {\n this.pagesCollection = new PdfSectionPageCollection(this);\n }\n return this.pagesCollection;\n },\n enumerable: true,\n configurable: true\n });\n //methods\n /**\n * `Return the page collection` of current section.\n * @private\n */\n PdfSection.prototype.getPages = function () {\n return this.pdfPages;\n };\n /**\n * `Translates` point into native coordinates of the page.\n * @private\n */\n PdfSection.prototype.pointToNativePdf = function (page, point) {\n var bounds = this.getActualBounds(page, true);\n point.x += bounds.x;\n point.y = this.pageSettings.height - (point.y);\n return point;\n };\n /**\n * Sets the page setting of the current section.\n * @public\n * @param settings Instance of `PdfPageSettings`\n */\n PdfSection.prototype.setPageSettings = function (settings) {\n this.settings = settings;\n this.state.orientation = settings.orientation;\n this.state.rotate = settings.rotate;\n this.state.size = settings.size;\n this.state.origin = settings.origin;\n };\n /**\n * `Initializes` the object.\n * @private\n */\n PdfSection.prototype.initialize = function () {\n this.pagesReferences = new PdfArray();\n this.section = new PdfDictionary();\n this.state = new PageSettingsState(this.pdfDocument);\n this.section.sectionBeginSave = new SaveSectionEventHandler(this, this.state);\n this.pageCount = new PdfNumber(0);\n this.section.items.setValue(this.dictionaryProperties.count, this.pageCount);\n this.section.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.pages));\n this.section.items.setValue(this.dictionaryProperties.kids, this.pagesReferences);\n };\n /**\n * Checks whether any template should be printed on this layer.\n * @private\n * @param document The parent document.\n * @param page The parent page.\n * @param foreground Layer z-order.\n * @returns True - if some content should be printed on the layer, False otherwise.\n */\n PdfSection.prototype.containsTemplates = function (document, page, foreground) {\n var documentHeaders = this.getDocumentTemplates(document, page, foreground);\n var sectionTemplates = this.getSectionTemplates(page, foreground);\n return (documentHeaders.length > 0 || sectionTemplates.length > 0);\n };\n /**\n * Returns array of the document templates.\n * @private\n * @param document The parent document.\n * @param page The parent page.\n * @param headers If true - return headers/footers, if false - return simple templates.\n * @param foreground If true - return foreground templates, if false - return background templates.\n * @returns Returns array of the document templates.\n */\n /* tslint:disable */\n PdfSection.prototype.getDocumentTemplates = function (document, page, foreground) {\n var templates = [];\n if (this.template.applyDocumentTopTemplate && document.template.getTop(page) != null) {\n if ((!(document.template.getTop(page).foreground || foreground)) || (document.template.getTop(page).foreground && foreground)) {\n templates.push(document.template.getTop(page));\n }\n }\n if (this.template.applyDocumentBottomTemplate && document.template.getBottom(page) != null) {\n if ((!(document.template.getBottom(page).foreground || foreground)) || (document.template.getBottom(page).foreground && foreground)) {\n templates.push(document.template.getBottom(page));\n }\n }\n if (this.template.applyDocumentLeftTemplate && document.template.getLeft(page) != null) {\n if ((!(document.template.getLeft(page).foreground || foreground)) || (document.template.getLeft(page).foreground && foreground)) {\n templates.push(document.template.getLeft(page));\n }\n }\n if (this.template.applyDocumentRightTemplate && document.template.getRight(page) != null) {\n if ((!(document.template.getRight(page).foreground || foreground)) || (document.template.getRight(page).foreground && foreground)) {\n templates.push(document.template.getRight(page));\n }\n }\n return templates;\n };\n /**\n * Returns array of the section templates.\n * @private\n * @param page The parent page.\n * @param foreground If true - return foreground templates, if false - return background templates.\n * @returns Returns array of the section templates.\n */\n /* tslint:disable */\n PdfSection.prototype.getSectionTemplates = function (page, foreground) {\n var templates = [];\n if (this.template.getTop(page) != null) {\n var pageTemplate = this.template.getTop(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getBottom(page) != null) {\n var pageTemplate = this.template.getBottom(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getLeft(page) != null) {\n var pageTemplate = this.template.getLeft(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getRight(page) != null) {\n var pageTemplate = this.template.getRight(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n return templates;\n };\n /* tslint:enable */\n /**\n * `Adds` the specified page.\n * @private\n */\n PdfSection.prototype.add = function (page) {\n if (typeof page === 'undefined') {\n var page_1 = new PdfPage();\n this.add(page_1);\n return page_1;\n }\n else {\n var r = this.checkPresence(page);\n this.pdfPages.push(page);\n this.pagesReferences.add(r);\n page.setSection(this);\n page.resetProgress();\n this.pageAddedMethod(page);\n }\n };\n /**\n * `Checks the presence`.\n * @private\n */\n PdfSection.prototype.checkPresence = function (page) {\n var rh = new PdfReferenceHolder(page);\n var contains = false;\n var sc = this.parent;\n for (var index = 0; index < sc.section.length; index++) {\n var section = sc.section[index];\n contains = contains || section.contains(page);\n }\n return rh;\n };\n /**\n * `Determines` whether the page in within the section.\n * @private\n */\n PdfSection.prototype.contains = function (page) {\n var index = this.indexOf(page);\n return (0 <= index);\n };\n /**\n * Get the `index of` the page.\n * @private\n */\n PdfSection.prototype.indexOf = function (page) {\n for (var index = 0; index < this.pdfPages.length; index++) {\n if (this.pdfPages[index] === page) {\n return this.pdfPages.indexOf(page);\n }\n }\n var r = new PdfReferenceHolder(page);\n return this.pagesReferences.indexOf(r);\n };\n /**\n * Call two event's methods.\n * @hidden\n * @private\n */\n PdfSection.prototype.pageAddedMethod = function (page) {\n //Create event's arguments\n var args = new PageAddedEventArgs(page);\n this.onPageAdded(args);\n var parent = this.parent;\n parent.document.pages.onPageAdded(args);\n this.pageCount.intValue = this.count;\n };\n /**\n * Called when the page has been added.\n * @hidden\n * @private\n */\n PdfSection.prototype.onPageAdded = function (args) {\n //\n };\n PdfSection.prototype.getActualBounds = function (arg1, arg2, arg3) {\n if (arg1 instanceof PdfPage && typeof arg2 === 'boolean') {\n var result = void 0;\n var document_1 = this.parent.document;\n result = this.getActualBounds(document_1, arg1, arg2);\n return result;\n }\n else {\n arg1 = arg1;\n arg2 = arg2;\n arg3 = arg3;\n var bounds = new RectangleF(0, 0, 0, 0);\n bounds.height = (arg3) ? this.pageSettings.size.height : this.pageSettings.getActualSize().height;\n bounds.width = (arg3) ? this.pageSettings.size.width : this.pageSettings.getActualSize().width;\n var left = this.getLeftIndentWidth(arg1, arg2, arg3);\n var top_1 = this.getTopIndentHeight(arg1, arg2, arg3);\n var right = this.getRightIndentWidth(arg1, arg2, arg3);\n var bottom = this.getBottomIndentHeight(arg1, arg2, arg3);\n bounds.x += left;\n bounds.y += top_1;\n bounds.width -= (left + right);\n bounds.height -= (top_1 + bottom);\n return bounds;\n }\n };\n /**\n * Calculates width of the `left indent`.\n * @private\n */\n PdfSection.prototype.getLeftIndentWidth = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.left : 0;\n var templateWidth = (this.template.getLeft(page) != null) ? this.template.getLeft(page).width : 0;\n var docTemplateWidth = (document.template.getLeft(page) != null) ? document.template.getLeft(page).width : 0;\n value += (this.template.applyDocumentLeftTemplate) ? Math.max(templateWidth, docTemplateWidth) : templateWidth;\n return value;\n };\n /**\n * Calculates `Height` of the top indent.\n * @private\n */\n PdfSection.prototype.getTopIndentHeight = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.top : 0;\n var templateHeight = (this.template.getTop(page) != null) ? this.template.getTop(page).height : 0;\n var docTemplateHeight = (document.template.getTop(page) != null) ? document.template.getTop(page).height : 0;\n value += (this.template.applyDocumentTopTemplate) ? Math.max(templateHeight, docTemplateHeight) : templateHeight;\n return value;\n };\n /**\n * Calculates `width` of the right indent.\n * @private\n */\n PdfSection.prototype.getRightIndentWidth = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.right : 0;\n var templateWidth = (this.template.getRight(page) != null) ? this.template.getRight(page).width : 0;\n var docTemplateWidth = (document.template.getRight(page) != null) ? document.template.getRight(page).width : 0;\n value += (this.template.applyDocumentRightTemplate) ? Math.max(templateWidth, docTemplateWidth) : templateWidth;\n return value;\n };\n /**\n * Calculates `Height` of the bottom indent.\n * @private\n */\n PdfSection.prototype.getBottomIndentHeight = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.bottom : 0;\n var templateHeight = (this.template.getBottom(page) != null) ? this.template.getBottom(page).height : 0;\n var docTemplateHeight = (document.template.getBottom(page) != null) ? document.template.getBottom(page).height : 0;\n value += (this.template.applyDocumentBottomTemplate) ? Math.max(templateHeight, docTemplateHeight) : templateHeight;\n return value;\n };\n /**\n * `Removes` the page from the section.\n * @private\n */\n PdfSection.prototype.remove = function (page) {\n if (page == null) {\n throw Error('ArgumentNullException(\"page\")');\n }\n var index = this.pdfPages.indexOf(page);\n this.pagesReferences.removeAt(index);\n var temproaryPages = [];\n for (var j = 0; j < index; j++) {\n temproaryPages.push(this.pdfPages[j]);\n }\n for (var j = index + 1; j < this.pdfPages.length; j++) {\n temproaryPages.push(this.pdfPages[j]);\n }\n this.pdfPages = temproaryPages;\n };\n /**\n * In fills dictionary by the data from `Page settings`.\n * @private\n */\n PdfSection.prototype.applyPageSettings = function (container, parentSettings, state) {\n var bounds = new RectangleF(state.origin, state.size);\n container.items.setValue(this.dictionaryProperties.mediaBox, PdfArray.fromRectangle(bounds));\n var rotate = 0;\n rotate = PdfSectionCollection.rotateFactor * state.rotate;\n var angle = new PdfNumber(rotate);\n container.items.setValue(this.dictionaryProperties.rotate, angle);\n };\n /**\n * Catches the Save event of the dictionary.\n * @hidden\n * @private\n */\n PdfSection.prototype.beginSave = function (state, writer) {\n var doc = writer.document;\n this.applyPageSettings(this.section, doc.pageSettings, state);\n };\n /**\n * Draws page templates on the page.\n * @private\n */\n PdfSection.prototype.drawTemplates = function (page, layer, document, foreground) {\n var documentHeaders = this.getDocumentTemplates(document, page, foreground);\n var sectionHeaders = this.getSectionTemplates(page, foreground);\n this.drawTemplatesHelper(layer, document, documentHeaders);\n this.drawTemplatesHelper(layer, document, sectionHeaders);\n };\n /**\n * Draws page templates on the page.\n * @private\n */\n PdfSection.prototype.drawTemplatesHelper = function (layer, document, templates) {\n if (templates != null && templates.length > 0) {\n var len = templates.length;\n for (var i = 0; i < len; i++) {\n var template = templates[i];\n template.draw(layer, document);\n }\n }\n };\n return PdfSection;\n}());\nexport { PdfSection };\nvar PageSettingsState = /** @class */ (function () {\n //Public Constructor\n /**\n * New instance to store the `PageSettings`.\n * @private\n */\n function PageSettingsState(document) {\n this.pageOrientation = document.pageSettings.orientation;\n this.pageRotate = document.pageSettings.rotate;\n this.pageSize = document.pageSettings.size;\n this.pageOrigin = document.pageSettings.origin;\n }\n Object.defineProperty(PageSettingsState.prototype, \"orientation\", {\n //public Properties\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageOrientation;\n },\n set: function (value) {\n this.pageOrientation = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"rotate\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageRotate;\n },\n set: function (value) {\n this.pageRotate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"size\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageSize;\n },\n set: function (value) {\n this.pageSize = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"origin\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageOrigin;\n },\n set: function (value) {\n this.pageOrigin = value;\n },\n enumerable: true,\n configurable: true\n });\n return PageSettingsState;\n}());\nexport { PageSettingsState };\n","import { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfDictionary, SaveSectionCollectionEventHandler } from './../primitives/pdf-dictionary';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { RectangleF, PointF } from './../drawing/pdf-drawing';\nimport { PdfSection } from './pdf-section';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * Represents the `collection of the sections`.\n * @private\n */\nvar PdfSectionCollection = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfSectionCollection` class.\n * @private\n */\n function PdfSectionCollection(document) {\n /**\n * @hidden\n * @private\n */\n this.sections = [];\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // if (document === null) {\n // throw new Error('ArgumentNullException : document');\n // }\n this.pdfDocument = document.clone();\n this.initialize();\n }\n Object.defineProperty(PdfSectionCollection.prototype, \"section\", {\n //Properties\n /**\n * Gets the `Section` collection.\n */\n get: function () {\n return this.sections;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"document\", {\n /**\n * Gets a parent `document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"count\", {\n /**\n * Gets the `number of sections` in a document.\n * @private\n */\n get: function () {\n return this.sections.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.pages;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * `Initializes the object`.\n * @private\n */\n PdfSectionCollection.prototype.initialize = function () {\n this.sectionCount = new PdfNumber(0);\n this.sectionCollection = new PdfArray();\n this.pages = new PdfDictionary();\n this.pages.beginSave = new SaveSectionCollectionEventHandler(this);\n this.pages.items.setValue(this.dictionaryProperties.type, new PdfName('Pages'));\n this.pages.items.setValue(this.dictionaryProperties.kids, this.sectionCollection);\n this.pages.items.setValue(this.dictionaryProperties.count, this.sectionCount);\n this.pages.items.setValue(this.dictionaryProperties.resources, new PdfDictionary());\n this.setPageSettings(this.pages, this.pdfDocument.pageSettings);\n };\n /**\n * Initializes a new instance of the `PdfSectionCollection` class.\n * @private\n */\n PdfSectionCollection.prototype.pdfSectionCollection = function (index) {\n if (index < 0 || index >= this.count) {\n throw new Error('IndexOutOfRangeException()');\n }\n return this.sections[index];\n };\n /**\n * In fills dictionary by the data from `Page settings`.\n * @private\n */\n PdfSectionCollection.prototype.setPageSettings = function (container, pageSettings) {\n // if (container === null) {\n // throw new Error('ArgumentNullException : container');\n // }\n // if (pageSettings === null) {\n // throw new Error('ArgumentNullException : pageSettings');\n // }\n var bounds = new RectangleF(new PointF(), pageSettings.size);\n container.items.setValue(this.dictionaryProperties.mediaBox, PdfArray.fromRectangle(bounds));\n };\n /**\n * `Adds` the specified section.\n * @private\n */\n PdfSectionCollection.prototype.add = function (section) {\n if (typeof section === 'undefined') {\n var section_1 = new PdfSection(this.pdfDocument);\n this.add(section_1);\n return section_1;\n }\n else {\n // if (section === null) {\n // throw new Error('ArgumentNullException : section');\n // }\n var r = this.checkSection(section);\n this.sections.push(section);\n section.parent = this;\n this.sectionCollection.add(r);\n return this.sections.indexOf(section);\n }\n };\n /**\n * `Checks` if the section is within the collection.\n * @private\n */\n PdfSectionCollection.prototype.checkSection = function (section) {\n var r = new PdfReferenceHolder(section);\n var contains = this.sectionCollection.contains(r);\n // if (contains) {\n // throw new Error('ArgumentException : The object can not be added twice to the collection,section');\n // }\n return r;\n };\n /**\n * Catches the Save event of the dictionary to `count the pages`.\n * @private\n */\n PdfSectionCollection.prototype.countPages = function () {\n var count = 0;\n this.sections.forEach(function (n) { return (count += n.count); });\n return count;\n };\n /**\n * Catches the Save event of the dictionary to `count the pages`.\n * @hidden\n * @private\n */\n PdfSectionCollection.prototype.beginSave = function () {\n this.sectionCount.intValue = this.countPages();\n };\n //Fields\n /**\n * Rotate factor for page `rotation`.\n * @default 90\n * @private\n */\n PdfSectionCollection.rotateFactor = 90;\n return PdfSectionCollection;\n}());\nexport { PdfSectionCollection };\n","import { PdfPage } from './pdf-page';\nimport { Dictionary } from './../collections/dictionary';\n/**\n * Represents a virtual collection of all the pages in the document.\n * @private\n */\nvar PdfDocumentPageCollection = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfPageCollection` class.\n * @private\n */\n function PdfDocumentPageCollection(document) {\n /**\n * It holds the page collection with the `index`.\n * @private\n */\n this.pdfPageCollectionIndex = new Dictionary();\n this.document = document;\n }\n Object.defineProperty(PdfDocumentPageCollection.prototype, \"count\", {\n //Property\n /**\n * Gets the total `number of the pages`.\n * @private\n */\n get: function () {\n return this.countPages();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentPageCollection.prototype, \"pageCollectionIndex\", {\n /**\n * Gets a `page index` from the document.\n * @private\n */\n get: function () {\n return this.pdfPageCollectionIndex;\n },\n enumerable: true,\n configurable: true\n });\n PdfDocumentPageCollection.prototype.add = function (page) {\n if (typeof page === 'undefined') {\n var page_1 = new PdfPage();\n this.add(page_1);\n return page_1;\n }\n else {\n var section = this.getLastSection();\n section.add(page);\n }\n };\n /**\n * Returns `last section` in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.getLastSection = function () {\n var sc = this.document.sections;\n if (sc.section.length === 0) {\n sc.add();\n }\n var section = sc.section[sc.section.length - 1];\n return section;\n };\n /**\n * Called when `new page has been added`.\n * @private\n */\n PdfDocumentPageCollection.prototype.onPageAdded = function (args) {\n // if (PageAdded !== null)\n // {\n // PageAdded(this, args);\n // }\n };\n /**\n * Gets the `total number of pages`.\n * @private\n */\n PdfDocumentPageCollection.prototype.countPages = function () {\n var sc = this.document.sections;\n var count = 0;\n for (var index = 0; index < sc.section.length; index++) {\n count += sc.section[index].count;\n }\n return count;\n };\n /**\n * Gets the `page object` from page index.\n * @private\n */\n PdfDocumentPageCollection.prototype.getPageByIndex = function (index) {\n return this.getPage(index);\n };\n /**\n * Gets a page by its `index` in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.getPage = function (index) {\n if ((index < 0) || (index >= this.count)) {\n throw Error('ArgumentOutOfRangeException(\"index\", \"Value can not be less 0\")');\n }\n var page = null;\n var sectionStartIndex = 0;\n var sectionCount = 0;\n var pageIndex = 0;\n var length = this.document.sections.count;\n for (var i = 0; i < length; i++) {\n var section = this.document.sections.section[i];\n sectionCount = section.count;\n pageIndex = index - sectionStartIndex;\n // We found a section containing the page.\n if ((index >= sectionStartIndex && pageIndex < sectionCount)) {\n page = section.getPages()[pageIndex];\n break;\n }\n sectionStartIndex += sectionCount;\n }\n return page;\n };\n /**\n * Gets the `index of` the page in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.indexOf = function (page) {\n var index = -1;\n if (page == null) {\n throw new Error('ArgumentNullException: page');\n }\n else {\n var numPages = 0;\n for (var i = 0, len = this.document.sections.count; i < len; i++) {\n var section = this.document.sections.pdfSectionCollection(i);\n index = section.indexOf(page);\n if (index >= 0) {\n index += numPages;\n break;\n }\n else {\n index = -1;\n }\n numPages += section.count;\n }\n }\n return index;\n };\n /**\n * `Removes` the specified page.\n * @private\n */\n PdfDocumentPageCollection.prototype.remove = function (page) {\n if (page == null) {\n throw Error('ArgumentNullException(\"page\")');\n }\n var section = null;\n var len;\n for (var i = 0, len_1 = this.document.sections.count; i < len_1; i++) {\n section = this.document.sections.pdfSectionCollection(i);\n if (section.pages.contains(page)) {\n section.pages.remove(page);\n break;\n }\n }\n return section;\n };\n return PdfDocumentPageCollection;\n}());\nexport { PdfDocumentPageCollection };\n","/**\n * PdfCacheCollection.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../collections/dictionary';\n/**\n * `Collection of the cached objects`.\n * @private\n */\nvar PdfCacheCollection = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfCacheCollection` class.\n * @private\n */\n function PdfCacheCollection() {\n this.referenceObjects = [];\n this.pdfFontCollection = new Dictionary();\n }\n // Public methods\n /**\n * `Searches` for the similar cached object. If is not found - adds the object to the cache.\n * @private\n */\n PdfCacheCollection.prototype.search = function (obj) {\n var result = null;\n var group = this.getGroup(obj);\n if (group == null) {\n group = this.createNewGroup();\n }\n else if (group.length > 0) {\n result = group[0];\n }\n group.push(obj);\n return result;\n };\n // Implementation\n /**\n * `Creates` a new group.\n * @private\n */\n PdfCacheCollection.prototype.createNewGroup = function () {\n var group = [];\n this.referenceObjects.push(group);\n return group;\n };\n /**\n * `Find and Return` a group.\n * @private\n */\n PdfCacheCollection.prototype.getGroup = function (result) {\n var group = null;\n if (result !== null) {\n var len = this.referenceObjects.length;\n for (var i = 0; i < len; i++) {\n if (this.referenceObjects.length > 0) {\n var tGroup = this.referenceObjects[i];\n if (tGroup.length > 0) {\n var representative = tGroup[0];\n if (result.equalsTo(representative)) {\n group = tGroup;\n break;\n }\n }\n else {\n this.removeGroup(tGroup);\n }\n }\n len = this.referenceObjects.length;\n }\n }\n return group;\n };\n /**\n * Remove a group from the storage.\n */\n PdfCacheCollection.prototype.removeGroup = function (group) {\n if (group !== null) {\n var index = this.referenceObjects.indexOf(group);\n this.referenceObjects.slice(index, index + 1);\n }\n };\n PdfCacheCollection.prototype.destroy = function () {\n this.pdfFontCollection = undefined;\n this.referenceObjects = undefined;\n };\n return PdfCacheCollection;\n}());\nexport { PdfCacheCollection };\n","/**\n * PdfStandardFontMetricsFactory.ts class for EJ2-PDF\n */\nimport { PdfFontStyle, PdfFontFamily } from './enum';\nimport { PdfFontMetrics, StandardWidthTable } from './pdf-font-metrics';\n/**\n * @private\n * `Factory of the standard fonts metrics`.\n */\nvar PdfStandardFontMetricsFactory = /** @class */ (function () {\n function PdfStandardFontMetricsFactory() {\n }\n /**\n * Returns `metrics` of the font.\n * @private\n */\n PdfStandardFontMetricsFactory.getMetrics = function (fontFamily, fontStyle, size) {\n var metrics = null;\n switch (fontFamily) {\n case PdfFontFamily.Helvetica:\n metrics = this.getHelveticaMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.Courier:\n metrics = this.getCourierMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.TimesRoman:\n metrics = this.getTimesMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.Symbol:\n metrics = this.getSymbolMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.ZapfDingbats:\n metrics = this.getZapfDingbatsMetrics(fontFamily, fontStyle, size);\n break;\n default:\n metrics = this.getHelveticaMetrics(PdfFontFamily.Helvetica, fontStyle, size);\n break;\n }\n metrics.name = fontFamily.toString();\n metrics.subScriptSizeFactor = this.subSuperScriptFactor;\n metrics.superscriptSizeFactor = this.subSuperScriptFactor;\n return metrics;\n };\n // Implementation\n /**\n * Creates `Helvetica font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getHelveticaMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.helveticaBoldItalicAscent;\n metrics.descent = this.helveticaBoldItalicDescent;\n metrics.postScriptName = this.helveticaBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.helveticaBoldAscent;\n metrics.descent = this.helveticaBoldDescent;\n metrics.postScriptName = this.helveticaBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.helveticaItalicAscent;\n metrics.descent = this.helveticaItalicDescent;\n metrics.postScriptName = this.helveticaItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.helveticaAscent;\n metrics.descent = this.helveticaDescent;\n metrics.postScriptName = this.helveticaName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Courier font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getCourierMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.courierBoldItalicAscent;\n metrics.descent = this.courierBoldItalicDescent;\n metrics.postScriptName = this.courierBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.courierBoldAscent;\n metrics.descent = this.courierBoldDescent;\n metrics.postScriptName = this.courierBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.courierItalicAscent;\n metrics.descent = this.courierItalicDescent;\n metrics.postScriptName = this.courierItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.courierAscent;\n metrics.descent = this.courierDescent;\n metrics.postScriptName = this.courierName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Times font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getTimesMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.timesBoldItalicAscent;\n metrics.descent = this.timesBoldItalicDescent;\n metrics.postScriptName = this.timesBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanBoldItalicWidths);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.timesBoldAscent;\n metrics.descent = this.timesBoldDescent;\n metrics.postScriptName = this.timesBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.timesItalicAscent;\n metrics.descent = this.timesItalicDescent;\n metrics.postScriptName = this.timesItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanItalicWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.timesAscent;\n metrics.descent = this.timesDescent;\n metrics.postScriptName = this.timesName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Symbol font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getSymbolMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n metrics.ascent = this.symbolAscent;\n metrics.descent = this.symbolDescent;\n metrics.postScriptName = this.symbolName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.symbolWidth);\n metrics.height = metrics.ascent - metrics.descent;\n return metrics;\n };\n /**\n * Creates `ZapfDingbats font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getZapfDingbatsMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n metrics.ascent = this.zapfDingbatsAscent;\n metrics.descent = this.zapfDingbatsDescent;\n metrics.postScriptName = this.zapfDingbatsName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.zapfDingbatsWidth);\n metrics.height = metrics.ascent - metrics.descent;\n return metrics;\n };\n /**\n * `Multiplier` os subscript superscript.\n * @private\n */\n PdfStandardFontMetricsFactory.subSuperScriptFactor = 1.52;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaAscent = 931;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaDescent = -225;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaName = 'Helvetica';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldAscent = 962;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldDescent = -228;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldName = 'Helvetica-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicAscent = 931;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicDescent = -225;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicName = 'Helvetica-Oblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicAscent = 962;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicDescent = -228;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicName = 'Helvetica-BoldOblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierAscent = 805;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierName = 'Courier';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldAscent = 801;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldName = 'Courier-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicAscent = 805;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicName = 'Courier-Oblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicAscent = 801;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicName = 'Courier-BoldOblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesAscent = 898;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesName = 'Times-Roman';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldAscent = 935;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldName = 'Times-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicAscent = 883;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicDescent = -217;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicName = 'Times-Italic';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicAscent = 921;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicName = 'Times-BoldItalic';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolAscent = 1010;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolDescent = -293;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolName = 'Symbol';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsAscent = 820;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsDescent = -143;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsName = 'ZapfDingbats';\n /**\n * `Arial` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.arialWidth = [\n 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584,\n 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833,\n 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278,\n 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833,\n 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334,\n 584, 0, 556, 0, 222, 556, 333, 1000, 556, 556, 333, 1000, 667, 333, 1000, 0,\n 611, 0, 0, 222, 222, 333, 333, 350, 556, 1000, 333, 1000, 500, 333, 944, 0,\n 500, 667, 0, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 0,\n 737, 333, 400, 584, 333, 333, 333, 556, 537, 278, 333, 333, 365, 556, 834, 834,\n 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278,\n 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667,\n 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 584, 611, 556, 556, 556, 556, 500,\n 556, 500\n ];\n /**\n * `Arial bold` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.arialBoldWidth = [\n 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584,\n 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833,\n 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333,\n 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889,\n 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389,\n 584, 0, 556, 0, 278, 556, 500, 1000, 556, 556, 333, 1000, 667, 333, 1000, 0,\n 611, 0, 0, 278, 278, 500, 500, 350, 556, 1000, 333, 1000, 556, 333, 944, 0,\n 500, 667, 0, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 0,\n 737, 333, 400, 584, 333, 333, 333, 611, 556, 278, 333, 333, 365, 556, 834, 834,\n 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278,\n 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667,\n 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278,\n 278, 278, 611, 611, 611, 611, 611, 611, 611, 584, 611, 611, 611, 611, 611, 556,\n 611, 556\n ];\n /**\n * `Fixed` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.fixedWidth = [\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600\n ];\n /**\n * `Times` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanWidth = [\n 250, 333, 408, 500, 500, 833, 778, 180, 333, 333, 500, 564, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278, 564, 564,\n 564, 444, 921, 722, 667, 667, 722, 611, 556, 722, 722, 333, 389, 722, 611, 889,\n 722, 722, 556, 722, 667, 556, 611, 722, 722, 944, 722, 722, 611, 333, 278, 333,\n 469, 500, 333, 444, 500, 444, 500, 444, 333, 500, 500, 278, 278, 500, 278, 778,\n 500, 500, 500, 500, 333, 389, 278, 500, 500, 722, 500, 500, 444, 480, 200, 480,\n 541, 0, 500, 0, 333, 500, 444, 1000, 500, 500, 333, 1000, 556, 333, 889, 0,\n 611, 0, 0, 333, 333, 444, 444, 350, 500, 1000, 333, 980, 389, 333, 722, 0,\n 444, 722, 0, 333, 500, 500, 500, 500, 200, 500, 333, 760, 276, 500, 564, 0,\n 760, 333, 400, 564, 300, 300, 333, 500, 453, 250, 333, 300, 310, 500, 750, 750,\n 750, 444, 722, 722, 722, 722, 722, 722, 889, 667, 611, 611, 611, 611, 333, 333,\n 333, 333, 722, 722, 722, 722, 722, 722, 722, 564, 722, 722, 722, 722, 722, 722,\n 556, 500, 444, 444, 444, 444, 444, 444, 667, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 500, 500, 500, 500, 500, 500, 564, 500, 500, 500, 500, 500, 500,\n 500, 500\n ];\n /**\n * `Times bold` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanBoldWidth = [\n 250, 333, 555, 500, 500, 1000, 833, 278, 333, 333, 500, 570, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570,\n 570, 500, 930, 722, 667, 722, 722, 667, 611, 778, 778, 389, 500, 778, 667, 944,\n 722, 778, 611, 778, 722, 556, 667, 722, 722, 1000, 722, 722, 667, 333, 278, 333,\n 581, 500, 333, 500, 556, 444, 556, 444, 333, 500, 556, 278, 333, 556, 278, 833,\n 556, 500, 556, 556, 444, 389, 333, 556, 500, 722, 500, 500, 444, 394, 220, 394,\n 520, 0, 500, 0, 333, 500, 500, 1000, 500, 500, 333, 1000, 556, 333, 1000, 0,\n 667, 0, 0, 333, 333, 500, 500, 350, 500, 1000, 333, 1000, 389, 333, 722, 0,\n 444, 722, 0, 333, 500, 500, 500, 500, 220, 500, 333, 747, 300, 500, 570, 0,\n 747, 333, 400, 570, 300, 300, 333, 556, 540, 250, 333, 300, 330, 500, 750, 750,\n 750, 500, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 389, 389,\n 389, 389, 722, 722, 778, 778, 778, 778, 778, 570, 778, 722, 722, 722, 722, 722,\n 611, 556, 500, 500, 500, 500, 500, 500, 722, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 556, 500, 500, 500, 500, 500, 570, 500, 556, 556, 556, 556, 500,\n 556, 500\n ];\n /**\n * `Times italic` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanItalicWidth = [\n 250, 333, 420, 500, 500, 833, 778, 214, 333, 333, 500, 675, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 675, 675,\n 675, 500, 920, 611, 611, 667, 722, 611, 611, 722, 722, 333, 444, 667, 556, 833,\n 667, 722, 611, 722, 611, 500, 556, 722, 611, 833, 611, 556, 556, 389, 278, 389,\n 422, 500, 333, 500, 500, 444, 500, 444, 278, 500, 500, 278, 278, 444, 278, 722,\n 500, 500, 500, 500, 389, 389, 278, 500, 444, 667, 444, 444, 389, 400, 275, 400,\n 541, 0, 500, 0, 333, 500, 556, 889, 500, 500, 333, 1000, 500, 333, 944, 0,\n 556, 0, 0, 333, 333, 556, 556, 350, 500, 889, 333, 980, 389, 333, 667, 0,\n 389, 556, 0, 389, 500, 500, 500, 500, 275, 500, 333, 760, 276, 500, 675, 0,\n 760, 333, 400, 675, 300, 300, 333, 500, 523, 250, 333, 300, 310, 500, 750, 750,\n 750, 500, 611, 611, 611, 611, 611, 611, 889, 667, 611, 611, 611, 611, 333, 333,\n 333, 333, 722, 667, 722, 722, 722, 722, 722, 675, 722, 722, 722, 722, 722, 556,\n 611, 500, 500, 500, 500, 500, 500, 500, 667, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 500, 500, 500, 500, 500, 500, 675, 500, 500, 500, 500, 500, 444,\n 500, 444\n ];\n /**\n * `Times bold italic` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanBoldItalicWidths = [\n 250, 389, 555, 500, 500, 833, 778, 278, 333, 333, 500, 570, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570,\n 570, 500, 832, 667, 667, 667, 722, 667, 667, 722, 778, 389, 500, 667, 611, 889,\n 722, 722, 611, 722, 667, 556, 611, 722, 667, 889, 667, 611, 611, 333, 278, 333,\n 570, 500, 333, 500, 500, 444, 500, 444, 333, 500, 556, 278, 278, 500, 278, 778,\n 556, 500, 500, 500, 389, 389, 278, 556, 444, 667, 500, 444, 389, 348, 220, 348,\n 570, 0, 500, 0, 333, 500, 500, 1000, 500, 500, 333, 1000, 556, 333, 944, 0,\n 611, 0, 0, 333, 333, 500, 500, 350, 500, 1000, 333, 1000, 389, 333, 722, 0,\n 389, 611, 0, 389, 500, 500, 500, 500, 220, 500, 333, 747, 266, 500, 606, 0,\n 747, 333, 400, 570, 300, 300, 333, 576, 500, 250, 333, 300, 300, 500, 750, 750,\n 750, 500, 667, 667, 667, 667, 667, 667, 944, 667, 667, 667, 667, 667, 389, 389,\n 389, 389, 722, 722, 722, 722, 722, 722, 722, 570, 722, 722, 722, 722, 722, 611,\n 611, 500, 500, 500, 500, 500, 500, 500, 722, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 556, 500, 500, 500, 500, 500, 570, 500, 556, 556, 556, 556, 444,\n 500, 444\n ];\n /**\n * `Symbol` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolWidth = [\n 250, 333, 713, 500, 549, 833, 778, 439, 333, 333, 500, 549, 250, 549,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278,\n 549, 549, 549, 444, 549, 722, 667, 722, 612, 611, 763, 603, 722, 333,\n 631, 722, 686, 889, 722, 722, 768, 741, 556, 592, 611, 690, 439, 768,\n 645, 795, 611, 333, 863, 333, 658, 500, 500, 631, 549, 549, 494, 439,\n 521, 411, 603, 329, 603, 549, 549, 576, 521, 549, 549, 521, 549, 603,\n 439, 576, 713, 686, 493, 686, 494, 480, 200, 480, 549, 750, 620, 247,\n 549, 167, 713, 500, 753, 753, 753, 753, 1042, 987, 603, 987, 603, 400,\n 549, 411, 549, 549, 713, 494, 460, 549, 549, 549, 549, 1000, 603, 1000,\n 658, 823, 686, 795, 987, 768, 768, 823, 768, 768, 713, 713, 713, 713,\n 713, 713, 713, 768, 713, 790, 790, 890, 823, 549, 250, 713, 603, 603,\n 1042, 987, 603, 987, 603, 494, 329, 790, 790, 786, 713, 384, 384, 384,\n 384, 384, 384, 494, 494, 494, 494, 329, 274, 686, 686, 686, 384, 384,\n 384, 384, 384, 384, 494, 494, 494, -1\n ];\n /**\n * `Zip dingbats` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsWidth = [\n 278, 974, 961, 974, 980, 719, 789, 790, 791, 690, 960, 939, 549, 855,\n 911, 933, 911, 945, 974, 755, 846, 762, 761, 571, 677, 763, 760, 759,\n 754, 494, 552, 537, 577, 692, 786, 788, 788, 790, 793, 794, 816, 823,\n 789, 841, 823, 833, 816, 831, 923, 744, 723, 749, 790, 792, 695, 776,\n 768, 792, 759, 707, 708, 682, 701, 826, 815, 789, 789, 707, 687, 696,\n 689, 786, 787, 713, 791, 785, 791, 873, 761, 762, 762, 759, 759, 892,\n 892, 788, 784, 438, 138, 277, 415, 392, 392, 668, 668, 390, 390, 317,\n 317, 276, 276, 509, 509, 410, 410, 234, 234, 334, 334, 732, 544, 544,\n 910, 667, 760, 760, 776, 595, 694, 626, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 894, 838, 1016, 458, 748, 924, 748, 918,\n 927, 928, 928, 834, 873, 828, 924, 924, 917, 930, 931, 463, 883, 836,\n 836, 867, 867, 696, 696, 874, 874, 760, 946, 771, 865, 771, 888, 967,\n 888, 831, 873, 927, 970, 918\n ];\n return PdfStandardFontMetricsFactory;\n}());\nexport { PdfStandardFontMetricsFactory };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfFontFamily, PdfFontStyle, FontEncoding } from './enum';\nimport { PdfFont } from './pdf-font';\nimport { PdfDocument } from './../../document/pdf-document';\nimport { PdfStandardFontMetricsFactory } from './pdf-standard-font-metrics-factory';\nimport { PdfDictionary } from './../../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../../primitives/pdf-name';\n/**\n * Represents one of the 14 standard fonts.\n * It's used to create a standard PDF font to draw the text in to the PDF.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * //\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfStandardFont = /** @class */ (function (_super) {\n __extends(PdfStandardFont, _super);\n function PdfStandardFont(fontFamilyPrototype, size, style) {\n var _this = _super.call(this, size, (typeof style === 'undefined') ? ((fontFamilyPrototype instanceof PdfStandardFont) ? fontFamilyPrototype.style : PdfFontStyle.Regular) : style) || this;\n /**\n * Gets `ascent` of the font.\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n /**\n * Gets `encodings` for internal class use.\n * @hidden\n * @private\n */\n _this.encodings = ['Unknown', 'StandardEncoding', 'MacRomanEncoding', 'MacExpertEncoding',\n 'WinAnsiEncoding', 'PDFDocEncoding', 'IdentityH'];\n if (typeof fontFamilyPrototype === 'undefined') {\n _this.pdfFontFamily = PdfFontFamily.Helvetica;\n }\n else if ((fontFamilyPrototype instanceof PdfStandardFont)) {\n _this.pdfFontFamily = fontFamilyPrototype.fontFamily;\n }\n else {\n _this.pdfFontFamily = fontFamilyPrototype;\n }\n _this.checkStyle();\n _this.initializeInternals();\n return _this;\n }\n Object.defineProperty(PdfStandardFont.prototype, \"fontFamily\", {\n /* tslint:enable */\n //Properties\n /**\n * Gets the `FontFamily`.\n * @private\n */\n get: function () {\n return this.pdfFontFamily;\n },\n enumerable: true,\n configurable: true\n });\n //methods\n /**\n * Checks font `style` of the font.\n * @private\n */\n PdfStandardFont.prototype.checkStyle = function () {\n if (this.fontFamily === PdfFontFamily.Symbol || this.fontFamily === PdfFontFamily.ZapfDingbats) {\n var style = this.style;\n style &= ~(PdfFontStyle.Bold | PdfFontStyle.Italic);\n this.setStyle(style);\n }\n };\n /**\n * Returns `width` of the line.\n * @public\n */\n PdfStandardFont.prototype.getLineWidth = function (line, format) {\n if (line == null) {\n throw new Error('ArgumentNullException:line');\n }\n var width = 0;\n var name = this.name;\n line = PdfStandardFont.convert(line);\n for (var i = 0, len = line.length; i < len; i++) {\n var ch = line[i];\n var charWidth = this.getCharWidthInternal(ch, format);\n width += charWidth;\n }\n var size = this.metrics.getSize(format);\n width *= (PdfFont.charSizeMultiplier * size);\n width = this.applyFormatSettings(line, format, width);\n return width;\n };\n /**\n * Checks whether fonts are `equals`.\n * @private\n */\n PdfStandardFont.prototype.equalsToFont = function (font) {\n var equal = false;\n var stFont = font;\n if (stFont != null) {\n var fontFamilyEqual = (this.fontFamily === stFont.fontFamily);\n var lineReducer = (~(PdfFontStyle.Underline | PdfFontStyle.Strikeout));\n var styleEqual = (this.style & lineReducer) === (stFont.style & lineReducer);\n equal = (fontFamilyEqual && styleEqual);\n }\n return equal;\n };\n /**\n * `Initializes` font internals..\n * @private\n */\n PdfStandardFont.prototype.initializeInternals = function () {\n var equalFont = null;\n // if (PdfDocument.EnableCache) {\n equalFont = PdfDocument.cache.search(this);\n // }\n var internals = null;\n // if (equalFont == null) {\n // Create font metrics.\n var metrics = PdfStandardFontMetricsFactory.getMetrics(this.pdfFontFamily, this.style, this.size);\n this.metrics = metrics;\n internals = this.createInternals();\n this.setInternals(internals);\n };\n /**\n * `Creates` font`s dictionary.\n * @private\n */\n PdfStandardFont.prototype.createInternals = function () {\n var dictionary = new PdfDictionary();\n dictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n dictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.type1));\n dictionary.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.metrics.postScriptName));\n if (this.fontFamily !== PdfFontFamily.Symbol && this.fontFamily !== PdfFontFamily.ZapfDingbats) {\n var encoding = this.encodings[FontEncoding.WinAnsiEncoding];\n dictionary.items.setValue(this.dictionaryProperties.encoding, new PdfName(encoding));\n }\n return dictionary;\n };\n /**\n * Returns `width` of the char. This methods doesn`t takes into consideration font`s size.\n * @private\n */\n PdfStandardFont.prototype.getCharWidthInternal = function (charCode, format) {\n var width = 0;\n var code = 0;\n code = charCode.charCodeAt(0);\n if (this.name === '0' || this.name === '1' || this.name === '2' ||\n this.name === '3' || this.name === '4') {\n code = code - PdfStandardFont.charOffset;\n }\n code = (code >= 0 && code !== 128) ? code : 0;\n var metrics = this.metrics;\n var widthTable = metrics.widthTable;\n width = widthTable.items(code);\n return width;\n };\n /**\n * `Converts` the specified text.\n * @private\n */\n PdfStandardFont.convert = function (text) {\n return text;\n };\n //Constants\n /**\n * First character `position`.\n * @private\n */\n PdfStandardFont.charOffset = 32;\n return PdfStandardFont;\n}(PdfFont));\nexport { PdfStandardFont };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfWriter } from './../input-output/pdf-writer';\nimport { PdfMainObjectCollection } from './../input-output/pdf-main-object-collection';\nimport { PdfDocumentBase } from './pdf-document-base';\nimport { PdfCrossTable } from './../input-output/pdf-cross-table';\nimport { PdfCatalog } from './pdf-catalog';\nimport { PdfPageSettings } from './../pages/pdf-page-settings';\nimport { PdfSectionCollection } from './../pages/pdf-section-collection';\nimport { PdfDocumentPageCollection } from './../pages/pdf-document-page-collection';\nimport { PdfCacheCollection } from './../general/pdf-cache-collection';\nimport { PdfColorSpace } from './../graphics/enum';\nimport { PdfDocumentTemplate } from './pdf-document-template';\nimport { PdfFontFamily } from './../graphics/fonts/enum';\nimport { PdfStandardFont } from './../graphics/fonts/pdf-standard-font';\n/**\n * Represents a PDF document and can be used to create a new PDF document from the scratch.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfDocument = /** @class */ (function (_super) {\n __extends(PdfDocument, _super);\n function PdfDocument(isMerging) {\n var _this = _super.call(this) || this;\n /**\n * Default `margin` value.\n * @default 40.0\n * @private\n */\n _this.defaultMargin = 40.0;\n /**\n * Internal variable to store instance of `StreamWriter` classes..\n * @default null\n * @private\n */\n _this.streamWriter = null;\n _this.document = _this;\n var isMerge = false;\n if (typeof isMerging === 'undefined') {\n PdfDocument.cacheCollection = new PdfCacheCollection();\n isMerge = false;\n }\n else {\n isMerge = isMerging;\n }\n var objects = new PdfMainObjectCollection();\n _this.setMainObjectCollection(objects);\n var crossTable = new PdfCrossTable();\n crossTable.isMerging = isMerge;\n crossTable.document = _this;\n _this.setCrossTable(crossTable);\n var catalog = new PdfCatalog();\n _this.setCatalog(catalog);\n objects.add(catalog);\n catalog.position = -1;\n _this.sectionCollection = new PdfSectionCollection(_this);\n _this.documentPageCollection = new PdfDocumentPageCollection(_this);\n catalog.pages = _this.sectionCollection;\n return _this;\n }\n Object.defineProperty(PdfDocument, \"defaultFont\", {\n //Properties\n /**\n * Gets the `default font`. It is used for complex objects when font is not explicitly defined.\n * @private\n */\n get: function () {\n if (this.defaultStandardFont == null) {\n this.defaultStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 8);\n }\n return this.defaultStandardFont;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"sections\", {\n /**\n * Gets the collection of the `sections` in the document.\n * @private\n */\n get: function () {\n return this.sectionCollection;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"pageSettings\", {\n /**\n * Gets the document's page setting.\n * @public\n */\n get: function () {\n if (this.settings == null) {\n this.settings = new PdfPageSettings(this.defaultMargin);\n }\n return this.settings;\n },\n /**\n * Sets the document's page setting.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n *\n * // sets the right margin of the page\n * document.pageSettings.margins.right = 0;\n * // set the page size.\n * document.pageSettings.size = new SizeF(500, 500);\n * // change the page orientation to landscape\n * document.pageSettings.orientation = PdfPageOrientation.Landscape;\n * // apply 90 degree rotation on the page\n * document.pageSettings.rotate = PdfPageRotateAngle.RotateAngle90;\n *\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // set the specified Point\n * let point : PointF = new PointF(page1.getClientSize().width - 200, page1.getClientSize().height - 200);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, point);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this.settings = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"pages\", {\n /**\n * Represents the collection of pages in the PDF document.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * //\n * // get the collection of pages in the document\n * let pageCollection : PdfDocumentPageCollection = document.pages;\n * //\n * // add pages\n * let page1 : PdfPage = pageCollection.add();\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.documentPageCollection;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument, \"cache\", {\n /**\n * Gets collection of the `cached objects`.\n * @private\n */\n get: function () {\n if (typeof PdfDocument.cacheCollection === 'undefined' || PdfDocument.cacheCollection == null) {\n return new PdfCacheCollection();\n }\n return PdfDocument.cacheCollection;\n },\n /**\n * Sets collection of the `cached objects`.\n * @private\n */\n set: function (value) {\n this.cacheCollection = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument, \"enableCache\", {\n /**\n * Gets the value of enable cache.\n * @private\n */\n get: function () {\n return this.isCacheEnabled;\n },\n /**\n * Sets thie value of enable cache.\n * @private\n */\n set: function (value) {\n this.isCacheEnabled = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"colorSpace\", {\n /* tslint:disable */\n /**\n * Gets or sets the `color space` of the document. This property can be used to create PDF document in RGB, Gray scale or CMYK color spaces.\n * @private\n */\n get: function () {\n if ((this.pdfColorSpace === PdfColorSpace.Rgb) || ((this.pdfColorSpace === PdfColorSpace.Cmyk)\n || (this.pdfColorSpace === PdfColorSpace.GrayScale))) {\n return this.pdfColorSpace;\n }\n else {\n return PdfColorSpace.Rgb;\n }\n },\n set: function (value) {\n if ((value === PdfColorSpace.Rgb) || ((value === PdfColorSpace.Cmyk) ||\n (value === PdfColorSpace.GrayScale))) {\n this.pdfColorSpace = value;\n }\n else {\n this.pdfColorSpace = PdfColorSpace.Rgb;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"template\", {\n /* tslint:enable */\n /**\n * Gets or sets a `template` to all pages in the document.\n * @private\n */\n get: function () {\n if (this.pageTemplate == null) {\n this.pageTemplate = new PdfDocumentTemplate();\n }\n return this.pageTemplate;\n },\n set: function (value) {\n this.pageTemplate = value;\n },\n enumerable: true,\n configurable: true\n });\n PdfDocument.prototype.docSave = function (stream, arg2, arg3) {\n this.checkPagesPresence();\n if (stream === null) {\n throw new Error('ArgumentNullException : stream');\n }\n this.streamWriter = stream;\n var writer = new PdfWriter(stream);\n writer.document = this;\n if (typeof arg2 === 'boolean' && typeof arg3 === 'undefined') {\n return this.crossTable.save(writer);\n }\n else {\n this.crossTable.save(writer, arg2);\n }\n };\n /**\n * Checks the pages `presence`.\n * @private\n */\n PdfDocument.prototype.checkPagesPresence = function () {\n if (this.pages.count === 0) {\n this.pages.add();\n }\n };\n /**\n * disposes the current instance of `PdfDocument` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfDocument.prototype.destroy = function () {\n this.catalog = undefined;\n this.colorSpace = undefined;\n this.currentSavingObj = undefined;\n this.documentPageCollection = undefined;\n this.isStreamCopied = undefined;\n this.pageSettings = undefined;\n this.pageTemplate = undefined;\n this.pdfColorSpace = undefined;\n this.sectionCollection = undefined;\n PdfDocument.cache.destroy();\n this.crossTable.pdfObjects.destroy();\n PdfDocument.cache = undefined;\n this.streamWriter.destroy();\n };\n /**\n * `Font` used in complex objects to draw strings and text when it is not defined explicitly.\n * @default null\n * @private\n */\n PdfDocument.defaultStandardFont = null;\n /**\n * Indicates whether enable cache or not\n * @default true\n * @private\n */\n PdfDocument.isCacheEnabled = true;\n return PdfDocument;\n}(PdfDocumentBase));\nexport { PdfDocument };\n","/**\n * PdfBorders.ts class for EJ2-PDF\n */\nimport { PdfPen } from './../../../graphics/pdf-pen';\nimport { PdfDashStyle } from './../../../graphics/enum';\nimport { PdfColor } from './../../../graphics/pdf-color';\n/**\n * `PdfBorders` class used represents the cell border of the PDF grid.\n */\nvar PdfBorders = /** @class */ (function () {\n // Constructor\n /**\n * Create a new instance for `PdfBorders` class.\n * @private\n */\n function PdfBorders() {\n var defaultBorderPenLeft = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenLeft.dashStyle = PdfDashStyle.Solid;\n var defaultBorderPenRight = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenRight.dashStyle = PdfDashStyle.Solid;\n var defaultBorderPenTop = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenTop.dashStyle = PdfDashStyle.Solid;\n var defaultBorderPenBottom = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenBottom.dashStyle = PdfDashStyle.Solid;\n this.leftPen = defaultBorderPenLeft;\n this.rightPen = defaultBorderPenRight;\n this.topPen = defaultBorderPenTop;\n this.bottomPen = defaultBorderPenBottom;\n }\n Object.defineProperty(PdfBorders.prototype, \"left\", {\n // Properties\n /**\n * Gets or sets the `Left`.\n * @private\n */\n get: function () {\n return this.leftPen;\n },\n set: function (value) {\n this.leftPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"right\", {\n /**\n * Gets or sets the `Right`.\n * @private\n */\n get: function () {\n return this.rightPen;\n },\n set: function (value) {\n this.rightPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"top\", {\n /**\n * Gets or sets the `Top`.\n * @private\n */\n get: function () {\n return this.topPen;\n },\n set: function (value) {\n this.topPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"bottom\", {\n /**\n * Gets or sets the `Bottom`.\n * @private\n */\n get: function () {\n return this.bottomPen;\n },\n set: function (value) {\n this.bottomPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"all\", {\n /**\n * sets the `All`.\n * @private\n */\n set: function (value) {\n this.leftPen = this.rightPen = this.topPen = this.bottomPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"isAll\", {\n /**\n * Gets a value indicating whether this instance `is all`.\n * @private\n */\n get: function () {\n return ((this.leftPen === this.rightPen) && (this.leftPen === this.topPen) && (this.leftPen === this.bottomPen));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders, \"default\", {\n /**\n * Gets the `default`.\n * @private\n */\n get: function () {\n return new PdfBorders();\n },\n enumerable: true,\n configurable: true\n });\n return PdfBorders;\n}());\nexport { PdfBorders };\nvar PdfPaddings = /** @class */ (function () {\n function PdfPaddings(left, right, top, bottom) {\n /**\n * The 'left' border padding set.\n * @private\n */\n this.hasLeftPad = false;\n /**\n * The 'right' border padding set.\n * @private\n */\n this.hasRightPad = false;\n /**\n * The 'top' border padding set.\n * @private\n */\n this.hasTopPad = false;\n /**\n * The 'bottom' border padding set.\n * @private\n */\n this.hasBottomPad = false;\n if (typeof left === 'undefined') {\n //5.76 and 0 are taken from ms-word default table margins.\n this.leftPad = this.rightPad = 5.76;\n //0.5 is set for top and bottom by default.\n this.bottomPad = this.topPad = 0.5;\n }\n else {\n this.leftPad = left;\n this.rightPad = right;\n this.topPad = top;\n this.bottomPad = bottom;\n this.hasLeftPad = true;\n this.hasRightPad = true;\n this.hasTopPad = true;\n this.hasBottomPad = true;\n }\n }\n Object.defineProperty(PdfPaddings.prototype, \"left\", {\n // Properties\n /**\n * Gets or sets the `left` value of the edge\n * @private\n */\n get: function () {\n return this.leftPad;\n },\n set: function (value) {\n this.leftPad = value;\n this.hasLeftPad = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPaddings.prototype, \"right\", {\n /**\n * Gets or sets the `right` value of the edge.\n * @private\n */\n get: function () {\n return this.rightPad;\n },\n set: function (value) {\n this.rightPad = value;\n this.hasRightPad = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPaddings.prototype, \"top\", {\n /**\n * Gets or sets the `top` value of the edge\n * @private\n */\n get: function () {\n return this.topPad;\n },\n set: function (value) {\n this.topPad = value;\n this.hasTopPad = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPaddings.prototype, \"bottom\", {\n /**\n * Gets or sets the `bottom` value of the edge.\n * @private\n */\n get: function () {\n return this.bottomPad;\n },\n set: function (value) {\n this.bottomPad = value;\n this.hasBottomPad = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPaddings.prototype, \"all\", {\n /**\n * Sets value to all sides `left,right,top and bottom`.s\n * @private\n */\n set: function (value) {\n this.leftPad = this.rightPad = this.topPad = this.bottomPad = value;\n this.hasLeftPad = true;\n this.hasRightPad = true;\n this.hasTopPad = true;\n this.hasBottomPad = true;\n },\n enumerable: true,\n configurable: true\n });\n return PdfPaddings;\n}());\nexport { PdfPaddings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfBorders, PdfPaddings } from './pdf-borders';\nimport { PdfBorderOverlapStyle } from './../../tables/light-tables/enum';\n/**\n * Base class for the `grid style`,\n */\nvar PdfGridStyleBase = /** @class */ (function () {\n function PdfGridStyleBase() {\n }\n Object.defineProperty(PdfGridStyleBase.prototype, \"backgroundBrush\", {\n // Properties\n /**\n * Gets or sets the `background brush`.\n * @private\n */\n get: function () {\n return this.gridBackgroundBrush;\n },\n set: function (value) {\n this.gridBackgroundBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyleBase.prototype, \"textBrush\", {\n /**\n * Gets or sets the `text brush`.\n * @private\n */\n get: function () {\n return this.gridTextBrush;\n },\n set: function (value) {\n this.gridTextBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyleBase.prototype, \"textPen\", {\n /**\n * Gets or sets the `text pen`.\n * @private\n */\n get: function () {\n return this.gridTextPen;\n },\n set: function (value) {\n this.gridTextPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyleBase.prototype, \"font\", {\n /**\n * Gets or sets the `font`.\n * @private\n */\n get: function () {\n return this.gridFont;\n },\n set: function (value) {\n this.gridFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyleBase.prototype, \"backgroundImage\", {\n /**\n * Gets or sets the `background Image`.\n * @private\n */\n get: function () {\n return this.gridBackgroundImage;\n },\n set: function (value) {\n this.gridBackgroundImage = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridStyleBase;\n}());\nexport { PdfGridStyleBase };\n/**\n * `PdfGridStyle` class provides customization of the appearance for the 'PdfGrid'.\n */\nvar PdfGridStyle = /** @class */ (function (_super) {\n __extends(PdfGridStyle, _super);\n //constructor\n /**\n * Initialize a new instance for `PdfGridStyle` class.\n * @private\n */\n function PdfGridStyle() {\n var _this = _super.call(this) || this;\n _this.gridBorderOverlapStyle = PdfBorderOverlapStyle.Overlap;\n _this.bAllowHorizontalOverflow = false;\n _this.gridHorizontalOverflowType = PdfHorizontalOverflowType.LastPage;\n return _this;\n }\n Object.defineProperty(PdfGridStyle.prototype, \"cellSpacing\", {\n //Properties\n /**\n * Gets or sets the `cell spacing` of the 'PdfGrid'.\n * @private\n */\n get: function () {\n if (typeof this.gridCellSpacing === 'undefined') {\n this.gridCellSpacing = 0;\n }\n return this.gridCellSpacing;\n },\n set: function (value) {\n this.gridCellSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyle.prototype, \"horizontalOverflowType\", {\n /**\n * Gets or sets the type of the `horizontal overflow` of the 'PdfGrid'.\n * @private\n */\n get: function () {\n return this.gridHorizontalOverflowType;\n },\n set: function (value) {\n this.gridHorizontalOverflowType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyle.prototype, \"allowHorizontalOverflow\", {\n /**\n * Gets or sets a value indicating whether to `allow horizontal overflow`.\n * @private\n */\n get: function () {\n return this.bAllowHorizontalOverflow;\n },\n set: function (value) {\n this.bAllowHorizontalOverflow = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyle.prototype, \"cellPadding\", {\n /**\n * Gets or sets the `cell padding`.\n * @private\n */\n get: function () {\n if (typeof this.gridCellPadding === 'undefined') {\n this.gridCellPadding = new PdfPaddings();\n }\n return this.gridCellPadding;\n },\n set: function (value) {\n if (typeof this.gridCellPadding === 'undefined') {\n this.gridCellPadding = new PdfPaddings();\n this.gridCellPadding = value;\n }\n else {\n this.gridCellPadding = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyle.prototype, \"borderOverlapStyle\", {\n /**\n * Gets or sets the `border overlap style` of the 'PdfGrid'.\n * @private\n */\n get: function () {\n return this.gridBorderOverlapStyle;\n },\n set: function (value) {\n this.gridBorderOverlapStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridStyle;\n}(PdfGridStyleBase));\nexport { PdfGridStyle };\n/**\n * `PdfGridCellStyle` class provides customization of the appearance for the 'PdfGridCell'.\n */\nvar PdfGridCellStyle = /** @class */ (function (_super) {\n __extends(PdfGridCellStyle, _super);\n /**\n * Initializes a new instance of the `PdfGridCellStyle` class.\n * @private\n */\n function PdfGridCellStyle() {\n var _this = _super.call(this) || this;\n /**\n * @hidden\n * @private\n */\n _this.gridCellBorders = PdfBorders.default;\n return _this;\n }\n Object.defineProperty(PdfGridCellStyle.prototype, \"stringFormat\", {\n //Properties\n /**\n * Gets the `string format` of the 'PdfGridCell'.\n * @private\n */\n get: function () {\n return this.format;\n },\n set: function (value) {\n this.format = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCellStyle.prototype, \"borders\", {\n /**\n * Gets or sets the `border` of the 'PdfGridCell'.\n * @private\n */\n get: function () {\n return this.gridCellBorders;\n },\n set: function (value) {\n this.gridCellBorders = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCellStyle.prototype, \"cellPadding\", {\n /**\n * Gets or sets the `cell padding`.\n * @private\n */\n get: function () {\n return this.gridCellPadding;\n },\n set: function (value) {\n if (this.gridCellPadding == null || typeof this.gridCellPadding === 'undefined') {\n this.gridCellPadding = new PdfPaddings();\n }\n this.gridCellPadding = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridCellStyle;\n}(PdfGridStyleBase));\nexport { PdfGridCellStyle };\n/**\n * `PdfGridRowStyle` class provides customization of the appearance for the `PdfGridRow`.\n */\nvar PdfGridRowStyle = /** @class */ (function () {\n // Constructor\n /**\n * Initializes a new instance of the `PdfGridRowStyle` class.\n * @private\n */\n function PdfGridRowStyle() {\n //\n }\n Object.defineProperty(PdfGridRowStyle.prototype, \"backgroundBrush\", {\n // Properties\n /**\n * Gets or sets the `background brush`.\n * @private\n */\n get: function () {\n return this.gridRowBackgroundBrush;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setBackgroundBrush = function (value) {\n this.gridRowBackgroundBrush = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.backgroundBrush = value;\n }\n }\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"textBrush\", {\n /**\n * Gets or sets the `text brush`.\n * @private\n */\n get: function () {\n return this.gridRowTextBrush;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setTextBrush = function (value) {\n this.gridRowTextBrush = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.textBrush = value;\n }\n }\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"textPen\", {\n /**\n * Gets or sets the `text pen`.\n * @private\n */\n get: function () {\n return this.gridRowTextPen;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setTextPen = function (value) {\n this.gridRowTextPen = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.textPen = value;\n }\n }\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"font\", {\n /**\n * Gets or sets the `font`.\n * @private\n */\n get: function () {\n return this.gridRowFont;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setFont = function (value) {\n this.gridRowFont = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.font = value;\n }\n }\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"border\", {\n /**\n * Gets or sets the `border` of the current row.\n * @private\n */\n get: function () {\n if (typeof this.gridRowBorder === 'undefined') {\n this.setBorder(new PdfBorders());\n }\n return this.gridRowBorder;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setBorder = function (value) {\n this.gridRowBorder = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.borders = value;\n }\n }\n };\n /**\n * sets the `parent row` of the current object.\n * @private\n */\n PdfGridRowStyle.prototype.setParent = function (parent) {\n this.parent = parent;\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"backgroundImage\", {\n /**\n * Gets or sets the `backgroundImage` of the 'PdfGridCell'.\n * @private\n */\n get: function () {\n return this.gridRowBackgroundImage;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * sets the `backgroundImage` of the 'PdfGridCell'.\n * @private\n */\n PdfGridRowStyle.prototype.setBackgroundImage = function (value) {\n this.gridRowBackgroundImage = value;\n };\n return PdfGridRowStyle;\n}());\nexport { PdfGridRowStyle };\n/**\n * public Enum for `PdfHorizontalOverflowType`.\n * @private\n */\nexport var PdfHorizontalOverflowType;\n(function (PdfHorizontalOverflowType) {\n /**\n * Specifies the type of `NextPage`.\n * @private\n */\n PdfHorizontalOverflowType[PdfHorizontalOverflowType[\"NextPage\"] = 0] = \"NextPage\";\n /**\n * Specifies the type of `LastPage`.\n * @private\n */\n PdfHorizontalOverflowType[PdfHorizontalOverflowType[\"LastPage\"] = 1] = \"LastPage\";\n})(PdfHorizontalOverflowType || (PdfHorizontalOverflowType = {}));\n","/**\n * ElementLayouter.ts class for EJ2-PDF\n */\nimport { RectangleF } from './../../../drawing/pdf-drawing';\n/**\n * Base class for `elements lay outing`.\n * @private\n */\nvar ElementLayouter = /** @class */ (function () {\n // Constructor\n /**\n * Initializes a new instance of the `ElementLayouter` class.\n * @private\n */\n function ElementLayouter(element) {\n this.layoutElement = element;\n }\n Object.defineProperty(ElementLayouter.prototype, \"elements\", {\n // Properties\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.layoutElement;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the `element`.\n * @private\n */\n ElementLayouter.prototype.getElement = function () {\n return this.layoutElement;\n };\n // Implementation\n /**\n * `Layouts` the element.\n * @private\n */\n ElementLayouter.prototype.layout = function (param) {\n return this.layoutInternal(param);\n };\n ElementLayouter.prototype.Layouter = function (param) {\n return this.layoutInternal(param);\n };\n /**\n * Returns the `next page`.\n * @private\n */\n ElementLayouter.prototype.getNextPage = function (currentPage) {\n var section = currentPage.section;\n var nextPage = section.add();\n return nextPage;\n };\n ElementLayouter.prototype.getPaginateBounds = function (param) {\n if ((param == null)) {\n throw new Error('ArgumentNullException : param');\n }\n var result = param.format.usePaginateBounds ? param.format.paginateBounds\n : new RectangleF(param.bounds.x, 0, param.bounds.width, param.bounds.height);\n return result;\n };\n return ElementLayouter;\n}());\nexport { ElementLayouter };\nvar PdfLayoutFormat = /** @class */ (function () {\n function PdfLayoutFormat(baseFormat) {\n if (typeof baseFormat === 'undefined') {\n //\n }\n else {\n this.break = baseFormat.break;\n this.layout = baseFormat.layout;\n this.paginateBounds = baseFormat.paginateBounds;\n this.boundsSet = baseFormat.usePaginateBounds;\n }\n }\n Object.defineProperty(PdfLayoutFormat.prototype, \"layout\", {\n // Properties\n /**\n * Gets or sets `layout` type of the element.\n * @private\n */\n get: function () {\n // if (typeof this.layoutType === 'undefined' || this.layoutType == null) {\n // this.layoutType = PdfLayoutType.Paginate;\n // }\n return this.layoutType;\n },\n set: function (value) {\n this.layoutType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutFormat.prototype, \"break\", {\n /**\n * Gets or sets `break` type of the element.\n * @private\n */\n get: function () {\n // if (typeof this.breakType === 'undefined' || this.boundsSet == null) {\n // this.breakType = PdfLayoutBreakType.FitPage;\n // }\n return this.breakType;\n },\n set: function (value) {\n this.breakType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutFormat.prototype, \"paginateBounds\", {\n /**\n * Gets or sets the `bounds` on the next page.\n * @private\n */\n get: function () {\n if (typeof this.layoutPaginateBounds === 'undefined' && this.layoutPaginateBounds == null) {\n this.layoutPaginateBounds = new RectangleF(0, 0, 0, 0);\n }\n return this.layoutPaginateBounds;\n },\n set: function (value) {\n this.layoutPaginateBounds = value;\n this.boundsSet = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutFormat.prototype, \"usePaginateBounds\", {\n /**\n * Gets a value indicating whether [`use paginate bounds`].\n * @private\n */\n get: function () {\n // if (typeof this.boundsSet === 'undefined' || this.boundsSet == null) {\n // this.boundsSet = false;\n // }\n return this.boundsSet;\n },\n enumerable: true,\n configurable: true\n });\n return PdfLayoutFormat;\n}());\nexport { PdfLayoutFormat };\nvar PdfLayoutParams = /** @class */ (function () {\n function PdfLayoutParams() {\n }\n Object.defineProperty(PdfLayoutParams.prototype, \"page\", {\n // Properties\n /**\n * Gets or sets the layout `page` for the element.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n set: function (value) {\n this.pdfPage = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutParams.prototype, \"bounds\", {\n /**\n * Gets or sets layout `bounds` for the element.\n * @private\n */\n get: function () {\n return new RectangleF(this.layoutBounds.x, this.layoutBounds.y, this.layoutBounds.width, this.layoutBounds.height);\n },\n set: function (value) {\n this.layoutBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutParams.prototype, \"format\", {\n /**\n * Gets or sets `layout settings` for the element.\n * @private\n */\n get: function () {\n return this.layoutFormat;\n },\n set: function (value) {\n this.layoutFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfLayoutParams;\n}());\nexport { PdfLayoutParams };\nvar PdfLayoutResult = /** @class */ (function () {\n // Constructors\n /**\n * Initializes the new instance of `PdfLayoutResult` class.\n * @private\n */\n function PdfLayoutResult(page, bounds) {\n this.pdfPage = page;\n this.layoutBounds = bounds;\n }\n Object.defineProperty(PdfLayoutResult.prototype, \"page\", {\n // Properties\n /**\n * Gets the last `page` where the element was drawn.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutResult.prototype, \"bounds\", {\n /**\n * Gets the `bounds` of the element on the last page where it was drawn.\n * @private\n */\n get: function () {\n return this.layoutBounds;\n },\n enumerable: true,\n configurable: true\n });\n return PdfLayoutResult;\n}());\nexport { PdfLayoutResult };\n","import { RectangleF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfLayoutParams, PdfLayoutFormat } from './base/element-layouter';\nimport { PdfBorders } from './../../structured-elements/grid/styles/pdf-borders';\n/**\n * `PdfLayoutElement` class represents the base class for all elements that can be layout on the pages.\n * @private\n */\nvar PdfLayoutElement = /** @class */ (function () {\n function PdfLayoutElement() {\n }\n Object.defineProperty(PdfLayoutElement.prototype, \"raiseBeginPageLayout\", {\n // Property\n /**\n * Gets a value indicating whether the `start page layout event` should be raised.\n * @private\n */\n get: function () {\n return (typeof this.beginPageLayout !== 'undefined');\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutElement.prototype, \"raiseEndPageLayout\", {\n /**\n * Gets a value indicating whether the `ending page layout event` should be raised.\n * @private\n */\n get: function () {\n return (typeof this.endPageLayout !== 'undefined');\n },\n enumerable: true,\n configurable: true\n });\n //Event Handlers\n PdfLayoutElement.prototype.onBeginPageLayout = function (args) {\n if (this.beginPageLayout) {\n this.beginPageLayout(this, args);\n }\n };\n PdfLayoutElement.prototype.onEndPageLayout = function (args) {\n if (this.endPageLayout) {\n this.endPageLayout(this, args);\n }\n };\n PdfLayoutElement.prototype.drawHelper = function (arg2, arg3, arg4, arg5) {\n if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && typeof arg4 === 'undefined') {\n return this.drawHelper(arg2, arg3.x, arg3.y);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && typeof arg5 === 'undefined') {\n return this.drawHelper(arg2, arg3, arg4, null);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'undefined') {\n return this.drawHelper(arg2, arg3, null);\n }\n else if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && arg4 instanceof PdfLayoutFormat) {\n return this.drawHelper(arg2, arg3.x, arg3.y, arg4);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && (arg5 instanceof PdfLayoutFormat || arg5 == null)) {\n var width = (arg2.graphics.clientSize.width - arg3);\n var layoutRectangle = new RectangleF(arg3, arg4, width, 0);\n return this.drawHelper(arg2, layoutRectangle, arg5);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'boolean') {\n this.bEmbedFonts = arg4;\n return this.drawHelper(arg2, arg3, null);\n }\n else {\n var param = new PdfLayoutParams();\n var temparg3 = arg3;\n var temparg4 = arg4;\n param.page = arg2;\n param.bounds = temparg3;\n if (param != null) {\n var x = param.bounds.x;\n var y = param.bounds.y;\n if (param.bounds.x === 0) {\n x = PdfBorders.default.right.width / 2;\n }\n if (param.bounds.y === 0) {\n y = PdfBorders.default.top.width / 2;\n }\n var newBound = new RectangleF(x, y, param.bounds.width, param.bounds.height);\n param.bounds = newBound;\n }\n param.format = (temparg4 != null) ? temparg4 : new PdfLayoutFormat();\n var result = this.layout(param);\n return result;\n }\n };\n return PdfLayoutElement;\n}());\nexport { PdfLayoutElement };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * TextLayouter.ts class for EJ2-PDF\n */\nimport { ElementLayouter, PdfLayoutResult } from './element-layouter';\nimport { RectangleF, SizeF } from './../../../drawing/pdf-drawing';\nimport { PdfStringLayouter } from './../../fonts/string-layouter';\nimport { PdfLayoutBreakType } from './../../figures/enum';\nimport { PdfColor } from './../../pdf-color';\nimport { PdfTextWebLink } from './../../../annotations/pdf-text-web-link';\n/**\n * Class that `layouts the text`.\n * @private\n */\nvar TextLayouter = /** @class */ (function (_super) {\n __extends(TextLayouter, _super);\n // Constructors\n /**\n * Initializes a new instance of the `TextLayouter` class.\n * @private\n */\n function TextLayouter(element) {\n return _super.call(this, element) || this;\n }\n Object.defineProperty(TextLayouter.prototype, \"element\", {\n /**\n * Gets the layout `element`.\n * @private\n */\n get: function () {\n return _super.prototype.getElement.call(this);\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Layouts` the element.\n * @private\n */\n TextLayouter.prototype.layoutInternal = function (param) {\n /* tslint:disable */\n this.format = (this.element.stringFormat !== null && typeof this.element.stringFormat !== 'undefined') ? this.element.stringFormat : null;\n var currentPage = param.page;\n var currentBounds = param.bounds;\n var text = this.element.value;\n var result = null;\n var pageResult = new TextPageLayoutResult();\n pageResult.page = currentPage;\n pageResult.remainder = text;\n for (;;) {\n pageResult = this.layoutOnPage(text, currentPage, currentBounds, param);\n result = this.getLayoutResult(pageResult);\n break;\n }\n /* tslint:enable */\n return result;\n };\n /**\n * Raises `PageLayout` event if needed.\n * @private\n */\n TextLayouter.prototype.getLayoutResult = function (pageResult) {\n var result = new PdfTextLayoutResult(pageResult.page, pageResult.bounds, pageResult.remainder, pageResult.lastLineBounds);\n return result;\n };\n /* tslint:disable */\n /**\n * `Layouts` the text on the page.\n * @private\n */\n TextLayouter.prototype.layoutOnPage = function (text, currentPage, currentBounds, param) {\n var result = new TextPageLayoutResult();\n result.remainder = text;\n result.page = currentPage;\n currentBounds = this.checkCorrectBounds(currentPage, currentBounds);\n var layouter = new PdfStringLayouter();\n var stringResult = layouter.layout(text, this.element.font, this.format, currentBounds, currentPage.getClientSize().height, false, new SizeF(0, 0));\n var textFinished = (stringResult.remainder == null);\n var doesntFit = (param.format.break === PdfLayoutBreakType.FitElement);\n var canDraw = !(doesntFit || stringResult.empty);\n // Draw the text.\n var graphics = currentPage.graphics;\n var brush = this.element.getBrush();\n if (this.element instanceof PdfTextWebLink) {\n brush.color = new PdfColor(0, 0, 255);\n }\n graphics.drawStringLayoutResult(stringResult, this.element.font, this.element.pen, brush, currentBounds, this.format);\n var lineInfo = stringResult.lines[stringResult.lineCount - 1];\n result.lastLineBounds = graphics.getLineBounds(stringResult.lineCount - 1, stringResult, this.element.font, currentBounds, this.format);\n result.bounds = this.getTextPageBounds(currentPage, currentBounds, stringResult);\n result.remainder = stringResult.remainder;\n result.end = (textFinished);\n return result;\n };\n /* tslint:enable */\n /**\n * `Corrects current bounds` on the page.\n * @private\n */\n TextLayouter.prototype.checkCorrectBounds = function (currentPage, currentBounds) {\n var pageSize = currentPage.graphics.clientSize;\n currentBounds.height = (currentBounds.height > 0) ? currentBounds.height : pageSize.height - currentBounds.y;\n return currentBounds;\n };\n /**\n * Returns a `rectangle` where the text was printed on the page.\n * @private\n */\n /* tslint:disable */\n TextLayouter.prototype.getTextPageBounds = function (currentPage, currentBounds, stringResult) {\n var textSize = stringResult.actualSize;\n var x = currentBounds.x;\n var y = currentBounds.y;\n var width = (currentBounds.width > 0) ? currentBounds.width : textSize.width;\n var height = textSize.height;\n var shiftedRect = currentPage.graphics.checkCorrectLayoutRectangle(textSize, currentBounds.x, currentBounds.y, this.format);\n // if (currentBounds.width <= 0) {\n x = shiftedRect.x;\n // }\n var verticalShift = currentPage.graphics.getTextVerticalAlignShift(textSize.height, currentBounds.height, this.format);\n y += verticalShift;\n var bounds = new RectangleF(x, y, width, height);\n return bounds;\n };\n return TextLayouter;\n}(ElementLayouter));\nexport { TextLayouter };\nvar TextPageLayoutResult = /** @class */ (function () {\n function TextPageLayoutResult() {\n }\n return TextPageLayoutResult;\n}());\nexport { TextPageLayoutResult };\nvar PdfTextLayoutResult = /** @class */ (function (_super) {\n __extends(PdfTextLayoutResult, _super);\n // Constructors\n /**\n * Initializes the new instance of `PdfTextLayoutResult` class.\n * @private\n */\n function PdfTextLayoutResult(page, bounds, remainder, lastLineBounds) {\n var _this = _super.call(this, page, bounds) || this;\n _this.remainderText = remainder;\n _this.lastLineTextBounds = lastLineBounds;\n return _this;\n }\n Object.defineProperty(PdfTextLayoutResult.prototype, \"remainder\", {\n // Properties\n /**\n * Gets a value that contains the `text` that was not printed.\n * @private\n */\n get: function () {\n return this.remainderText;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextLayoutResult.prototype, \"lastLineBounds\", {\n /**\n * Gets a value that indicates the `bounds` of the last line that was printed on the page.\n * @private\n */\n get: function () {\n return this.lastLineTextBounds;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTextLayoutResult;\n}(PdfLayoutResult));\nexport { PdfTextLayoutResult };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfTextElement.ts class for EJ2-PDF\n */\nimport { PdfLayoutElement } from './../figures/layout-element';\nimport { PdfBrush } from './../brushes/pdf-brush';\nimport { PdfFont } from './../fonts/pdf-font';\nimport { PdfStandardFont } from './../fonts/pdf-standard-font';\nimport { PdfPen } from './../pdf-pen';\nimport { PdfLayoutParams } from './../figures/base/element-layouter';\nimport { TextLayouter } from './base/text-layouter';\nimport { PdfSolidBrush } from './../brushes/pdf-solid-brush';\nimport { PdfColor } from './../pdf-color';\nimport { RectangleF, SizeF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfLayoutFormat } from './base/element-layouter';\nimport { PdfStringLayouter } from './../fonts/string-layouter';\nimport { PdfTextAlignment } from './../enum';\n/**\n * `PdfTextElement` class represents the text area with the ability to span several pages\n * and inherited from the 'PdfLayoutElement' class.\n * @private\n */\nvar PdfTextElement = /** @class */ (function (_super) {\n __extends(PdfTextElement, _super);\n function PdfTextElement(arg1, arg2, arg3, arg4, arg5) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * `Text` data.\n * @private\n */\n _this.content = '';\n /**\n * `Value` of text data.\n * @private\n */\n _this.elementValue = '';\n /**\n * indicate whether the drawText with PointF overload is called or not.\n * @default false\n * @private\n */\n _this.hasPointOverload = false;\n /**\n * indicate whether the PdfGridCell value is `PdfTextElement`\n * @default false\n * @private\n */\n _this.isPdfTextElement = false;\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (typeof arg1 === 'string' && typeof arg2 === 'undefined') {\n _this.content = arg1;\n _this.elementValue = arg1;\n }\n else if (typeof arg1 === 'string' && arg2 instanceof PdfFont && typeof arg3 === 'undefined') {\n _this.content = arg1;\n _this.elementValue = arg1;\n _this.pdfFont = arg2;\n }\n else if (typeof arg1 === 'string' && arg2 instanceof PdfFont && arg3 instanceof PdfPen && typeof arg4 === 'undefined') {\n _this.content = arg1;\n _this.elementValue = arg1;\n _this.pdfFont = arg2;\n _this.pdfPen = arg3;\n }\n else if (typeof arg1 === 'string' && arg2 instanceof PdfFont && arg3 instanceof PdfBrush && typeof arg4 === 'undefined') {\n _this.content = arg1;\n _this.elementValue = arg1;\n _this.pdfFont = arg2;\n _this.pdfBrush = arg3;\n }\n else {\n _this.content = arg1;\n _this.elementValue = arg1;\n _this.pdfFont = arg2;\n _this.pdfPen = arg3;\n _this.pdfBrush = arg4;\n _this.format = arg5;\n }\n return _this;\n }\n Object.defineProperty(PdfTextElement.prototype, \"text\", {\n // Properties\n /**\n * Gets or sets a value indicating the `text` that should be printed.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // create the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * //\n * // set the link text\n * textLink.text = 'Google';\n * //\n * // set the font\n * textLink.font = font;\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.elementValue = value;\n this.content = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"value\", {\n //get value\n /**\n * Gets or sets a `value` indicating the text that should be printed.\n * @private\n */\n get: function () {\n return this.elementValue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"pen\", {\n //get pen\n /**\n * Gets or sets a `PdfPen` that determines the color, width, and style of the text\n * @private\n */\n get: function () {\n return this.pdfPen;\n },\n //Set pen value\n set: function (value) {\n this.pdfPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"brush\", {\n //get brush\n /**\n * Gets or sets the `PdfBrush` that will be used to draw the text with color and texture.\n * @private\n */\n get: function () {\n return this.pdfBrush;\n },\n //Set brush value\n set: function (value) {\n this.pdfBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"font\", {\n //get font\n /**\n * Gets or sets a `PdfFont` that defines the text format.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // create the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * // set the link text\n * textLink.text = 'Google';\n * //\n * // set the font\n * textLink.font = font;\n * //\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.pdfFont;\n },\n set: function (value) {\n this.pdfFont = value;\n if (this.pdfFont instanceof PdfStandardFont && this.content != null) {\n this.elementValue = PdfStandardFont.convert(this.content);\n }\n else {\n this.elementValue = this.content;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"stringFormat\", {\n /**\n * Gets or sets the `PdfStringFormat` that will be used to set the string format\n * @private\n */\n get: function () {\n return this.format;\n },\n set: function (value) {\n this.format = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Gets a `brush` for drawing.\n * @private\n */\n PdfTextElement.prototype.getBrush = function () {\n return (this.pdfBrush == null || typeof this.pdfBrush === 'undefined') ? new PdfSolidBrush(new PdfColor(0, 0, 0)) : this.pdfBrush;\n };\n // /**\n // * `Draws` an element on the Graphics.\n // * @private\n // */\n // public drawInternal(graphics : PdfGraphics) : void {\n // graphics.drawString(this.elementValue, this.pdfFont, this.pdfPen, this.getBrush(), 0, 0, this.stringFormat);\n // }\n /**\n * `Layouts` the element.\n * @private\n */\n PdfTextElement.prototype.layout = function (param) {\n var layouter = new TextLayouter(this);\n var result = layouter.layout(param);\n return result;\n };\n PdfTextElement.prototype.drawText = function (arg2, arg3, arg4, arg5) {\n if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && typeof arg4 === 'undefined') {\n this.hasPointOverload = true;\n return this.drawText(arg2, arg3.x, arg3.y);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && typeof arg5 === 'undefined') {\n this.hasPointOverload = true;\n return this.drawText(arg2, arg3, arg4, null);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'undefined') {\n return this.drawText(arg2, arg3, null);\n }\n else if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && arg4 instanceof PdfLayoutFormat) {\n this.hasPointOverload = true;\n return this.drawText(arg2, arg3.x, arg3.y, arg4);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && (arg5 instanceof PdfLayoutFormat || arg5 == null)) {\n this.hasPointOverload = true;\n var width = (arg2.graphics.clientSize.width - arg3);\n var layoutRectangle = new RectangleF(arg3, arg4, width, 0);\n return this.drawText(arg2, layoutRectangle, arg5);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'boolean') {\n return this.drawText(arg2, arg3, null);\n }\n else {\n var layout = new PdfStringLayouter();\n if (this.hasPointOverload) {\n var stringLayoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF((arg2.graphics.clientSize.width - arg3.x), 0), true, arg2.graphics.clientSize);\n var layoutResult = void 0;\n var param = new PdfLayoutParams();\n var temparg3 = arg3;\n var temparg4 = arg4;\n param.page = arg2;\n var previousPage = arg2;\n param.bounds = temparg3;\n param.format = (temparg4 != null) ? temparg4 : new PdfLayoutFormat();\n if (stringLayoutResult.lines.length > 1) {\n this.text = stringLayoutResult.layoutLines[0].text;\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n var previousPosition = new PointF(param.bounds.x, param.bounds.y);\n layoutResult = this.layout(param);\n var bounds = new RectangleF(0, layoutResult.bounds.y + stringLayoutResult.lineHeight, arg2.graphics.clientSize.width, stringLayoutResult.lineHeight);\n var isPaginate = false;\n for (var i = 1; i < stringLayoutResult.lines.length; i++) {\n param.page = layoutResult.page;\n param.bounds = new RectangleF(new PointF(bounds.x, bounds.y), new SizeF(bounds.width, bounds.height));\n this.text = stringLayoutResult.layoutLines[i].text;\n if (bounds.y + stringLayoutResult.lineHeight > layoutResult.page.graphics.clientSize.height) {\n isPaginate = true;\n param.page = param.page.graphics.getNextPage();\n if (previousPosition.y > (layoutResult.page.graphics.clientSize.height - layoutResult.bounds.height)) {\n bounds = new RectangleF(0, layoutResult.bounds.height, layoutResult.page.graphics.clientSize.width, stringLayoutResult.lineHeight);\n }\n else {\n bounds = new RectangleF(0, 0, layoutResult.page.graphics.clientSize.width, stringLayoutResult.lineHeight);\n }\n param.bounds = bounds;\n }\n layoutResult = this.layout(param);\n if (i !== (stringLayoutResult.lines.length - 1)) {\n bounds = new RectangleF(0, layoutResult.bounds.y + stringLayoutResult.lineHeight, layoutResult.page.graphics.clientSize.width, stringLayoutResult.lineHeight);\n }\n else {\n var lineWidth = this.font.measureString(this.text, this.format).width;\n layoutResult = this.calculateResultBounds(layoutResult, lineWidth, layoutResult.page.graphics.clientSize.width, 0);\n }\n }\n }\n return layoutResult;\n }\n else {\n var lineSize = this.font.measureString(this.text, this.format);\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n layoutResult = this.layout(param);\n layoutResult = this.calculateResultBounds(layoutResult, lineSize.width, layoutResult.page.graphics.clientSize.width, 0);\n }\n return layoutResult;\n }\n }\n else {\n var layoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF(arg3.width, 0), false, arg2.graphics.clientSize);\n var result = void 0;\n var param = new PdfLayoutParams();\n var temparg3 = arg3;\n var temparg4 = arg4;\n param.page = arg2;\n param.bounds = temparg3;\n param.format = (temparg4 != null) ? temparg4 : new PdfLayoutFormat();\n if (layoutResult.lines.length > 1) {\n this.text = layoutResult.layoutLines[0].text;\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n var previousPosition = new PointF(param.bounds.x, param.bounds.y);\n result = this.layout(param);\n var bounds = new RectangleF(temparg3.x, result.bounds.y + layoutResult.lineHeight, temparg3.width, layoutResult.lineHeight);\n var isPaginate = false;\n for (var i = 1; i < layoutResult.lines.length; i++) {\n param.page = result.page;\n param.bounds = new RectangleF(bounds.x, bounds.y, bounds.width, bounds.height);\n this.text = layoutResult.layoutLines[i].text;\n if (bounds.y + layoutResult.lineHeight > result.page.graphics.clientSize.height) {\n isPaginate = true;\n param.page = param.page.graphics.getNextPage();\n if (previousPosition.y > (result.page.graphics.clientSize.height - result.bounds.height)) {\n bounds = new RectangleF(temparg3.x, layoutResult.lineHeight, temparg3.width, layoutResult.lineHeight);\n }\n else {\n bounds = new RectangleF(temparg3.x, 0, temparg3.width, layoutResult.lineHeight);\n }\n param.bounds = bounds;\n }\n result = this.layout(param);\n if (i !== (layoutResult.lines.length - 1)) {\n bounds = new RectangleF(temparg3.x, result.bounds.y + layoutResult.lineHeight, temparg3.width, layoutResult.lineHeight);\n }\n else {\n var lineWidth = this.font.measureString(this.text, this.format).width;\n result = this.calculateResultBounds(result, lineWidth, temparg3.width, temparg3.x);\n }\n }\n }\n return result;\n }\n else {\n var lineSize = this.font.measureString(this.text, this.format);\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n result = this.layout(param);\n result = this.calculateResultBounds(result, lineSize.width, temparg3.width, temparg3.x);\n }\n return result;\n }\n }\n }\n };\n PdfTextElement.prototype.calculateResultBounds = function (result, lineWidth, maximumWidth, startPosition) {\n var shift = 0;\n if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Center) {\n result.bounds.x = startPosition + (maximumWidth - lineWidth) / 2;\n result.bounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Right) {\n result.bounds.x = startPosition + (maximumWidth - lineWidth);\n result.bounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Justify) {\n result.bounds.x = startPosition;\n result.bounds.width = maximumWidth;\n }\n else {\n result.bounds.width = startPosition;\n result.bounds.width = lineWidth;\n }\n return result;\n };\n return PdfTextElement;\n}(PdfLayoutElement));\nexport { PdfTextElement };\n","import { PdfColor } from './../graphics/pdf-color';\nimport { RectangleF, PointF } from './../drawing/pdf-drawing';\nimport { PdfDictionary, SaveAnnotationEventHandler } from './../primitives/pdf-dictionary';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfString } from './../primitives/pdf-string';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfSolidBrush } from './../graphics/brushes/pdf-solid-brush';\nimport { PdfStandardFont } from './../graphics/fonts/pdf-standard-font';\nimport { PdfFontFamily } from './../graphics/fonts/enum';\nimport { PdfStringFormat } from './../graphics/fonts/pdf-string-format';\nimport { PdfTextAlignment } from './../graphics/enum';\n/**\n * `PdfAnnotation` class represents the base class for annotation objects.\n * @private\n */\nvar PdfAnnotation = /** @class */ (function () {\n function PdfAnnotation(arg1) {\n // Fields\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * `Color` of the annotation\n * @private\n */\n this.pdfColor = new PdfColor(255, 255, 255);\n /**\n * `Bounds` of the annotation.\n * @private\n */\n this.rectangle = new RectangleF(0, 0, 0, 0);\n /**\n * Parent `page` of the annotation.\n * @private\n */\n this.pdfPage = null;\n /**\n * `Brush of the text` of the annotation.\n * @default new PdfSolidBrush(new PdfColor(0, 0, 0))\n * @private\n */\n this.textBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n /**\n * `Font of the text` of the annotation.\n * @default new PdfStandardFont(PdfFontFamily.TimesRoman, 10)\n * @private\n */\n this.textFont = new PdfStandardFont(PdfFontFamily.TimesRoman, 10);\n /**\n * `StringFormat of the text` of the annotation.\n * @default new PdfStringFormat(PdfTextAlignment.Left)\n * @private\n */\n this.format = new PdfStringFormat(PdfTextAlignment.Left);\n /**\n * `Text` of the annotation.\n * @private\n */\n this.content = '';\n /**\n * Internal variable to store `dictionary`.\n * @private\n */\n this.pdfDictionary = new PdfDictionary();\n /**\n * To specifying the `Inner color` with which to fill the annotation\n * @private\n */\n this.internalColor = new PdfColor();\n /**\n * `opacity or darkness` of the annotation.\n * @private\n * @default 1.0\n */\n this.darkness = 1.0;\n if (typeof arg1 === 'undefined') {\n this.initialize();\n }\n else {\n this.initialize();\n this.bounds = arg1;\n }\n }\n Object.defineProperty(PdfAnnotation.prototype, \"color\", {\n // Properties\n /**\n * `Color` of the annotation\n * @private\n */\n get: function () {\n return this.pdfColor;\n },\n set: function (value) {\n this.pdfColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"innerColor\", {\n /**\n * To specifying the `Inner color` with which to fill the annotation\n * @private\n */\n get: function () {\n return this.internalColor;\n },\n set: function (value) {\n this.internalColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"bounds\", {\n /**\n * `bounds` of the annotation.\n * @private\n */\n get: function () {\n return this.rectangle;\n },\n set: function (value) {\n this.rectangle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"page\", {\n /**\n * Parent `page` of the annotation.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"font\", {\n /**\n * To specifying the `Font of the text` in the annotation.\n * @private\n */\n get: function () {\n return this.textFont;\n },\n set: function (value) {\n this.textFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"stringFormat\", {\n /**\n * To specifying the `StringFormat of the text` in the annotation.\n * @private\n */\n get: function () {\n return this.format;\n },\n set: function (value) {\n this.format = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"brush\", {\n /**\n * To specifying the `Brush of the text` in the annotation.\n * @private\n */\n get: function () {\n return this.textBrush;\n },\n set: function (value) {\n this.textBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"text\", {\n /**\n * `Text` of the annotation.\n * @private\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.content = value;\n this.dictionary.items.setValue(this.dictionaryProperties.contents, new PdfString(this.content));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"dictionary\", {\n /**\n * Internal variable to store `dictionary`.\n * @hidden\n */\n get: function () {\n return this.pdfDictionary;\n },\n set: function (value) {\n this.pdfDictionary = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Initialize` the annotation event handler and specifies the type of the annotation.\n * @private\n */\n PdfAnnotation.prototype.initialize = function () {\n this.pdfDictionary.annotationBeginSave = new SaveAnnotationEventHandler(this);\n this.pdfDictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.annot));\n };\n /**\n * Sets related `page` of the annotation.\n * @private\n */\n PdfAnnotation.prototype.setPage = function (page) {\n this.pdfPage = page;\n this.pdfDictionary.items.setValue(this.dictionaryProperties.p, new PdfReferenceHolder(this.pdfPage));\n };\n /**\n * Handles the `BeginSave` event of the Dictionary.\n * @private\n */\n PdfAnnotation.prototype.beginSave = function () {\n this.save();\n };\n /**\n * `Saves` an annotation.\n * @private\n */\n /* tslint:disable */\n PdfAnnotation.prototype.save = function () {\n var nativeRectangle = new RectangleF(this.rectangle.x, this.rectangle.y, this.rectangle.width, this.rectangle.height);\n var section = this.pdfPage.section;\n var initialHeight = nativeRectangle.height;\n var tempLoacation = section.pointToNativePdf(this.page, new PointF(nativeRectangle.x, nativeRectangle.y));\n nativeRectangle.x = tempLoacation.x;\n nativeRectangle.width = tempLoacation.x + nativeRectangle.width;\n nativeRectangle.y = (tempLoacation.y - this.page.document.pageSettings.margins.top);\n nativeRectangle.height = nativeRectangle.y - initialHeight;\n this.pdfDictionary.items.setValue(this.dictionaryProperties.rect, PdfArray.fromRectangle(nativeRectangle));\n this.dictionary.items.setValue(this.dictionaryProperties.ca, new PdfNumber(this.darkness));\n };\n Object.defineProperty(PdfAnnotation.prototype, \"element\", {\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.pdfDictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAnnotation;\n}());\nexport { PdfAnnotation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfAnnotation } from './annotation';\nimport { PdfName } from './../primitives/pdf-name';\n/**\n * `PdfLinkAnnotation` class represents the ink annotation class.\n * @private\n */\nvar PdfLinkAnnotation = /** @class */ (function (_super) {\n __extends(PdfLinkAnnotation, _super);\n function PdfLinkAnnotation(rectangle) {\n return _super.call(this, rectangle) || this;\n }\n // Implementation\n /**\n * `Initializes` annotation object.\n * @private\n */\n PdfLinkAnnotation.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n this.dictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.link));\n };\n return PdfLinkAnnotation;\n}(PdfAnnotation));\nexport { PdfLinkAnnotation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfLinkAnnotation } from './link-annotation';\n/**\n * Represents base class for `link annotations` with associated action.\n * @private\n */\nvar PdfActionLinkAnnotation = /** @class */ (function (_super) {\n __extends(PdfActionLinkAnnotation, _super);\n // Constructors\n /**\n * Specifies the constructor for `ActionLinkAnnotation`.\n * @private\n */\n function PdfActionLinkAnnotation(rectangle) {\n var _this = _super.call(this, rectangle) || this;\n // Fields\n /**\n * Internal variable to store annotation's `action`.\n * @default null\n * @private\n */\n _this.pdfAction = null;\n return _this;\n }\n //Public method\n /**\n * get and set the `action`.\n * @hidden\n */\n PdfActionLinkAnnotation.prototype.getSetAction = function (value) {\n if (typeof value === 'undefined') {\n return this.pdfAction;\n }\n else {\n this.pdfAction = value;\n }\n };\n return PdfActionLinkAnnotation;\n}(PdfLinkAnnotation));\nexport { PdfActionLinkAnnotation };\n","import { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfName } from './../primitives/pdf-name';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * `PdfAction` class represents base class for all action types.\n * @private\n */\nvar PdfAction = /** @class */ (function () {\n // Constructors\n /**\n * Initialize instance for `Action` class.\n * @private\n */\n function PdfAction() {\n /**\n * Specifies the Next `action` to perform.\n * @private\n */\n this.action = null;\n /**\n * Specifies the Internal variable to store `dictionary properties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // super(); -> Object()\n this.initialize();\n }\n Object.defineProperty(PdfAction.prototype, \"next\", {\n // Properties\n /**\n * Gets and Sets the `Next` action to perform.\n * @private\n */\n get: function () {\n return this.action;\n },\n set: function (value) {\n // if (this.action !== value) {\n this.action = value;\n this.dictionary.items.setValue(this.dictionaryProperties.next, new PdfReferenceHolder(this.action));\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAction.prototype, \"dictionary\", {\n /**\n * Gets and Sets the instance of PdfDictionary class for `Dictionary`.\n * @private\n */\n get: function () {\n if (typeof this.pdfDictionary === 'undefined') {\n this.pdfDictionary = new PdfDictionary();\n }\n return this.pdfDictionary;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Initialize` the action type.\n * @private\n */\n PdfAction.prototype.initialize = function () {\n this.dictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.action));\n };\n Object.defineProperty(PdfAction.prototype, \"element\", {\n // IPdfWrapper Members\n /**\n * Gets the `Element` as IPdfPrimitive class.\n * @private\n */\n get: function () {\n return this.dictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAction;\n}());\nexport { PdfAction };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfAction } from './action';\nimport { PdfString } from './../primitives/pdf-string';\nimport { PdfName } from './../primitives/pdf-name';\n/**\n * `PdfUriAction` class for initialize the uri related internals.\n * @private\n */\nvar PdfUriAction = /** @class */ (function (_super) {\n __extends(PdfUriAction, _super);\n function PdfUriAction(uri) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Specifies the `uri` string.\n * @default ''.\n * @private\n */\n _this.uniformResourceIdentifier = '';\n return _this;\n }\n Object.defineProperty(PdfUriAction.prototype, \"uri\", {\n // Properties\n /**\n * Gets and Sets the value of `Uri`.\n * @private\n */\n get: function () {\n return this.uniformResourceIdentifier;\n },\n set: function (value) {\n this.uniformResourceIdentifier = value;\n this.dictionary.items.setValue(this.dictionaryProperties.uri, new PdfString(this.uniformResourceIdentifier));\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Initialize` the internals.\n * @private\n */\n PdfUriAction.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n this.dictionary.items.setValue(this.dictionaryProperties.s, new PdfName(this.dictionaryProperties.uri));\n };\n return PdfUriAction;\n}(PdfAction));\nexport { PdfUriAction };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfActionLinkAnnotation } from './action-link-annotation';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfUriAction } from './../actions/uri-action';\n/**\n * `PdfUriAnnotation` class represents the Uri annotation.\n * @private\n */\nvar PdfUriAnnotation = /** @class */ (function (_super) {\n __extends(PdfUriAnnotation, _super);\n function PdfUriAnnotation(rectangle, uri) {\n var _this = _super.call(this, rectangle) || this;\n if (typeof uri !== 'undefined') {\n _this.uri = uri;\n }\n return _this;\n }\n Object.defineProperty(PdfUriAnnotation.prototype, \"uriAction\", {\n /**\n * Get `action` of the annotation.\n * @private\n */\n get: function () {\n if (typeof this.pdfUriAction === 'undefined') {\n this.pdfUriAction = new PdfUriAction();\n }\n return this.pdfUriAction;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfUriAnnotation.prototype, \"uri\", {\n // Properties\n /**\n * Gets or sets the `Uri` address.\n * @private\n */\n get: function () {\n return this.uriAction.uri;\n },\n set: function (value) {\n if (this.uriAction.uri !== value) {\n this.uriAction.uri = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfUriAnnotation.prototype, \"action\", {\n /**\n * Gets or sets the `action`.\n * @private\n */\n get: function () {\n return this.getSetAction();\n },\n set: function (value) {\n this.getSetAction(value);\n this.uriAction.next = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Initializes` annotation object.\n * @private\n */\n PdfUriAnnotation.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n this.dictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.link));\n var tempPrimitive = this.uriAction.element;\n this.dictionary.items.setValue(this.dictionaryProperties.a, this.uriAction.element);\n };\n return PdfUriAnnotation;\n}(PdfActionLinkAnnotation));\nexport { PdfUriAnnotation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfPage } from './../pages/pdf-page';\nimport { PointF, RectangleF, SizeF } from './../drawing/pdf-drawing';\nimport { PdfTextElement } from './../graphics/figures/text-element';\nimport { PdfUriAnnotation } from './uri-annotation';\nimport { PdfStringLayouter } from './../graphics/fonts/string-layouter';\nimport { PdfFontStyle } from './../graphics/fonts/enum';\nimport { PdfTextAlignment } from './../graphics/enum';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\n/**\n * `PdfTextWebLink` class represents the class for text web link annotation.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // create the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * //\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * // set the link text\n * textLink.text = 'Google';\n * // set the font\n * textLink.font = font;\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * //\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfTextWebLink = /** @class */ (function (_super) {\n __extends(PdfTextWebLink, _super);\n // Constructors\n /**\n * Initializes a new instance of the `PdfTextWebLink` class.\n * @private\n */\n function PdfTextWebLink() {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Internal variable to store `Url`.\n * @default ''\n * @private\n */\n _this.uniformResourceLocator = '';\n /**\n * Internal variable to store `Uri Annotation` object.\n * @default null\n * @private\n */\n _this.uriAnnotation = null;\n /**\n * Checks whether the drawTextWebLink method with `PointF` overload is called or not.\n * If it set as true, then the start position of each lines excluding firest line is changed as (0, Y).\n * @private\n * @hidden\n */\n _this.recalculateBounds = false;\n _this.defaultBorder = new PdfArray();\n for (var i = 0; i < 3; i++) {\n _this.defaultBorder.add(new PdfNumber(0));\n }\n return _this;\n }\n Object.defineProperty(PdfTextWebLink.prototype, \"url\", {\n // Properties\n /**\n * Gets or sets the `Uri address`.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // create the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * //\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * //\n * // set the link text\n * textLink.text = 'Google';\n * // set the font\n * textLink.font = font;\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.uniformResourceLocator;\n },\n set: function (value) {\n if (value.length === 0) {\n throw new Error('ArgumentException : Url - string can not be empty');\n }\n this.uniformResourceLocator = value;\n },\n enumerable: true,\n configurable: true\n });\n PdfTextWebLink.prototype.draw = function (arg1, arg2) {\n if (arg1 instanceof PdfPage) {\n var layout = new PdfStringLayouter();\n var previousFontStyle = this.font.style;\n if (arg2 instanceof PointF) {\n this.recalculateBounds = true;\n this.font.style = PdfFontStyle.Underline;\n var layoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF((arg1.graphics.clientSize.width - arg2.x), 0), true, arg1.graphics.clientSize);\n if (layoutResult.lines.length === 1) {\n var textSize = this.font.measureString(this.value);\n var rect = new RectangleF(arg2, textSize);\n rect = this.calculateBounds(rect, textSize.width, arg1.graphics.clientSize.width, arg2.x);\n this.uriAnnotation = new PdfUriAnnotation(rect, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n arg1.annotations.add(this.uriAnnotation);\n var result = this.drawText(arg1, arg2);\n this.font.style = previousFontStyle;\n return result;\n }\n else {\n var result = this.drawMultipleLineWithPoint(layoutResult, arg1, arg2);\n this.font.style = previousFontStyle;\n return result;\n }\n }\n else {\n var layoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF(arg2.width, 0), false, new SizeF(0, 0));\n this.font.style = PdfFontStyle.Underline;\n if (layoutResult.lines.length === 1) {\n var textSize = this.font.measureString(this.value);\n var rect = new RectangleF(new PointF(arg2.x, arg2.y), textSize);\n rect = this.calculateBounds(rect, textSize.width, arg2.width, arg2.x);\n this.uriAnnotation = new PdfUriAnnotation(rect, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n arg1.annotations.add(this.uriAnnotation);\n var returnValue = this.drawText(arg1, arg2);\n this.font.style = previousFontStyle;\n return returnValue;\n }\n else {\n var returnValue = this.drawMultipleLineWithBounds(layoutResult, arg1, arg2);\n this.font.style = previousFontStyle;\n return returnValue;\n }\n }\n }\n else {\n var page = new PdfPage();\n page = arg1.page;\n return this.draw(page, arg2);\n }\n };\n /* tslint:enable */\n //Private methods\n /**\n * Helper method `Draw` a Multiple Line Text Web Link on the Graphics with the specified location.\n * @private\n */\n PdfTextWebLink.prototype.drawMultipleLineWithPoint = function (result, page, location) {\n var layoutResult;\n for (var i = 0; i < result.layoutLines.length; i++) {\n var size = this.font.measureString(result.lines[i].text);\n var bounds = new RectangleF(location, size);\n if (i !== 0) {\n bounds.x = 0;\n }\n this.text = result.lines[i].text;\n if (bounds.y + size.height > page.graphics.clientSize.height) {\n if (i !== 0) {\n page = page.graphics.getNextPage();\n bounds = new RectangleF(0, 0, page.graphics.clientSize.width, size.height);\n location.y = 0;\n }\n else {\n break;\n }\n }\n bounds = this.calculateBounds(bounds, size.width, page.graphics.clientSize.width, bounds.x);\n this.uriAnnotation = new PdfUriAnnotation(bounds, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n page.annotations.add(this.uriAnnotation);\n if (i !== 0) {\n layoutResult = this.drawText(page, new PointF(0, bounds.y));\n }\n else {\n layoutResult = this.drawText(page, bounds.x, bounds.y);\n }\n location.y += size.height;\n }\n return layoutResult;\n };\n /**\n * Helper method `Draw` a Multiple Line Text Web Link on the Graphics with the specified bounds.\n * @private\n */\n PdfTextWebLink.prototype.drawMultipleLineWithBounds = function (result, page, bounds) {\n var layoutResult;\n for (var i = 0; i < result.layoutLines.length; i++) {\n var size = this.font.measureString(result.lines[i].text);\n var internalBounds = new RectangleF(new PointF(bounds.x, bounds.y), size);\n internalBounds = this.calculateBounds(internalBounds, size.width, bounds.width, bounds.x);\n this.text = result.lines[i].text;\n if (bounds.y + size.height > page.graphics.clientSize.height) {\n if (i !== 0) {\n page = page.graphics.getNextPage();\n bounds = new RectangleF(bounds.x, 0, bounds.width, size.height);\n internalBounds.y = 0;\n }\n else {\n break;\n }\n }\n this.uriAnnotation = new PdfUriAnnotation(internalBounds, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n page.annotations.add(this.uriAnnotation);\n layoutResult = this.drawText(page, bounds);\n bounds.y += size.height;\n }\n return layoutResult;\n };\n /* tslint:disable */\n PdfTextWebLink.prototype.calculateBounds = function (currentBounds, lineWidth, maximumWidth, startPosition) {\n var shift = 0;\n if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Center) {\n currentBounds.x = startPosition + (maximumWidth - lineWidth) / 2;\n currentBounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Right) {\n currentBounds.x = startPosition + (maximumWidth - lineWidth);\n currentBounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Justify) {\n currentBounds.x = startPosition;\n currentBounds.width = maximumWidth;\n }\n else {\n currentBounds.width = startPosition;\n currentBounds.width = lineWidth;\n }\n return currentBounds;\n };\n return PdfTextWebLink;\n}(PdfTextElement));\nexport { PdfTextWebLink };\n","import { PdfGrid } from './pdf-grid';\nimport { PdfGridCellStyle } from './styles/style';\nimport { PdfStringLayouter } from './../../graphics/fonts/string-layouter';\nimport { PdfDocument } from './../../document/pdf-document';\nimport { PdfStringFormat } from './../../graphics/fonts/pdf-string-format';\nimport { RectangleF, PointF, SizeF } from './../../drawing/pdf-drawing';\nimport { PdfDashStyle, PdfLineCap } from './../../graphics/enum';\nimport { PdfBorderOverlapStyle } from './../tables/light-tables/enum';\nimport { PdfSolidBrush } from './../../graphics/brushes/pdf-solid-brush';\nimport { PdfColor } from './../../graphics/pdf-color';\nimport { PdfImage } from './../../graphics/images/pdf-image';\nimport { PdfBitmap } from './../../graphics/images/pdf-bitmap';\nimport { PdfTextWebLink } from './../../annotations/pdf-text-web-link';\nimport { PdfLayoutType } from './../../graphics/figures/enum';\nimport { PdfGridLayouter, PdfGridLayoutFormat } from './../../structured-elements/grid/layout/grid-layouter';\nimport { PdfLayoutParams } from '../../../implementation/graphics/figures/base/element-layouter';\n/**\n * `PdfGridCell` class represents the schema of a cell in a 'PdfGrid'.\n */\nvar PdfGridCell = /** @class */ (function () {\n function PdfGridCell(row) {\n /**\n * `Width` of the cell.\n * @default 0\n * @private\n */\n this.cellWidth = 0;\n /**\n * `Height` of the cell.\n * @default 0\n * @private\n */\n this.cellHeight = 0;\n /**\n * `tempval`to stores current width .\n * @default 0\n * @private\n */\n this.tempval = 0;\n this.fontSpilt = false;\n /**\n * Specifies weather the `cell is drawn`.\n * @default true\n * @private\n */\n this.finsh = true;\n /**\n * The `remaining height` of row span.\n * @default 0\n * @private\n */\n this.rowSpanRemainingHeight = 0;\n this.hasRowSpan = false;\n this.hasColSpan = false;\n /**\n * the 'isFinish' is set to page finish\n */\n this.isFinish = true;\n /**\n * The `present' to store the current cell.\n * @default false\n * @private\n */\n this.present = false;\n this.gridRowSpan = 1;\n this.colSpan = 1;\n if (typeof row !== 'undefined') {\n this.gridRow = row;\n }\n }\n Object.defineProperty(PdfGridCell.prototype, \"isCellMergeContinue\", {\n //Properties\n get: function () {\n return this.internalIsCellMergeContinue;\n },\n set: function (value) {\n this.internalIsCellMergeContinue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"isRowMergeContinue\", {\n get: function () {\n return this.internalIsRowMergeContinue;\n },\n set: function (value) {\n this.internalIsRowMergeContinue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"isCellMergeStart\", {\n get: function () {\n return this.internalIsCellMergeStart;\n },\n set: function (value) {\n this.internalIsCellMergeStart = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"isRowMergeStart\", {\n get: function () {\n return this.internalIsRowMergeStart;\n },\n set: function (value) {\n this.internalIsRowMergeStart = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"remainingString\", {\n /**\n * Gets or sets the `remaining string` after the row split between pages.\n * @private\n */\n get: function () {\n return this.remaining;\n },\n set: function (value) {\n this.remaining = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"FinishedDrawingCell\", {\n /**\n * Gets or sets the `FinishedDrawingCell` .\n * @private\n */\n get: function () {\n return this.isFinish;\n },\n set: function (value) {\n this.isFinish = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"stringFormat\", {\n /**\n * Gets or sets the `string format`.\n * @private\n */\n get: function () {\n if (this.format == null) {\n this.format = new PdfStringFormat();\n }\n return this.format;\n },\n set: function (value) {\n this.format = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"row\", {\n /**\n * Gets or sets the parent `row`.\n * @private\n */\n get: function () {\n return this.gridRow;\n },\n set: function (value) {\n this.gridRow = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"value\", {\n /**\n * Gets or sets the `value` of the cell.\n * @private\n */\n get: function () {\n return this.objectValue;\n },\n set: function (value) {\n this.objectValue = value;\n if (this.objectValue instanceof PdfGrid) {\n this.row.grid.isSingleGrid = false;\n var grid = this.objectValue;\n grid.ParentCell = this;\n this.objectValue.isChildGrid = true;\n var rowCount = this.row.grid.rows.count;\n for (var i = 0; i < rowCount; i++) {\n var row = this.row.grid.rows.getRow(i);\n var colCount = row.cells.count;\n for (var j = 0; j < colCount; j++) {\n var cell = row.cells.getCell(j);\n cell.parent = this;\n }\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"rowSpan\", {\n /**\n * Gets or sets a value that indicates the total number of rows that cell `spans` within a PdfGrid.\n * @private\n */\n get: function () {\n return this.gridRowSpan;\n },\n set: function (value) {\n if (value < 1) {\n throw new Error('ArgumentException : Invalid span specified, must be greater than or equal to 1');\n }\n else {\n this.gridRowSpan = value;\n this.row.rowSpanExists = true;\n this.row.grid.hasRowSpanSpan = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"style\", {\n /**\n * Gets or sets the cell `style`.\n * @private\n */\n get: function () {\n if (this.cellStyle == null) {\n this.cellStyle = new PdfGridCellStyle();\n }\n return this.cellStyle;\n },\n set: function (value) {\n this.cellStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"height\", {\n /**\n * Gets the `height` of the PdfGrid cell.[Read-Only].\n * @private\n */\n get: function () {\n if (this.cellHeight === 0) {\n this.cellHeight = this.measureHeight();\n }\n return this.cellHeight;\n },\n set: function (value) {\n this.cellHeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"columnSpan\", {\n /**\n * Gets or sets a value that indicates the total number of columns that cell `spans` within a PdfGrid.\n * @private\n */\n get: function () {\n return this.colSpan;\n },\n set: function (value) {\n if (value < 1) {\n throw Error('Invalid span specified, must be greater than or equal to 1');\n }\n else {\n this.colSpan = value;\n this.row.columnSpanExists = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"width\", {\n /**\n * Gets the `width` of the PdfGrid cell.[Read-Only].\n * @private\n */\n get: function () {\n if (this.cellWidth === 0 || this.row.grid.isComplete) {\n this.cellWidth = this.measureWidth();\n }\n return Math.round(this.cellWidth);\n },\n set: function (value) {\n this.cellWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Calculates the width`.\n * @private\n */\n PdfGridCell.prototype.measureWidth = function () {\n // .. Calculate the cell text width.\n // .....Add border widths, cell spacings and paddings to the width.\n var width = 0;\n var layouter = new PdfStringLayouter();\n if (typeof this.objectValue === 'string') {\n /* tslint:disable */\n var slr = layouter.layout(this.objectValue, this.getTextFont(), this.stringFormat, new SizeF(Number.MAX_VALUE, Number.MAX_VALUE), false, new SizeF(0, 0));\n width += slr.actualSize.width;\n width += (this.style.borders.left.width + this.style.borders.right.width) * 2;\n }\n else if (this.objectValue instanceof PdfGrid) {\n width = this.objectValue.size.width;\n //width += this.objectValue.style.cellSpacing;\n }\n else if (this.objectValue instanceof PdfImage || this.objectValue instanceof PdfBitmap) {\n width += this.objectValue.width;\n }\n else if (this.objectValue instanceof PdfTextWebLink) {\n var webLink = this.objectValue;\n var result = layouter.layout(webLink.text, webLink.font, webLink.stringFormat, new SizeF(0, 0), false, new SizeF(0, 0));\n /* tslint:enable */\n width += result.actualSize.width;\n width += (this.style.borders.left.width + this.style.borders.right.width) * 2;\n }\n if (!(this.objectValue instanceof PdfGrid)) {\n if (this.style.cellPadding != null) {\n width += (this.style.cellPadding.left + this.style.cellPadding.right);\n }\n else {\n width += (this.row.grid.style.cellPadding.left + this.row.grid.style.cellPadding.right);\n }\n }\n else {\n if (this.style.cellPadding != null || typeof this.style.cellPadding !== 'undefined') {\n if (typeof this.style.cellPadding.left !== 'undefined' && this.style.cellPadding.hasLeftPad) {\n width += this.style.cellPadding.left;\n }\n if (typeof this.style.cellPadding.right !== 'undefined' && this.style.cellPadding.hasRightPad) {\n width += this.style.cellPadding.right;\n }\n }\n else {\n if (typeof this.row.grid.style.cellPadding.left !== 'undefined' && this.row.grid.style.cellPadding.hasLeftPad) {\n width += this.row.grid.style.cellPadding.left;\n }\n if (typeof this.row.grid.style.cellPadding.right !== 'undefined' && this.row.grid.style.cellPadding.hasRightPad) {\n width += this.row.grid.style.cellPadding.right;\n }\n }\n }\n width += this.row.grid.style.cellSpacing;\n return width;\n };\n /**\n * Draw the `cell background`.\n * @private\n */\n PdfGridCell.prototype.drawCellBackground = function (graphics, bounds) {\n var backgroundBrush = this.getBackgroundBrush();\n //graphics.isTemplateGraphics = true;\n if (backgroundBrush != null) {\n graphics.save();\n graphics.drawRectangle(backgroundBrush, bounds.x, bounds.y, bounds.width, bounds.height);\n graphics.restore();\n }\n if (this.style.backgroundImage != null) {\n var image = this.getBackgroundImage();\n graphics.drawImage(this.style.backgroundImage, bounds.x, bounds.y, bounds.width, bounds.height);\n }\n };\n /**\n * `Adjusts the text layout area`.\n * @private\n */\n /* tslint:disable */\n PdfGridCell.prototype.adjustContentLayoutArea = function (bounds) {\n //Add Padding value to its Cell Bounds\n var returnBounds = new RectangleF(bounds.x, bounds.y, bounds.width, bounds.height);\n if (!(this.objectValue instanceof PdfGrid)) {\n if (typeof this.style.cellPadding === 'undefined' || this.style.cellPadding == null) {\n returnBounds.x += this.gridRow.grid.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.y += this.gridRow.grid.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.width -= (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n returnBounds.height -= (this.gridRow.grid.style.cellPadding.bottom + this.gridRow.grid.style.cellPadding.top);\n returnBounds.height -= (this.cellStyle.borders.top.width + this.cellStyle.borders.bottom.width);\n }\n else {\n returnBounds.x += this.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.y += this.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.width -= (this.style.cellPadding.right + this.style.cellPadding.left);\n returnBounds.width -= (this.cellStyle.borders.left.width + this.cellStyle.borders.right.width);\n returnBounds.height -= (this.style.cellPadding.bottom + this.style.cellPadding.top);\n returnBounds.height -= (this.cellStyle.borders.top.width + this.cellStyle.borders.bottom.width);\n if (this.rowSpan === 1) {\n returnBounds.width -= (this.style.borders.left.width);\n }\n }\n }\n else {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n if (typeof this.gridRow.grid.style.cellPadding.left !== 'undefined' && this.gridRow.grid.style.cellPadding.hasLeftPad) {\n returnBounds.x += this.gridRow.grid.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.width -= this.gridRow.grid.style.cellPadding.left;\n }\n if (typeof this.gridRow.grid.style.cellPadding.top !== 'undefined' && this.gridRow.grid.style.cellPadding.hasTopPad) {\n returnBounds.y += this.gridRow.grid.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.height -= this.gridRow.grid.style.cellPadding.top;\n }\n if (typeof this.gridRow.grid.style.cellPadding.right !== 'undefined' && this.gridRow.grid.style.cellPadding.hasRightPad) {\n returnBounds.width -= this.gridRow.grid.style.cellPadding.right;\n }\n if (typeof this.gridRow.grid.style.cellPadding.bottom !== 'undefined' && this.gridRow.grid.style.cellPadding.hasBottomPad) {\n returnBounds.height -= this.gridRow.grid.style.cellPadding.bottom;\n }\n }\n else {\n if (typeof this.style.cellPadding.left !== 'undefined' && this.style.cellPadding.hasLeftPad) {\n returnBounds.x += this.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.width -= this.style.cellPadding.left;\n }\n if (typeof this.style.cellPadding.top !== 'undefined' && this.style.cellPadding.hasTopPad) {\n returnBounds.y += this.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.height -= this.style.cellPadding.top;\n }\n if (typeof this.style.cellPadding.right !== 'undefined' && this.style.cellPadding.hasRightPad) {\n returnBounds.width -= this.style.cellPadding.right;\n }\n if (typeof this.style.cellPadding.bottom !== 'undefined' && this.style.cellPadding.hasBottomPad) {\n returnBounds.height -= this.style.cellPadding.bottom;\n }\n }\n returnBounds.width -= (this.cellStyle.borders.left.width + this.cellStyle.borders.right.width);\n returnBounds.height -= (this.cellStyle.borders.top.width + this.cellStyle.borders.bottom.width);\n }\n return returnBounds;\n };\n /**\n * `Draws` the specified graphics.\n * @private\n */\n PdfGridCell.prototype.draw = function (graphics, bounds, cancelSubsequentSpans) {\n var isrowbreak = false;\n /*if (!this.row.grid.isSingleGrid)\n {\n //Check whether the Grid Span to Nextpage\n if ((this.remainingString != null) || (PdfGridLayouter.repeatRowIndex != -1))\n {\n this.DrawParentCells(graphics, bounds, true);\n }\n else if (this.row.grid.rows.count > 1)\n {\n for (let i : number = 0; i < this.row.grid.rows.count; i++)\n {\n if (this.row == this.row.grid.rows.getRow(i))\n {\n if (this.row.grid.rows.getRow(i).rowBreakHeight > 0)\n isrowbreak = true;\n if ((i > 0) && (isrowbreak))\n this.DrawParentCells(graphics, bounds, false);\n }\n }\n }\n } */\n var result = null;\n /*if (cancelSubsequentSpans)\n {\n //..Cancel all subsequent cell spans, if no space exists.\n let currentCellIndex : number = this.row.cells.indexOf(this);\n for (let i : number = currentCellIndex + 1; i <= currentCellIndex + this.colSpan; i++)\n {\n this.row.cells.getCell(i).isCellMergeContinue = false;\n this.row.cells.getCell(i).isRowMergeContinue = false;\n }\n this.colSpan = 1;\n }*/\n //..Skip cells which were already covered by spanmap.\n if (this.internalIsCellMergeContinue || this.internalIsRowMergeContinue) {\n if (this.internalIsCellMergeContinue && this.row.grid.style.allowHorizontalOverflow) {\n if ((this.row.rowOverflowIndex > 0 && (this.row.cells.indexOf(this) != this.row.rowOverflowIndex + 1)) || (this.row.rowOverflowIndex == 0 && this.internalIsCellMergeContinue)) {\n return result;\n }\n }\n else {\n return result;\n }\n }\n //Adjust bounds with Row and Column Spacing\n bounds = this.adjustOuterLayoutArea(bounds, graphics);\n this.drawCellBackground(graphics, bounds);\n var textPen = this.getTextPen();\n var textBrush = this.getTextBrush();\n if (typeof textPen === 'undefined' && typeof textBrush === 'undefined') {\n textBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n }\n var font = this.getTextFont();\n var strFormat = this.getStringFormat();\n var innerLayoutArea = bounds;\n if (innerLayoutArea.height >= graphics.clientSize.height) {\n // If to break row to next page.\n if (this.row.grid.allowRowBreakAcrossPages) {\n innerLayoutArea.height -= innerLayoutArea.y;\n if (typeof this._rowHeight !== 'undefined' && this._rowHeight !== null && innerLayoutArea.height > this._rowHeight) {\n innerLayoutArea.height = this._rowHeight;\n }\n //bounds.height -= bounds.y;\n // if(this.row.grid.isChildGrid)\n // {\n // innerLayoutArea.height -= this.row.grid.ParentCell.row.grid.style.cellPadding.bottom;\n // }\n }\n // if user choose to cut the row whose height is more than page height.\n // else\n // {\n // innerLayoutArea.height = graphics.clientSize.height;\n // bounds.height = graphics.clientSize.height;\n // }\n }\n innerLayoutArea = this.adjustContentLayoutArea(innerLayoutArea);\n if (typeof this.objectValue === 'string' || typeof this.remaining === 'string') {\n var temp = void 0;\n var layoutRectangle = void 0;\n if (innerLayoutArea.height < font.height)\n layoutRectangle = new RectangleF(innerLayoutArea.x, innerLayoutArea.y, innerLayoutArea.width, font.height);\n else\n layoutRectangle = innerLayoutArea;\n if (innerLayoutArea.height < font.height && this.row.grid.isChildGrid && this.row.grid.ParentCell != null) {\n var height = layoutRectangle.height - this.row.grid.ParentCell.row.grid.style.cellPadding.bottom - this.row.grid.style.cellPadding.bottom;\n if (this.row.grid.splitChildRowIndex != -1) {\n this.fontSpilt = true;\n this.row.rowFontSplit = true;\n }\n if (height > 0 && height < font.height)\n layoutRectangle.height = height;\n // else if (height + this.row.grid.style.cellPadding.bottom > 0 && height + this.row.grid.style.cellPadding.bottom < font.height)\n // layoutRectangle.height = height + this.row.grid.style.cellPadding.bottom;\n // else if (bounds.height < font.height)\n // layoutRectangle.height = bounds.height;\n // else if (bounds.height - this.row.grid.ParentCell.row.grid.style.cellPadding.bottom < font.height)\n // layoutRectangle.height = bounds.height - this.row.grid.ParentCell.row.grid.style.cellPadding.bottom; \n }\n if (this.gridRow.grid.style.cellSpacing != 0) {\n layoutRectangle.width -= this.gridRow.grid.style.cellSpacing;\n bounds.width -= this.gridRow.grid.style.cellSpacing;\n }\n if (this.isFinish) {\n // if (this.row.grid.splitChildRowIndex != -1 && !this.row.grid.isChildGrid && typeof this.remaining === 'undefined'){\n // this.remaining = '';\n // graphics.drawString(this.remaining, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n // } else {\n temp = this.remaining === '' ? this.remaining : this.objectValue;\n graphics.drawString(temp, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n if (this.row.grid.splitChildRowIndex != -1 && !this.row.grid.isChildGrid && typeof this.remaining === 'undefined') {\n this.remaining = '';\n //graphics.drawString(this.remaining, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n }\n }\n else {\n if (typeof this.remaining == 'undefined' || this.remaining === null) {\n this.remaining = '';\n }\n if (this.row.repeatFlag) {\n graphics.drawString(this.remaining, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n }\n // else {\n // if(this.row.grid.ParentCell.row.repeatFlag) {\n // graphics.drawString((this.remaining as string), font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat); \n // } else {\n // layoutRectangle.height = this.row.height;\n // graphics.drawString((this.objectValue as string), font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n // bounds.height = this.row.height;\n // }\n // }\n this.isFinish = true;\n //graphics.drawString((this.remaining as string), font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n }\n result = graphics.stringLayoutResult;\n // if(this.row.grid.isChildGrid && this.row.rowBreakHeight > 0 && result !=null) {\n // bounds.height -= this.row.grid.ParentCell.row.grid.style.cellPadding.bottom;\n // }\n }\n else if (this.objectValue instanceof PdfGrid) {\n var childGrid = this.objectValue;\n childGrid.isChildGrid = true;\n childGrid.ParentCell = this;\n var layoutRect = void 0;\n layoutRect = innerLayoutArea;\n if (this.gridRow.grid.style.cellSpacing != 0) {\n bounds.width -= this.gridRow.grid.style.cellSpacing;\n }\n // layoutRect = bounds;\n // if (this.style.cellPadding != null){\n // layoutRect = bounds; \n // } else if((this.row.grid.style.cellPadding != null) && (childGrid.style.cellPadding.bottom === 0.5) && (childGrid.style.cellPadding.top === 0.5)\n // && (childGrid.style.cellPadding.left === 5.76) && (childGrid.style.cellPadding.right === 5.76)\n // && (this.gridRow.grid.style.cellSpacing === 0) && (childGrid.style.cellSpacing === 0)) {\n // layoutRect = innerLayoutArea;\n // }\n // if(this.objectValue.style.cellPadding != null && typeof this.objectValue.style.cellPadding !== 'undefined'){\n // layoutRect = bounds;\n // } \n var layouter = new PdfGridLayouter(childGrid);\n var format = new PdfGridLayoutFormat();\n if (this.row.grid.LayoutFormat != null)\n format = this.row.grid.LayoutFormat;\n else\n format.layout = PdfLayoutType.Paginate;\n var param = new PdfLayoutParams();\n if (graphics.layer != null) {\n // Define layout parameters.\n param.page = graphics.page;\n param.bounds = layoutRect;\n param.format = format;\n //Set the span \n childGrid.setSpan();\n childGrid.checkSpan();\n // Draw the child grid.\n var childGridResult = layouter.Layouter(param);\n //let childGridResult : PdfLayoutResult = layouter.innerLayout(param);\n this.value = childGrid;\n if (this.row.grid.splitChildRowIndex !== -1) {\n this.height = this.row.rowBreakHeightValue;\n }\n if (param.page != childGridResult.page) //&& (isWidthGreaterthanParent != true))\n {\n if (this.row.rowBreakHeightValue !== null && typeof this.row.rowBreakHeightValue !== 'undefined')\n childGridResult.bounds.height = this.row.rowBreakHeightValue;\n if (this.row.rowBreakHeight == 0)\n this.row.NestedGridLayoutResult = childGridResult;\n else\n this.row.rowBreakHeight = this.row.rowBreakHeightValue;\n //bounds.height = this.row.rowBreakHeight;\n //After drawing paginated nested grid, the bounds of the parent grid in start page should be corrected for borders.\n //bounds.height = graphics.clientSize.height - bounds.y;\n }\n }\n }\n else if (this.objectValue instanceof PdfImage || this.objectValue instanceof PdfBitmap) {\n var imageBounds = void 0;\n if (this.objectValue.width <= innerLayoutArea.width) {\n imageBounds = new RectangleF(innerLayoutArea.x, innerLayoutArea.y, this.objectValue.width, innerLayoutArea.height);\n }\n else {\n imageBounds = innerLayoutArea;\n }\n graphics.drawImage(this.objectValue, imageBounds.x, imageBounds.y, imageBounds.width, imageBounds.height);\n }\n else if (this.objectValue instanceof PdfTextWebLink) {\n this.objectValue.draw(graphics.currentPage, innerLayoutArea);\n }\n else if (typeof this.objectValue === 'undefined') {\n this.objectValue = \"\";\n graphics.drawString(this.objectValue, font, textPen, textBrush, innerLayoutArea.x, innerLayoutArea.y, innerLayoutArea.width, innerLayoutArea.height, strFormat);\n if (this.style.cellPadding != null && this.style.cellPadding.bottom == 0 && this.style.cellPadding.left == 0 && this.style.cellPadding.right == 0 && this.style.cellPadding.top == 0) {\n bounds.width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n if (this.gridRow.grid.style.cellSpacing != 0) {\n bounds.width -= this.gridRow.grid.style.cellSpacing;\n }\n }\n if (this.style.borders != null) {\n if (!this.fontSpilt)\n this.drawCellBorders(graphics, bounds);\n else {\n if (this.row.grid.ParentCell.row.grid.splitChildRowIndex != -1) {\n this.row.rowFontSplit = false;\n this.drawCellBorders(graphics, bounds);\n }\n }\n }\n return result;\n };\n /* tslint:enable */\n /**\n * Draws the `cell border` constructed by drawing lines.\n * @private\n */\n PdfGridCell.prototype.drawCellBorders = function (graphics, bounds) {\n if (this.row.grid.style.borderOverlapStyle === PdfBorderOverlapStyle.Inside) {\n bounds.x += this.style.borders.left.width;\n bounds.y += this.style.borders.top.width;\n bounds.width -= this.style.borders.right.width;\n bounds.height -= this.style.borders.bottom.width;\n }\n var p1 = new PointF(bounds.x, bounds.y + bounds.height);\n var p2 = new PointF(bounds.x, bounds.y);\n var pen = this.cellStyle.borders.left;\n if (this.cellStyle.borders.left.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n // SetTransparency(ref graphics, pen);\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n p1 = new PointF(bounds.x + bounds.width, bounds.y);\n p2 = new PointF(bounds.x + bounds.width, bounds.y + bounds.height);\n pen = this.cellStyle.borders.right;\n if ((bounds.x + bounds.width) > (graphics.clientSize.width - (pen.width / 2))) {\n p1 = new PointF(graphics.clientSize.width - (pen.width / 2), bounds.y);\n p2 = new PointF(graphics.clientSize.width - (pen.width / 2), bounds.y + bounds.height);\n }\n if (this.cellStyle.borders.right.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n p1 = new PointF(bounds.x, bounds.y);\n p2 = new PointF(bounds.x + bounds.width, bounds.y);\n pen = this.cellStyle.borders.top;\n if (this.cellStyle.borders.top.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n p1 = new PointF(bounds.x + bounds.width, bounds.y + bounds.height);\n p2 = new PointF(bounds.x, bounds.y + bounds.height);\n pen = this.cellStyle.borders.bottom;\n if ((bounds.y + bounds.height) > (graphics.clientSize.height - (pen.width / 2))) {\n p1 = new PointF((bounds.x + bounds.width), (graphics.clientSize.height - (pen.width / 2)));\n p2 = new PointF(bounds.x, (graphics.clientSize.height - (pen.width / 2)));\n }\n if (this.cellStyle.borders.bottom.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n };\n // private setTransparency(graphics : PdfGraphics, pen : PdfPen) : void {\n // let alpha : number = (pen.color.a / 255) as number;\n // graphics.save();\n // graphics.setTransparency(alpha);\n // }\n /**\n * `Adjusts the outer layout area`.\n * @private\n */\n /* tslint:disable */\n PdfGridCell.prototype.adjustOuterLayoutArea = function (bounds, g) {\n var isHeader = false;\n var cellSpacing = this.row.grid.style.cellSpacing;\n if (cellSpacing > 0) {\n bounds = new RectangleF(bounds.x + cellSpacing, bounds.y + cellSpacing, bounds.width - cellSpacing, bounds.height - cellSpacing);\n }\n var currentColIndex = this.row.cells.indexOf(this);\n if (this.columnSpan > 1 || (this.row.rowOverflowIndex > 0 && (currentColIndex == this.row.rowOverflowIndex + 1) && this.isCellMergeContinue)) {\n var span = this.columnSpan;\n if (span == 1 && this.isCellMergeContinue) {\n for (var j = currentColIndex + 1; j < this.row.grid.columns.count; j++) {\n if (this.row.cells.getCell(j).isCellMergeContinue)\n span++;\n else\n break;\n }\n }\n var totalWidth = 0;\n for (var i = currentColIndex; i < currentColIndex + span; i++) {\n if (this.row.grid.style.allowHorizontalOverflow) {\n var width = void 0;\n var compWidth = this.row.grid.size.width < g.clientSize.width ? this.row.grid.size.width : g.clientSize.width;\n if (this.row.grid.size.width > g.clientSize.width) {\n width = bounds.x + totalWidth + this.row.grid.columns.getColumn(i).width;\n }\n else {\n width = totalWidth + this.row.grid.columns.getColumn(i).width;\n }\n if (width > compWidth) {\n break;\n }\n }\n totalWidth += this.row.grid.columns.getColumn(i).width;\n }\n totalWidth -= this.row.grid.style.cellSpacing;\n bounds.width = totalWidth;\n }\n if (this.rowSpan > 1 || this.row.rowSpanExists) {\n var span = this.rowSpan;\n var currentRowIndex = this.row.grid.rows.rowCollection.indexOf(this.row);\n if (currentRowIndex == -1) {\n currentRowIndex = this.row.grid.headers.indexOf(this.row);\n if (currentRowIndex != -1) {\n isHeader = true;\n }\n }\n // if (span == 1 && this.isCellMergeContinue) {\n // for (let j : number = currentRowIndex + 1; j < this.row.grid.rows.count; j++)\n // {\n // let flag : boolean = (isHeader ? this.row.grid.headers.getHeader(j).cells.getCell(currentColIndex).isCellMergeContinue : this.row.grid.rows.getRow(j).cells.getCell(currentColIndex).isCellMergeContinue);\n // if (flag)\n // span++;\n // else\n // break;\n // }\n // }\n var totalHeight = 0;\n var max = 0;\n for (var i = currentRowIndex; i < currentRowIndex + span; i++) {\n totalHeight += (isHeader ? this.row.grid.headers.getHeader(i).height : this.row.grid.rows.getRow(i).height);\n var row = this.row.grid.rows.getRow(i);\n var rowIndex = this.row.grid.rows.rowCollection.indexOf(row);\n /*if (this.rowSpan > 1)\n {\n for (let k : number = 0; k < this.row.cells.count; k++) {\n let cell : PdfGridCell = this.row.cells.getCell(k);\n if(cell.rowSpan>1)\n {\n let tempHeight : number =0;\n \n for (let j :number = i; j < i +cell.rowSpan; j++)\n {\n if (!this.row.grid.rows.getRow(j).isRowSpanRowHeightSet)\n this.row.grid.rows.getRow(j).isRowHeightSet = false;\n tempHeight += this.row.grid.rows.getRow(j).height;\n if (!this.row.grid.rows.getRow(j).isRowSpanRowHeightSet)\n this.row.grid.rows.getRow(j).isRowHeightSet = true;\n }\n //To check the Row spanned cell height is greater than the total spanned row height.\n if(cell.height>tempHeight)\n {\n if (max < (cell.height - tempHeight))\n {\n max = cell.height - tempHeight;\n if (this.rowSpanRemainingHeight != 0 && max > this.rowSpanRemainingHeight)\n {\n max += this.rowSpanRemainingHeight;\n }\n let index :number = row.cells.indexOf(cell);\n //set the m_rowspanRemainingHeight to last rowspanned row.\n this.row.grid.rows.getRow((rowIndex +cell.rowSpan) - 1).cells.getCell(index).rowSpanRemainingHeight = max;\n this.rowSpanRemainingHeight = this.row.grid.rows.getRow((rowIndex + cell.rowSpan) - 1).cells.getCell(index).rowSpanRemainingHeight;\n }\n }\n }\n }\n }\n if (!this.row.grid.rows.getRow(i).isRowSpanRowHeightSet)\n this.row.grid.rows.getRow(i).isRowHeightSet = true;*/\n }\n var cellIndex = this.row.cells.indexOf(this);\n totalHeight -= this.row.grid.style.cellSpacing;\n // if (this.row.cells.getCell(cellIndex).height > totalHeight && (!this.row.grid.rows.getRow((currentRowIndex + span) - 1).isRowHeightSet)) {\n // this.row.grid.rows.getRow((currentRowIndex + span) - 1).cells.getCell(cellIndex).rowSpanRemainingHeight = this.row.cells.getCell(cellIndex).height - totalHeight;\n // totalHeight = this.row.cells.getCell(cellIndex).height;\n // bounds.height = totalHeight;\n // } else {\n bounds.height = totalHeight;\n // }\n if (!this.row.rowMergeComplete) {\n bounds.height = totalHeight;\n }\n }\n return bounds;\n };\n /* tslint:enable */\n /**\n * Gets the `text font`.\n * @private\n */\n PdfGridCell.prototype.getTextFont = function () {\n if (typeof this.style.font !== 'undefined' && this.style.font != null) {\n return this.style.font;\n }\n else if (typeof this.row.style.font !== 'undefined' && this.row.style.font != null) {\n return this.row.style.font;\n }\n else if (typeof this.row.grid.style.font !== 'undefined' && this.row.grid.style.font != null) {\n return this.row.grid.style.font;\n }\n else {\n return PdfDocument.defaultFont;\n }\n };\n /**\n * Gets the `text brush`.\n * @private\n */\n PdfGridCell.prototype.getTextBrush = function () {\n if (typeof this.style.textBrush !== 'undefined' && this.style.textBrush != null) {\n return this.style.textBrush;\n }\n else if (typeof this.row.style.textBrush !== 'undefined' && this.row.style.textBrush != null) {\n return this.row.style.textBrush;\n }\n else {\n return this.row.grid.style.textBrush;\n }\n };\n /**\n * Gets the `text pen`.\n * @private\n */\n PdfGridCell.prototype.getTextPen = function () {\n if (typeof this.style.textPen !== 'undefined' && this.style.textPen != null) {\n return this.style.textPen;\n }\n else if (typeof this.row.style.textPen !== 'undefined' && this.row.style.textPen != null) {\n return this.row.style.textPen;\n }\n else {\n return this.row.grid.style.textPen;\n }\n };\n /**\n * Gets the `background brush`.\n * @private\n */\n PdfGridCell.prototype.getBackgroundBrush = function () {\n if (typeof this.style.backgroundBrush !== 'undefined' && this.style.backgroundBrush != null) {\n return this.style.backgroundBrush;\n }\n else if (typeof this.row.style.backgroundBrush !== 'undefined' && this.row.style.backgroundBrush != null) {\n return this.row.style.backgroundBrush;\n }\n else {\n return this.row.grid.style.backgroundBrush;\n }\n };\n /**\n * Gets the `background image`.\n * @private\n */\n PdfGridCell.prototype.getBackgroundImage = function () {\n if (typeof this.style.backgroundImage !== 'undefined' && this.style.backgroundImage != null) {\n return this.style.backgroundImage;\n }\n else if (typeof this.row.style.backgroundImage !== 'undefined' && this.row.style.backgroundImage != null) {\n return this.row.style.backgroundImage;\n }\n else {\n return this.row.grid.style.backgroundImage;\n }\n };\n /**\n * Gets the current `StringFormat`.\n * @private\n */\n PdfGridCell.prototype.getStringFormat = function () {\n if (typeof this.style.stringFormat !== 'undefined' && this.style.stringFormat != null) {\n return this.style.stringFormat;\n }\n else {\n return this.stringFormat;\n }\n };\n /**\n * Calculates the `height`.\n * @private\n */\n PdfGridCell.prototype.measureHeight = function () {\n // .. Calculate the cell text height.\n // .....Add border widths, cell spacings and paddings to the height.\n var width = this.calculateWidth();\n // //check whether the Current PdfGridCell has padding\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n width -= (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n //width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n else {\n width -= (this.style.cellPadding.right + this.style.cellPadding.left);\n width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n var height = 0;\n var layouter = new PdfStringLayouter();\n if (typeof this.objectValue === 'string' || typeof this.remaining === 'string') {\n var currentValue = this.objectValue;\n /* tslint:disable */\n if (!this.isFinish)\n currentValue = !(this.remaining === null || this.remaining === '' ||\n typeof this.remaining === 'undefined') ? this.remaining : this.objectValue;\n var slr = null;\n var cellIndex = this.row.cells.indexOf(this);\n if (this.gridRow.grid.style.cellSpacing != 0) {\n width -= this.gridRow.grid.style.cellSpacing * 2;\n }\n if (!this.row.cells.getCell(cellIndex).hasColSpan && !this.row.cells.getCell(cellIndex).hasRowSpan) {\n if (this.gridRow.grid.isChildGrid) {\n if (width < 0) {\n this.tempval = width;\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n this.tempval += (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n }\n else {\n this.tempval += (this.style.cellPadding.right + this.style.cellPadding.left);\n this.tempval += (this.style.borders.left.width + this.style.borders.right.width);\n }\n }\n else {\n this.tempval = width;\n }\n slr = layouter.layout(currentValue, this.getTextFont(), this.stringFormat, new SizeF(this.tempval, 0), false, new SizeF(0, 0));\n height += slr.actualSize.height;\n }\n else {\n slr = layouter.layout(currentValue, this.getTextFont(), this.stringFormat, new SizeF(width, 0), false, new SizeF(0, 0));\n height += slr.actualSize.height;\n }\n }\n /* tslint:enable */\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n else if (this.objectValue instanceof PdfGrid) {\n var cellIndex = this.row.cells.indexOf(this);\n var internalWidth = 0;\n if ((this.style.cellPadding != null || typeof this.style.cellPadding !== 'undefined')) {\n internalWidth = this.calculateWidth();\n if (typeof this.style.cellPadding.left !== 'undefined' && this.style.cellPadding.hasLeftPad) {\n internalWidth -= this.style.cellPadding.left;\n }\n if (typeof this.style.cellPadding.right !== 'undefined' && this.style.cellPadding.hasRightPad) {\n internalWidth -= this.style.cellPadding.right;\n }\n }\n else if ((this.row.grid.style.cellPadding != null || typeof this.row.grid.style.cellPadding !== 'undefined')) {\n internalWidth = this.calculateWidth();\n if (typeof this.row.grid.style.cellPadding.left !== 'undefined' && this.row.grid.style.cellPadding.hasLeftPad) {\n internalWidth -= this.row.grid.style.cellPadding.left;\n }\n if (typeof this.row.grid.style.cellPadding.right !== 'undefined' && this.row.grid.style.cellPadding.hasRightPad) {\n internalWidth -= this.row.grid.style.cellPadding.right;\n }\n }\n else {\n internalWidth = this.calculateWidth();\n }\n this.objectValue.tempWidth = internalWidth;\n if (!this.row.cells.getCell(cellIndex).hasColSpan && !this.row.cells.getCell(cellIndex).hasRowSpan) {\n height = this.objectValue.size.height;\n }\n else {\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n if (this.gridRow.grid.style.cellSpacing !== 0) {\n width -= this.gridRow.grid.style.cellSpacing * 2;\n //height += (this.row.grid.style.cellPadding.top + this.row.grid.style.cellPadding.bottom);\n }\n if (this.style.cellPadding != null || typeof this.style.cellPadding !== 'undefined') {\n if (typeof this.row.grid.style.cellPadding.top !== 'undefined' && this.row.grid.style.cellPadding.hasTopPad) {\n height += this.row.grid.style.cellPadding.top;\n }\n if (this.row.grid.style.cellPadding.hasBottomPad && typeof this.row.grid.style.cellPadding.bottom !== 'undefined') {\n height += this.row.grid.style.cellPadding.bottom;\n }\n }\n height += this.objectValue.style.cellSpacing;\n }\n else if (this.objectValue instanceof PdfImage || this.objectValue instanceof PdfBitmap) {\n height += this.objectValue.height;\n }\n else if (this.objectValue instanceof PdfTextWebLink) {\n var webLink = this.objectValue;\n /* tslint:disable */\n var slr = layouter.layout(webLink.text, webLink.font, webLink.stringFormat, new SizeF(width, 0), false, new SizeF(0, 0));\n /* tslint:enable */\n height += slr.actualSize.height;\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n else if (typeof this.objectValue === 'undefined') {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n width -= (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n }\n else {\n width -= (this.style.cellPadding.right + this.style.cellPadding.left);\n width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n //Add padding top and bottom value to height\n if (!(this.objectValue instanceof PdfGrid)) {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n height += (this.row.grid.style.cellPadding.top + this.row.grid.style.cellPadding.bottom);\n }\n else {\n height += (this.style.cellPadding.top + this.style.cellPadding.bottom);\n }\n }\n else {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n if (typeof this.row.grid.style.cellPadding.top !== 'undefined' && this.row.grid.style.cellPadding.hasTopPad) {\n height += this.row.grid.style.cellPadding.top;\n }\n if (typeof this.row.grid.style.cellPadding.bottom !== 'undefined' && this.row.grid.style.cellPadding.hasBottomPad) {\n height += this.row.grid.style.cellPadding.bottom;\n }\n }\n else {\n if (typeof this.style.cellPadding.top !== 'undefined' && this.style.cellPadding.hasTopPad) {\n height += this.style.cellPadding.top;\n }\n if (typeof this.style.cellPadding.bottom !== 'undefined' && this.style.cellPadding.hasBottomPad) {\n height += this.style.cellPadding.bottom;\n }\n }\n }\n height += this.row.grid.style.cellSpacing;\n return height;\n };\n /**\n * return the calculated `width` of the cell.\n * @private\n */\n PdfGridCell.prototype.calculateWidth = function () {\n var cellIndex = this.row.cells.indexOf(this);\n var rowindex = this.row.grid.rows.rowCollection.indexOf(this.row);\n var columnSpan = this.columnSpan;\n var width = 0;\n if (columnSpan === 1) {\n for (var i = 0; i < columnSpan; i++) {\n width += this.row.grid.columns.getColumn(cellIndex + i).width;\n }\n }\n else if (columnSpan > 1) {\n for (var i = 0; i < columnSpan; i++) {\n width += this.row.grid.columns.getColumn(cellIndex + i).width;\n if ((i + 1) < columnSpan) {\n this.row.cells.getCell(cellIndex + i + 1).hasColSpan = true;\n }\n }\n }\n if (this.parent != null && this.parent.row.width > 0) {\n if ((this.row.grid.isChildGrid) && this.parent != null && (this.row.width > this.parent.row.width)) {\n width = 0;\n for (var j = 0; j < this.parent.columnSpan; j++) {\n width += this.parent.row.grid.columns.getColumn(j).width;\n }\n width = width / this.row.cells.count;\n }\n }\n return width;\n };\n return PdfGridCell;\n}());\nexport { PdfGridCell };\n/**\n * `PdfGridCellCollection` class provides access to an ordered,\n * strongly typed collection of 'PdfGridCell' objects.\n * @private\n */\nvar PdfGridCellCollection = /** @class */ (function () {\n //Constructor\n /**\n * Initializes a new instance of the `PdfGridCellCollection` class with the row.\n * @private\n */\n function PdfGridCellCollection(row) {\n /**\n * @hidden\n * @private\n */\n this.cells = [];\n this.gridRow = row;\n }\n //Properties\n /**\n * Gets the current `cell`.\n * @private\n */\n PdfGridCellCollection.prototype.getCell = function (index) {\n if (index < 0 || index >= this.count) {\n throw new Error('IndexOutOfRangeException');\n }\n return this.cells[index];\n };\n Object.defineProperty(PdfGridCellCollection.prototype, \"count\", {\n /**\n * Gets the cells `count`.[Read-Only].\n * @private\n */\n get: function () {\n return this.cells.length;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridCellCollection.prototype.add = function (cell) {\n if (typeof cell === 'undefined') {\n var tempcell = new PdfGridCell();\n this.add(tempcell);\n return cell;\n }\n else {\n cell.row = this.gridRow;\n this.cells.push(cell);\n }\n };\n /**\n * Returns the `index of` a particular cell in the collection.\n * @private\n */\n PdfGridCellCollection.prototype.indexOf = function (cell) {\n return this.cells.indexOf(cell);\n };\n return PdfGridCellCollection;\n}());\nexport { PdfGridCellCollection };\n","import { PdfGridCell } from './pdf-grid-cell';\nimport { PdfStringFormat } from './../../graphics/fonts/pdf-string-format';\n/**\n * `PdfGridColumn` class represents the schema of a column in a 'PdfGrid'.\n */\nvar PdfGridColumn = /** @class */ (function () {\n //Constructors\n /**\n * Initializes a new instance of the `PdfGridColumn` class with the parent grid.\n * @private\n */\n function PdfGridColumn(grid) {\n /**\n * The `width` of the column.\n * @default 0\n * @private\n */\n this.columnWidth = 0;\n this.grid = grid;\n }\n Object.defineProperty(PdfGridColumn.prototype, \"width\", {\n /**\n * Gets or sets the `width` of the 'PdfGridColumn'.\n * @private\n */\n get: function () {\n return this.columnWidth;\n },\n set: function (value) {\n this.isCustomWidth = true;\n this.columnWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridColumn.prototype, \"format\", {\n /**\n * Gets or sets the information about the text `formatting`.\n * @private\n */\n get: function () {\n if (this.stringFormat == null) {\n this.stringFormat = new PdfStringFormat(); //GetDefaultFormat();\n }\n return this.stringFormat;\n },\n set: function (value) {\n this.stringFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridColumn;\n}());\nexport { PdfGridColumn };\n/**\n * `PdfGridColumnCollection` class provides access to an ordered,\n * strongly typed collection of 'PdfGridColumn' objects.\n * @private\n */\nvar PdfGridColumnCollection = /** @class */ (function () {\n //properties\n //Constructors\n /**\n * Initializes a new instance of the `PdfGridColumnCollection` class with the parent grid.\n * @private\n */\n function PdfGridColumnCollection(grid) {\n /**\n * @hidden\n * @private\n */\n this.internalColumns = [];\n /**\n * @hidden\n * @private\n */\n this.columnWidth = 0;\n this.grid = grid;\n this.internalColumns = [];\n }\n //Iplementation\n /**\n * `Add` a new column to the 'PdfGrid'.\n * @private\n */\n PdfGridColumnCollection.prototype.add = function (count) {\n // public add(column : PdfGridColumn) : void\n // public add(arg : number|PdfGridColumn) : void {\n // if (typeof arg === 'number') {\n for (var i = 0; i < count; i++) {\n this.internalColumns.push(new PdfGridColumn(this.grid));\n for (var index = 0; index < this.grid.rows.count; index++) {\n var row = this.grid.rows.getRow(index);\n var cell = new PdfGridCell();\n cell.value = '';\n row.cells.add(cell);\n }\n }\n // } else {\n // let column : PdfGridColumn = new PdfGridColumn(this.grid);\n // this.columns.push(column);\n // return column;\n // }\n };\n Object.defineProperty(PdfGridColumnCollection.prototype, \"count\", {\n /**\n * Gets the `number of columns` in the 'PdfGrid'.[Read-Only].\n * @private\n */\n get: function () {\n return this.internalColumns.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridColumnCollection.prototype, \"width\", {\n /**\n * Gets the `widths`.\n * @private\n */\n get: function () {\n if (this.columnWidth === 0) {\n this.columnWidth = this.measureColumnsWidth();\n }\n if (this.grid.initialWidth !== 0 && this.columnWidth !== this.grid.initialWidth && !this.grid.style.allowHorizontalOverflow) {\n this.columnWidth = this.grid.initialWidth;\n this.grid.isPageWidth = true;\n }\n return this.columnWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridColumnCollection.prototype, \"columns\", {\n /**\n * Gets the `array of PdfGridColumn`.[Read-Only]\n * @private\n */\n get: function () {\n return this.internalColumns;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the `PdfGridColumn` from the specified index.[Read-Only]\n * @private\n */\n PdfGridColumnCollection.prototype.getColumn = function (index) {\n if (index >= 0 && index <= this.columns.length) {\n return this.columns[index];\n }\n else {\n throw Error('can not get the column from the index: ' + index);\n }\n };\n //Implementation\n /**\n * `Calculates the column widths`.\n * @private\n */\n PdfGridColumnCollection.prototype.measureColumnsWidth = function () {\n var totalWidth = 0;\n this.grid.measureColumnsWidth();\n for (var i = 0, count = this.internalColumns.length; i < count; i++) {\n totalWidth += this.internalColumns[i].width;\n }\n return totalWidth;\n };\n /**\n * Gets the `widths of the columns`.\n * @private\n */\n PdfGridColumnCollection.prototype.getDefaultWidths = function (totalWidth) {\n var widths = [];\n var summ = 0.0;\n var subFactor = this.count;\n for (var i = 0; i < this.count; i++) {\n if (this.grid.isPageWidth && totalWidth >= 0 && !this.internalColumns[i].isCustomWidth) {\n this.internalColumns[i].width = 0;\n }\n else {\n widths[i] = this.internalColumns[i].width;\n if (this.internalColumns[i].width > 0 && this.internalColumns[i].isCustomWidth) {\n totalWidth -= this.internalColumns[i].width;\n subFactor--;\n }\n else {\n widths[i] = 0;\n }\n }\n }\n for (var i = 0; i < this.count; i++) {\n var width = totalWidth / subFactor;\n if (widths[i] <= 0) {\n widths[i] = width;\n }\n }\n return widths;\n };\n return PdfGridColumnCollection;\n}());\nexport { PdfGridColumnCollection };\n","import { PdfGridCell, PdfGridCellCollection } from './pdf-grid-cell';\nimport { PdfGridRowStyle } from './styles/style';\n/**\n * `PdfGridRow` class provides customization of the settings for the particular row.\n */\nvar PdfGridRow = /** @class */ (function () {\n //Constructor\n /**\n * Initializes a new instance of the `PdfGridRow` class with the parent grid.\n * @private\n */\n function PdfGridRow(grid) {\n /**\n * Stores the index of the overflowing row.\n * @private\n */\n this.gridRowOverflowIndex = 0;\n /**\n * The `height` of the row.\n * @private\n */\n this.rowHeight = 0;\n /**\n * The `width` of the row.\n * @private\n */\n this.rowWidth = 0;\n /**\n * The `isFinish` of the row.\n * @private\n */\n this.isrowFinish = false;\n /**\n * Check whether the Row span row height `is set explicitly`.\n * @default false\n * @public\n */\n this.isRowSpanRowHeightSet = false;\n /**\n * The `page count` of the row.\n * @public\n */\n this.noOfPageCount = 0;\n /**\n * Check whether the row height `is set explicitly`.\n * @default false\n * @private\n */\n this.isRowHeightSet = false;\n this.isPageBreakRowSpanApplied = false;\n /**\n * Check weather the row merge `is completed` or not.\n * @default true\n * @private\n */\n this.isRowMergeComplete = true;\n this.repeatFlag = false;\n this.rowFontSplit = false;\n this.isHeaderRow = false;\n this.pdfGrid = grid;\n }\n Object.defineProperty(PdfGridRow.prototype, \"rowSpanExists\", {\n //Properties\n /**\n * Gets or sets a value indicating [`row span exists`].\n * @private\n */\n get: function () {\n return this.bRowSpanExists;\n },\n set: function (value) {\n this.bRowSpanExists = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"cells\", {\n /**\n * Gets the `cells` from the selected row.[Read-Only].\n * @private\n */\n get: function () {\n if (this.gridCells == null) {\n this.gridCells = new PdfGridCellCollection(this);\n }\n return this.gridCells;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"grid\", {\n /**\n * Gets or sets the parent `grid`.\n * @private\n */\n get: function () {\n return this.pdfGrid;\n },\n set: function (value) {\n this.pdfGrid = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"style\", {\n /**\n * Gets or sets the row `style`.\n * @private\n */\n get: function () {\n if (typeof this.rowStyle === 'undefined') {\n this.rowStyle = new PdfGridRowStyle();\n this.rowStyle.setParent(this);\n }\n return this.rowStyle;\n },\n set: function (value) {\n this.rowStyle = value;\n for (var i = 0; i < this.cells.count; i++) {\n this.cells.getCell(i).style.borders = value.border;\n if (typeof value.font !== 'undefined') {\n this.cells.getCell(i).style.font = value.font;\n }\n if (typeof value.backgroundBrush !== 'undefined') {\n this.cells.getCell(i).style.backgroundBrush = value.backgroundBrush;\n }\n if (typeof value.backgroundImage !== 'undefined') {\n this.cells.getCell(i).style.backgroundImage = value.backgroundImage;\n }\n if (typeof value.textBrush !== 'undefined') {\n this.cells.getCell(i).style.textBrush = value.textBrush;\n }\n if (typeof value.textPen !== 'undefined') {\n this.cells.getCell(i).style.textPen = value.textPen;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"rowBreakHeight\", {\n /**\n * `Height` of the row yet to be drawn after split.\n * @private\n */\n get: function () {\n if (typeof this.gridRowBreakHeight === 'undefined') {\n this.gridRowBreakHeight = 0;\n }\n return this.gridRowBreakHeight;\n },\n set: function (value) {\n this.gridRowBreakHeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"rowOverflowIndex\", {\n /**\n * `over flow index` of the row.\n * @private\n */\n get: function () {\n return this.gridRowOverflowIndex;\n },\n set: function (value) {\n this.gridRowOverflowIndex = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"height\", {\n /**\n * Gets or sets the `height` of the row.\n * @private\n */\n get: function () {\n if (!this.isRowHeightSet) {\n this.rowHeight = this.measureHeight();\n }\n return this.rowHeight;\n },\n set: function (value) {\n this.rowHeight = value;\n this.isRowHeightSet = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"width\", {\n /**\n * Gets or sets the `width` of the row.\n * @private\n */\n get: function () {\n if (this.rowWidth === 0 || typeof this.rowWidth === 'undefined') {\n this.rowWidth = this.measureWidth();\n }\n return this.rowWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"NestedGridLayoutResult\", {\n /**\n * Gets or sets the row `Nested grid Layout Result`.\n * @private\n */\n get: function () {\n return this.gridResult;\n },\n set: function (value) {\n this.gridResult = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"columnSpanExists\", {\n /**\n * Gets or sets a value indicating [`column span exists`].\n * @private\n */\n get: function () {\n return this.bColumnSpanExists;\n },\n set: function (value) {\n this.bColumnSpanExists = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"rowMergeComplete\", {\n /**\n * Check whether the Row `has row span or row merge continue`.\n * @private\n */\n get: function () {\n return this.isRowMergeComplete;\n },\n set: function (value) {\n this.isRowMergeComplete = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"rowIndex\", {\n /**\n * Returns `index` of the row.\n * @private\n */\n get: function () {\n return this.grid.rows.rowCollection.indexOf(this);\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Calculates the height`.\n * @private\n */\n PdfGridRow.prototype.measureHeight = function () {\n var rowSpanRemainingHeight = 0;\n var rowHeight;\n var maxHeight = 0;\n if (this.cells.getCell(0).rowSpan > 1) {\n rowHeight = 0;\n }\n else {\n rowHeight = this.cells.getCell(0).height;\n }\n for (var i = 0; i < this.cells.count; i++) {\n var cell = this.cells.getCell(i);\n //get the maximum rowspan remaining height.\n if (cell.rowSpanRemainingHeight > rowSpanRemainingHeight) {\n rowSpanRemainingHeight = cell.rowSpanRemainingHeight;\n }\n //skip the cell if row spanned.\n // if (cell.isRowMergeContinue) {\n // continue;\n // }\n // if (!cell.isRowMergeContinue) {\n // this.rowMergeComplete = false;\n // }\n this.rowMergeComplete = false;\n if (cell.rowSpan > 1) {\n var cellIn = i;\n var rowin = this.isHeaderRow ? this.grid.headers.indexOf(this) : this.grid.rows.rowCollection.indexOf(this);\n for (var j = 0; j < cell.rowSpan; j++) {\n if ((j + 1) < cell.rowSpan) {\n (this.isHeaderRow ? this.grid.headers.getHeader(rowin + j + 1) : this.grid.rows.getRow(rowin + j + 1)).cells.getCell(cellIn).hasRowSpan = true;\n }\n }\n if (maxHeight < cell.height) {\n maxHeight = cell.height;\n }\n continue;\n }\n rowHeight = Math.max(rowHeight, cell.height);\n }\n if (maxHeight > rowHeight) {\n rowHeight = maxHeight;\n }\n if (rowHeight === 0) {\n rowHeight = maxHeight;\n }\n else if (rowSpanRemainingHeight > 0) {\n rowHeight += rowSpanRemainingHeight;\n }\n return rowHeight;\n };\n PdfGridRow.prototype.measureWidth = function () {\n var rowWid = 0;\n for (var i = 0; i < this.grid.columns.count; i++) {\n var column = this.grid.columns.getColumn(i);\n rowWid += column.width;\n }\n return rowWid;\n };\n return PdfGridRow;\n}());\nexport { PdfGridRow };\n/**\n * `PdfGridRowCollection` class provides access to an ordered, strongly typed collection of 'PdfGridRow' objects.\n * @private\n */\nvar PdfGridRowCollection = /** @class */ (function () {\n // Constructor\n /**\n * Initializes a new instance of the `PdfGridRowCollection` class with the parent grid.\n * @private\n */\n function PdfGridRowCollection(grid) {\n this.rows = [];\n this.grid = grid;\n }\n Object.defineProperty(PdfGridRowCollection.prototype, \"count\", {\n //Properties\n /**\n * Gets the number of header in the `PdfGrid`.[Read-Only].\n * @private\n */\n get: function () {\n return this.rows.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRowCollection.prototype, \"rowCollection\", {\n //Implementation\n /**\n * Return the row collection of the `grid`.\n * @private\n */\n get: function () {\n return this.rows;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowCollection.prototype.addRow = function (arg) {\n if (typeof arg === 'undefined') {\n var temprow = new PdfGridRow(this.grid);\n this.addRow(temprow);\n return temprow;\n }\n else {\n arg.style.setBackgroundBrush(this.grid.style.backgroundBrush);\n arg.style.setFont(this.grid.style.font);\n arg.style.setTextBrush(this.grid.style.textBrush);\n arg.style.setTextPen(this.grid.style.textPen);\n if (arg.cells.count === 0) {\n for (var i = 0; i < this.grid.columns.count; i++) {\n arg.cells.add(new PdfGridCell());\n }\n }\n this.rows.push(arg);\n }\n };\n /**\n * Return the row by index.\n * @private\n */\n PdfGridRowCollection.prototype.getRow = function (index) {\n return this.rows[index];\n };\n return PdfGridRowCollection;\n}());\nexport { PdfGridRowCollection };\n/**\n * `PdfGridHeaderCollection` class provides customization of the settings for the header.\n * @private\n */\nvar PdfGridHeaderCollection = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfGridHeaderCollection` class with the parent grid.\n * @private\n */\n function PdfGridHeaderCollection(grid) {\n /**\n * The array to store the `rows` of the grid header.\n * @private\n */\n this.rows = [];\n this.grid = grid;\n this.rows = [];\n }\n //Properties\n /**\n * Gets a 'PdfGridRow' object that represents the `header` row in a 'PdfGridHeaderCollection' control.[Read-Only].\n * @private\n */\n PdfGridHeaderCollection.prototype.getHeader = function (index) {\n // if (index < 0 || index >= Count) {\n // throw new IndexOutOfRangeException();\n // }\n return (this.rows[index]);\n };\n Object.defineProperty(PdfGridHeaderCollection.prototype, \"count\", {\n /**\n * Gets the `number of header` in the 'PdfGrid'.[Read-Only]\n * @private\n */\n get: function () {\n return this.rows.length;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridHeaderCollection.prototype.add = function (arg) {\n if (typeof arg === 'number') {\n var row = void 0;\n for (var i = 0; i < arg; i++) {\n row = new PdfGridRow(this.grid);\n row.isHeaderRow = true;\n for (var j = 0; j < this.grid.columns.count; j++) {\n row.cells.add(new PdfGridCell());\n }\n this.rows.push(row);\n }\n return this.rows;\n }\n else {\n this.rows.push(arg);\n }\n };\n PdfGridHeaderCollection.prototype.indexOf = function (row) {\n return this.rows.indexOf(row);\n };\n return PdfGridHeaderCollection;\n}());\nexport { PdfGridHeaderCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfGrid.ts class for EJ2-PDF\n */\nimport { PdfGridColumnCollection } from './pdf-grid-column';\nimport { PdfGridRowCollection, PdfGridHeaderCollection } from './pdf-grid-row';\nimport { RectangleF, SizeF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfLayoutElement } from './../../graphics/figures/layout-element';\nimport { PdfLayoutFormat } from './../../graphics/figures/base/element-layouter';\nimport { PdfGridStyle } from './styles/style';\nimport { PdfBorders } from './styles/pdf-borders';\nimport { PdfGridLayouter } from './../../structured-elements/grid/layout/grid-layouter';\nvar PdfGrid = /** @class */ (function (_super) {\n __extends(PdfGrid, _super);\n //constructor\n /**\n * Initialize a new instance for `PdfGrid` class.\n * @private\n */\n function PdfGrid() {\n var _this = _super.call(this) || this;\n /**\n * @hidden\n * @private\n */\n _this.gridSize = new SizeF(0, 0);\n /**\n * Check the child grid is ' split or not'\n */\n _this.isGridSplit = false;\n /**\n * @hidden\n * @private\n */\n _this.isRearranged = false;\n /**\n * @hidden\n * @private\n */\n _this.pageBounds = new RectangleF();\n /**\n * @hidden\n * @private\n */\n _this.listOfNavigatePages = [];\n /**\n * @hidden\n * @private\n */\n _this.parentCellIndex = 0;\n _this.tempWidth = 0;\n /**\n * @hidden\n * @private\n */\n _this.breakRow = true;\n _this.splitChildRowIndex = -1;\n /**\n * The event raised on `begin cell lay outing`.\n * @event\n * @private\n */\n //public beginPageLayout : Function;\n /**\n * The event raised on `end cell lay outing`.\n * @event\n * @private\n */\n //public endPageLayout : Function;\n _this.hasRowSpanSpan = false;\n _this.hasColumnSpan = false;\n _this.isSingleGrid = true;\n return _this;\n }\n Object.defineProperty(PdfGrid.prototype, \"raiseBeginCellDraw\", {\n //Properties\n /**\n * Gets a value indicating whether the `start cell layout event` should be raised.\n * @private\n */\n get: function () {\n return (typeof this.beginCellDraw !== 'undefined' && typeof this.beginCellDraw !== null);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"raiseEndCellDraw\", {\n /**\n * Gets a value indicating whether the `end cell layout event` should be raised.\n * @private\n */\n get: function () {\n return (typeof this.endCellDraw !== 'undefined' && typeof this.endCellDraw !== null);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"repeatHeader\", {\n /**\n * Gets or sets a value indicating whether to `repeat header`.\n * @private\n */\n get: function () {\n if (this.bRepeatHeader == null || typeof this.bRepeatHeader === 'undefined') {\n this.bRepeatHeader = false;\n }\n return this.bRepeatHeader;\n },\n set: function (value) {\n this.bRepeatHeader = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"allowRowBreakAcrossPages\", {\n /**\n * Gets or sets a value indicating whether to split or cut rows that `overflow a page`.\n * @private\n */\n get: function () {\n return this.breakRow;\n },\n set: function (value) {\n this.breakRow = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"columns\", {\n /**\n * Gets the `column` collection of the PdfGrid.[Read-Only]\n * @private\n */\n get: function () {\n if (this.gridColumns == null || typeof this.gridColumns === 'undefined') {\n this.gridColumns = new PdfGridColumnCollection(this);\n }\n return this.gridColumns;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"rows\", {\n /**\n * Gets the `row` collection from the PdfGrid.[Read-Only]\n * @private\n */\n get: function () {\n if (this.gridRows == null) {\n this.gridRows = new PdfGridRowCollection(this);\n }\n return this.gridRows;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"headers\", {\n /**\n * Gets the `headers` collection from the PdfGrid.[Read-Only]\n * @private\n */\n get: function () {\n if (this.gridHeaders == null || typeof this.gridHeaders === 'undefined') {\n this.gridHeaders = new PdfGridHeaderCollection(this);\n }\n return this.gridHeaders;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"initialWidth\", {\n /**\n * Indicating `initial width` of the page.\n * @private\n */\n get: function () {\n return this.gridInitialWidth;\n },\n set: function (value) {\n this.gridInitialWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"style\", {\n /**\n * Gets or sets the `grid style`.\n * @private\n */\n get: function () {\n if (this.gridStyle == null) {\n this.gridStyle = new PdfGridStyle();\n }\n return this.gridStyle;\n },\n set: function (value) {\n if (this.gridStyle == null) {\n this.gridStyle = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"isPageWidth\", {\n /**\n * Gets a value indicating whether the grid column width is considered to be `page width`.\n * @private\n */\n get: function () {\n return this.ispageWidth;\n },\n set: function (value) {\n this.ispageWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"isChildGrid\", {\n /**\n * Gets or set if grid `is nested grid`.\n * @private\n */\n get: function () {\n return this.ischildGrid;\n },\n set: function (value) {\n this.ischildGrid = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"size\", {\n /**\n * Gets or set if grid ' is split or not'\n * @public\n */\n // public get isGridSplit() : boolean {\n // return this.isgridSplit;\n // }\n // public set isGridSplit(value : boolean) {\n // this.isgridSplit = value;\n // }public get isGridSplit() : boolean {\n // return this.isgridSplit;\n // }\n // public set isGridSplit(value : boolean) {\n // this.isgridSplit = value;\n // }\n /**\n * Gets the `size`.\n * @private\n */\n get: function () {\n if ((this.gridSize.width === 0 || typeof this.gridSize.width === 'undefined') && this.gridSize.height === 0) {\n this.gridSize = this.measure();\n }\n return this.gridSize;\n // } else {\n // return this.gridSize;\n // }\n },\n set: function (value) {\n this.gridSize = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"ParentCell\", {\n get: function () {\n return this.parentCell;\n },\n set: function (value) {\n this.parentCell = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"LayoutFormat\", {\n get: function () {\n return this.layoutFormat;\n },\n enumerable: true,\n configurable: true\n });\n PdfGrid.prototype.draw = function (arg1, arg2, arg3, arg4) {\n if (arg2 instanceof PointF && typeof arg2.width === 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(arg1, arg2.x, arg2.y);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'undefined') {\n return this.drawHelper(arg1, arg2, arg3, null);\n }\n else if (arg2 instanceof RectangleF && typeof arg2.width !== 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(arg1, arg2, null);\n }\n else if (arg2 instanceof PointF && typeof arg2.width === 'undefined' && arg3 instanceof PdfLayoutFormat) {\n return this.drawHelper(arg1, arg2.x, arg2.y, arg3);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'number' && (arg4 instanceof PdfLayoutFormat || arg4 == null)) {\n var width = (arg1.graphics.clientSize.width - arg2);\n var layoutRectangle = new RectangleF(arg2, arg3, width, 0);\n return this.drawHelper(arg1, layoutRectangle, arg4);\n }\n else if (arg2 instanceof RectangleF && typeof arg2.width !== 'undefined' && typeof arg3 === 'boolean') {\n return this.drawHelper(arg1, arg2, null);\n }\n else {\n return this.drawHelper(arg1, arg2, arg3);\n }\n };\n /**\n * `measures` this instance.\n * @private\n */\n PdfGrid.prototype.measure = function () {\n var height = 0;\n var width = this.columns.width;\n for (var i = 0; i < this.headers.count; i++) {\n var row = this.headers.getHeader(i);\n height += row.height;\n }\n for (var i = 0; i < this.rows.count; i++) {\n var row = this.rows.getRow(i);\n height += row.height;\n }\n return new SizeF(width, height);\n };\n PdfGrid.prototype.onBeginCellDraw = function (args) {\n if (this.raiseBeginCellDraw) {\n this.beginCellDraw(this, args);\n }\n };\n PdfGrid.prototype.onEndCellDraw = function (args) {\n if (this.raiseEndCellDraw) {\n this.endCellDraw(this, args);\n }\n };\n /**\n * `Layouts` the specified graphics.\n * @private\n */\n PdfGrid.prototype.layout = function (param) {\n var width = param.bounds.width;\n var height = param.bounds.height;\n var hasChanged = false;\n if (typeof param.bounds.width === 'undefined' || param.bounds.width === 0) {\n width = param.page.getClientSize().width - param.bounds.x;\n hasChanged = true;\n }\n if (typeof param.bounds.height === 'undefined' || param.bounds.height === 0) {\n height = param.page.getClientSize().height - param.bounds.y;\n hasChanged = true;\n }\n if (hasChanged) {\n param.bounds = new RectangleF(param.bounds.x, param.bounds.y, width, height);\n }\n if (this.rows.count !== 0) {\n var currentRow = this.rows.getRow(0).cells.getCell(0).style;\n if (currentRow.borders != null && ((currentRow.borders.left != null && currentRow.borders.left.width !== 1) ||\n (currentRow.borders.top != null && currentRow.borders.top.width !== 1))) {\n var x = currentRow.borders.left.width / 2;\n var y = currentRow.borders.top.width / 2;\n if (param.bounds.x === PdfBorders.default.right.width / 2 && param.bounds.y === PdfBorders.default.right.width / 2) {\n var newBound = new RectangleF(x, y, this.gridSize.width, this.gridSize.height);\n param.bounds = newBound;\n }\n }\n }\n this.setSpan();\n this.checkSpan();\n this.layoutFormat = param.format;\n this.gridLocation = param.bounds;\n var layouter = new PdfGridLayouter(this);\n var result = (layouter.Layouter(param));\n return result;\n };\n PdfGrid.prototype.setSpan = function () {\n var colSpan = 1;\n var rowSpan = 1;\n var currentCellIndex = 0;\n var currentRowIndex = 0;\n var maxSpan = 0;\n var rowCount = this.headers.count;\n for (var i = 0; i < rowCount; i++) {\n var row = this.headers.getHeader(i);\n maxSpan = 0;\n var colCount = row.cells.count;\n for (var j = 0; j < colCount; j++) {\n var cell = row.cells.getCell(j);\n maxSpan = Math.max(maxSpan, cell.rowSpan);\n //Skip setting span map for already coverted rows/columns.\n if (!cell.isCellMergeContinue && !cell.isRowMergeContinue && (cell.columnSpan > 1 || cell.rowSpan > 1)) {\n if (cell.columnSpan + j > row.cells.count) {\n throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n }\n if (cell.rowSpan + i > this.headers.count) {\n throw new Error('Invalid span specified at Header ' + j.toString() + ' column ' + i.toString());\n }\n // if (this.rows.count !== 0 && cell.rowSpan + i > this.rows.count) {\n // throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n // }\n if (cell.columnSpan > 1 && cell.rowSpan > 1) {\n colSpan = cell.columnSpan;\n rowSpan = cell.rowSpan;\n currentCellIndex = j;\n currentRowIndex = i;\n cell.isCellMergeStart = true;\n cell.isRowMergeStart = true;\n //Set Column merges for first row\n while (colSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n row.cells.getCell(currentCellIndex).isRowMergeContinue = true;\n row.cells.getCell(currentCellIndex).rowSpan = rowSpan;\n colSpan--;\n }\n currentCellIndex = j;\n colSpan = cell.columnSpan;\n //Set Row Merges and column merges foreach subsequent rows.\n while (rowSpan > 1) {\n currentRowIndex++;\n this.headers.getHeader(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n this.headers.getHeader(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n rowSpan--;\n while (colSpan > 1) {\n currentCellIndex++;\n this.headers.getHeader(currentRowIndex).cells.getCell(currentCellIndex).isCellMergeContinue = true;\n this.headers.getHeader(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n colSpan--;\n }\n colSpan = cell.columnSpan;\n currentCellIndex = j;\n }\n }\n else if (cell.columnSpan > 1 && cell.rowSpan === 1) {\n colSpan = cell.columnSpan;\n currentCellIndex = j;\n cell.isCellMergeStart = true;\n //Set Column merges.\n while (colSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n colSpan--;\n }\n }\n else if (cell.columnSpan === 1 && cell.rowSpan > 1) {\n rowSpan = cell.rowSpan;\n currentRowIndex = i;\n //Set row Merges.\n while (rowSpan > 1) {\n currentRowIndex++;\n this.headers.getHeader(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n rowSpan--;\n }\n }\n }\n }\n row.maximumRowSpan = maxSpan;\n }\n };\n PdfGrid.prototype.checkSpan = function () {\n var cellcolSpan;\n var cellrowSpan = 1;\n var cellmaxSpan = 0;\n var currentCellIndex;\n var currentRowIndex = 0;\n cellcolSpan = cellrowSpan = 1;\n currentCellIndex = currentRowIndex = 0;\n if (this.hasRowSpanSpan || this.hasColumnSpan) {\n var rowCount = this.rows.count;\n for (var i = 0; i < rowCount; i++) {\n var row = this.rows.getRow(i);\n cellmaxSpan = 0;\n var colCount = row.cells.count;\n for (var j = 0; j < colCount; j++) {\n var cell = row.cells.getCell(j);\n cellmaxSpan = Math.max(cellmaxSpan, cell.rowSpan);\n //Skip setting span map for already coverted rows/columns.\n if (!cell.isCellMergeContinue && !cell.isRowMergeContinue\n && (cell.columnSpan > 1 || cell.rowSpan > 1)) {\n if (cell.columnSpan + j > row.cells.count) {\n throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n }\n if (cell.rowSpan + i > this.rows.count) {\n throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n }\n if (cell.columnSpan > 1 && cell.rowSpan > 1) {\n cellcolSpan = cell.columnSpan;\n cellrowSpan = cell.rowSpan;\n currentCellIndex = j;\n currentRowIndex = i;\n cell.isCellMergeStart = true;\n cell.isRowMergeStart = true;\n //Set Column merges for first row\n while (cellcolSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n row.cells.getCell(currentCellIndex).isRowMergeContinue = true;\n cellcolSpan--;\n }\n currentCellIndex = j;\n cellcolSpan = cell.columnSpan;\n //Set Row Merges and column merges foreach subsequent rows.\n while (cellrowSpan > 1) {\n currentRowIndex++;\n this.rows.getRow(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n this.rows.getRow(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n cellrowSpan--;\n while (cellcolSpan > 1) {\n currentCellIndex++;\n this.rows.getRow(currentRowIndex).cells.getCell(currentCellIndex).isCellMergeContinue = true;\n this.rows.getRow(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n cellcolSpan--;\n }\n cellcolSpan = cell.columnSpan;\n currentCellIndex = j;\n }\n }\n else if (cell.columnSpan > 1 && cell.rowSpan === 1) {\n cellcolSpan = cell.columnSpan;\n currentCellIndex = j;\n cell.isCellMergeStart = true;\n //Set Column merges.\n while (cellcolSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n cellcolSpan--;\n }\n }\n else if (cell.columnSpan === 1 && cell.rowSpan > 1) {\n cellrowSpan = cell.rowSpan;\n currentRowIndex = i;\n //Set row Merges.\n while (cellrowSpan > 1) {\n currentRowIndex++;\n this.rows.getRow(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n cellrowSpan--;\n }\n }\n }\n }\n row.maximumRowSpan = cellmaxSpan;\n }\n }\n };\n PdfGrid.prototype.measureColumnsWidth = function (bounds) {\n if (typeof bounds !== 'undefined') {\n this.isPageWidth = false;\n var widths = this.columns.getDefaultWidths(bounds.width - bounds.x);\n //let tempWidth : number = this.columns.getColumn(0).width;\n for (var i = 0, count = this.columns.count; i < count; i++) {\n // if (this.columns.getColumn(i).width < 0)\n // this.columns.getColumn(i).columnWidth = widths[i];\n // else if (this.columns.getColumn(i).width > 0 && !this.columns.getColumn(i).isCustomWidth && widths[i]>0 && this.isComplete)\n this.columns.getColumn(i).columnWidth = widths[i];\n this.tempWidth = widths[i];\n }\n if (this.ParentCell != null && this.style.allowHorizontalOverflow == false && this.ParentCell.row.grid.style.allowHorizontalOverflow == false) {\n var padding = 0;\n var columnWidth = 0;\n var columnCount = this.columns.count;\n var childGridColumnWidth = 0;\n if (this.ParentCell.style.cellPadding != null || typeof this.ParentCell.style.cellPadding !== 'undefined') {\n if (typeof this.ParentCell.style.cellPadding.left != 'undefined' && this.ParentCell.style.cellPadding.hasLeftPad) {\n padding += this.ParentCell.style.cellPadding.left;\n }\n if (typeof this.ParentCell.style.cellPadding.right != 'undefined' && this.ParentCell.style.cellPadding.hasRightPad) {\n padding += this.ParentCell.style.cellPadding.right;\n }\n }\n for (var i = 0; i < this.ParentCell.columnSpan; i++) {\n columnWidth += this.ParentCell.row.grid.columns.getColumn(this.parentCellIndex + i).width;\n }\n for (var j = 0; j < this.columns.count; j++) {\n if (this.gridColumns.getColumn(j).width > 0 && this.gridColumns.getColumn(j).isCustomWidth) {\n columnWidth -= this.gridColumns.getColumn(j).width;\n columnCount--;\n }\n }\n if ((this.ParentCell.row.grid.style.cellPadding != null || typeof this.ParentCell.row.grid.style.cellPadding != 'undefined')) {\n if (typeof this.ParentCell.row.grid.style.cellPadding.top != 'undefined' && this.ParentCell.row.grid.style.cellPadding.hasTopPad) {\n padding += this.ParentCell.row.grid.style.cellPadding.top;\n }\n if (typeof this.ParentCell.row.grid.style.cellPadding.bottom != 'undefined' && this.ParentCell.row.grid.style.cellPadding.hasBottomPad) {\n padding += this.ParentCell.row.grid.style.cellPadding.bottom;\n }\n }\n if (this.ParentCell.row.grid.style.cellSpacing != 0) {\n columnWidth -= this.ParentCell.row.grid.style.cellSpacing * 2;\n }\n if (columnWidth > padding) {\n childGridColumnWidth = (columnWidth - padding) / columnCount;\n this.tempWidth = childGridColumnWidth;\n if (this.ParentCell != null) {\n for (var j = 0; j < this.columns.count; j++) {\n if (!this.columns.getColumn(j).isCustomWidth)\n this.columns.getColumn(j).columnWidth = childGridColumnWidth;\n }\n }\n }\n }\n // if (this.ParentCell != null && this.ParentCell.row.width > 0)\n // {\n // if (this.isChildGrid && this.gridSize.width > this.ParentCell.row.width)\n // {\n // widths = this.columns.getDefaultWidths(bounds.width);\n // for (let i : number = 0; i < this.columns.count; i++)\n // {\n // this.columns.getColumn(i).width = widths[i];\n // }\n // }\n // }\n }\n else {\n var widths = [this.columns.count];\n for (var n = 0; n < this.columns.count; n++) {\n widths[n] = 0;\n }\n var cellWidth = 0;\n var cellWidths = 0;\n if ((typeof this.isChildGrid === 'undefined' && typeof this.gridLocation !== 'undefined') || (this.isChildGrid === null && typeof this.gridLocation !== 'undefined')) {\n this.initialWidth = this.gridLocation.width;\n }\n if (this.headers.count > 0) {\n var colCount_1 = this.headers.getHeader(0).cells.count;\n var rowCount = this.headers.count;\n for (var i = 0; i < colCount_1; i++) {\n cellWidth = 0;\n for (var j = 0; j < rowCount; j++) {\n var rowWidth = Math.min(this.initialWidth, this.headers.getHeader(j).cells.getCell(i).width);\n cellWidth = Math.max(cellWidth, rowWidth);\n }\n widths[i] = cellWidth;\n }\n }\n // else {\n // let colCount : number = this.rows.getRow(0).cells.count;\n // let rowCount : number = this.rows.count;\n // for (let i : number = 0; i < colCount; i++) {\n // cellWidth = 0;\n // for (let j : number = 0; j < rowCount; j++) {\n // let rowWidth : number = Math.min(this.initialWidth, this.rows.getRow(j).cells.getCell(i).width);\n // cellWidth = Math.max(cellWidth, rowWidth);\n // }\n // widths[i] = cellWidth;\n // }\n // }\n cellWidth = 0;\n for (var i = 0, colCount_2 = this.columns.count; i < colCount_2; i++) {\n for (var j = 0, rowCount = this.rows.count; j < rowCount; j++) {\n if ((this.rows.getRow(j).cells.getCell(i).columnSpan == 1 && !this.rows.getRow(j).cells.getCell(i).isCellMergeContinue) || this.rows.getRow(j).cells.getCell(i).value != null) {\n if (this.rows.getRow(j).cells.getCell(i).value != null && !this.rows.getRow(j).grid.style.allowHorizontalOverflow) {\n var value = this.rows.getRow(j).grid.style.cellPadding.right +\n this.rows.getRow(j).grid.style.cellPadding.left\n + this.rows.getRow(j).cells.getCell(i).style.borders.left.width / 2;\n // if (this.initialWidth != 0 )\n // (this.rows.getRow(j).cells.getCell(i).value as PdfGrid).initialWidth = this.initialWidth - value;\n }\n var rowWidth = 0;\n rowWidth = this.initialWidth > 0.0 ? Math.min(this.initialWidth, this.rows.getRow(j).cells.getCell(i).width) : this.rows.getRow(j).cells.getCell(i).width;\n // let internalWidth : number = this.rows.getRow(j).cells.getCell(i).width;\n // internalWidth += this.rows.getRow(j).cells.getCell(i).style.borders.left.width;\n // internalWidth += this.rows.getRow(j).cells.getCell(i).style.borders.right.width;\n // let internalHeight : number = this.rows.getRow(j).cells.getCell(i).height;\n // internalHeight += (this.rows.getRow(j).cells.getCell(i).style.borders.top.width);\n // internalHeight += (this.rows.getRow(j).cells.getCell(i).style.borders.bottom.width);\n // let isCorrectWidth : boolean = (internalWidth + this.gridLocation.x) > this.currentGraphics.clientSize.width;\n // let isCorrectHeight : boolean = (internalHeight + this.gridLocation.y) > this.currentGraphics.clientSize.height;\n // if (isCorrectWidth || isCorrectHeight) {\n // throw Error('Image size exceeds client size of the page. Can not insert this image');\n // }\n // rowWidth = Math.min(this.initialWidth, this.rows.getRow(j).cells.getCell(i).width);\n cellWidth = Math.max(widths[i], Math.max(cellWidth, rowWidth));\n cellWidth = Math.max(this.columns.getColumn(i).width, cellWidth);\n }\n }\n if (this.rows.count != 0)\n widths[i] = cellWidth;\n cellWidth = 0;\n }\n for (var i = 0, RowCount = this.rows.count; i < RowCount; i++) {\n for (var j = 0, ColCount = this.columns.count; j < ColCount; j++) {\n if (this.rows.getRow(i).cells.getCell(j).columnSpan > 1) {\n var total = widths[j];\n for (var k = 1; k < this.rows.getRow(i).cells.getCell(j).columnSpan; k++) {\n total += widths[j + k];\n }\n // if (this.rows.getRow(i).cells.getCell(j).width > total)\n // {\n // let extendedWidth : number = this.rows.getRow(i).cells.getCell(j).width - total;\n // extendedWidth = extendedWidth / this.rows.getRow(i).cells.getCell(j).columnSpan;\n // for (let k : number = j; k < j + this.rows.getRow(i).cells.getCell(j).columnSpan; k++)\n // widths[k] += extendedWidth;\n // }\n }\n }\n }\n // if (this.isChildGrid && this.initialWidth != 0)\n // {\n // widths = this.columns.getDefaultWidths(this.initialWidth);\n // }\n for (var i = 0, count = this.columns.count; i < count; i++) {\n if (this.columns.getColumn(i).width <= 0)\n this.columns.getColumn(i).columnWidth = widths[i];\n else if (this.columns.getColumn(i).width > 0 && !this.columns.getColumn(i).isCustomWidth)\n this.columns.getColumn(i).columnWidth = widths[i];\n }\n var padding = 0;\n var colWidth = 0;\n var colCount = this.columns.count;\n var childGridColWidth = 0;\n colWidth = this.tempWidth;\n for (var j = 0; j < this.columns.count; j++) {\n if (this.gridColumns.getColumn(j).width > 0 && this.gridColumns.getColumn(j).isCustomWidth) {\n colWidth -= this.gridColumns.getColumn(j).width;\n colCount--;\n }\n }\n // if (this.style.cellSpacing != 0){\n // colWidth -= this.style.cellSpacing * 2;\n // }\n if (colWidth > 0) {\n if (this.ParentCell.row.grid.style.cellSpacing != 0) {\n colWidth -= this.ParentCell.row.grid.style.cellSpacing * 2;\n }\n }\n if (colWidth > padding) {\n childGridColWidth = (colWidth) / colCount;\n if (this.ParentCell != null) {\n for (var j = 0; j < this.columns.count; j++) {\n if (!this.columns.getColumn(j).isCustomWidth)\n this.columns.getColumn(j).columnWidth = childGridColWidth;\n }\n }\n }\n }\n };\n return PdfGrid;\n}(PdfLayoutElement));\nexport { PdfGrid };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfGrid } from '../pdf-grid';\nimport { PdfStringFormat } from './../../../graphics/fonts/pdf-string-format';\nimport { SizeF, RectangleF, PointF } from './../../../drawing/pdf-drawing';\nimport { PdfBorders } from '../styles/pdf-borders';\nimport { PdfLayoutType, PdfLayoutBreakType } from './../../../graphics/figures/enum';\nimport { PdfLayoutResult, PdfLayoutFormat, ElementLayouter } from './../../../graphics/figures/base/element-layouter';\nimport { PdfHorizontalOverflowType } from '../styles/style';\nimport { TemporaryDictionary } from './../../../collections/object-object-pair/dictionary';\nimport { PdfStringLayouter } from './../../../graphics/fonts/string-layouter';\nimport { PdfDocument } from './../../../document/pdf-document';\n/**\n * Class `lay outing the text`.\n *\n */\nvar PdfGridLayouter = /** @class */ (function (_super) {\n __extends(PdfGridLayouter, _super);\n //constructor\n /**\n * Initialize a new instance for `PdfGrid` class.\n * @private\n */\n function PdfGridLayouter(baseFormat) {\n var _this = _super.call(this, baseFormat) || this;\n /**\n * @hidden\n * @private\n */\n _this.gridInitialWidth = 0;\n /**\n * @hidden\n * @private\n */\n _this.gridSize = new SizeF(0, 0);\n _this.parentCellIndex = 0;\n _this.tempWidth = 0;\n _this.childheight = 0;\n /**\n * Check weather it is `child grid or not`.\n * @private\n */\n _this.isChildGrid = false;\n /**\n * @hidden\n * @private\n */\n _this.hasRowSpanSpan = false;\n /**\n * @hidden\n * @private\n */\n _this.isRearranged = false;\n /**\n * @hidden\n * @private\n */\n _this.pageBounds = new RectangleF();\n /**\n * @hidden\n * @private\n */\n _this.listOfNavigatePages = [];\n /**\n * @hidden\n * @private\n */\n _this.flag = true;\n /**\n * @hidden\n * @private\n */\n _this.columnRanges = [];\n /**\n * @hidden\n * @private\n */\n _this.currentLocation = new PointF(0, 0);\n /**\n * @hidden\n * @private\n */\n _this.breakRow = true;\n _this.slr = null;\n _this.remainderText = null;\n _this.isPaginate = false;\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n _this.isOverloadWithPosition = false;\n return _this;\n }\n Object.defineProperty(PdfGridLayouter.prototype, \"Grid\", {\n //Properties\n get: function () {\n return this.elements;\n },\n enumerable: true,\n configurable: true\n });\n // Constructors\n /**\n * Initializes a new instance of the `StringLayouter` class.\n * @private\n */\n //Public methods\n /**\n * `Layouts` the text.\n * @private\n */\n /**\n * `Layouts` the specified graphics.\n * @private\n */\n /**\n * `Layouts` the specified graphics.\n * @private\n */\n /*public layout(graphics : PdfLayoutParams) : PdfLayoutResult\n public layout(graphics : PdfGraphics, bounds : RectangleF) : void\n public layout(graphics : PdfGraphics, bounds : PointF) : void\n public layout(graphics ?: PdfGraphics | PdfLayoutParams, bounds ?: PointF | RectangleF) : void | PdfLayoutResult {\n if (graphics instanceof PdfGraphics) {\n if (bounds instanceof PointF) {\n if (bounds.x === 0) {\n bounds.x = PdfBorders.default.right.width / 2;\n }\n if (bounds.y === 0) {\n bounds.y = PdfBorders.default.top.width / 2;\n }\n let boundaries : RectangleF = new RectangleF(bounds, new SizeF(0, 0));\n this.layout(graphics, boundaries);\n } else {\n let width : number = graphics.clientSize.width;\n let parameter : PdfLayoutParams = new PdfLayoutParams();\n parameter.bounds = bounds;\n this.currentGraphics = graphics;\n if (graphics.layer != null) {\n let index : number = 0;\n if (this.currentGraphics.page instanceof PdfPage) {\n index = (this.currentGraphics.page as PdfPage).section.indexOf(this.currentGraphics.page as PdfPage);\n } else {\n index = (this.currentGraphics.page as PdfPageBase).defaultLayerIndex;\n }\n } else {\n this.layoutInternal(parameter);\n }\n }\n }\n }*/\n /**\n * Gets the `format`.\n * @private\n */\n PdfGridLayouter.prototype.getFormat = function (format) {\n var f = format;\n return f;\n };\n /**\n * `Layouts` the element.\n * @private\n */\n PdfGridLayouter.prototype.layoutInternal = function (param) {\n var format = this.getFormat(param.format);\n this.gridLayoutFormat = this.getFormat(param.format);\n this.currentPage = param.page;\n if (this.currentPage !== null) {\n var pageHeight = this.currentPage.getClientSize().height;\n var pageWidth = this.currentPage.getClientSize().width;\n this.currentPageBounds = this.currentPage.getClientSize();\n }\n else {\n throw Error('Can not set page as null');\n //this.currentPageBounds = this.currentGraphics.clientSize;\n }\n this.currentGraphics = this.currentPage.graphics;\n //this.currentGraphics = (this.currentPage != null ) ? this.currentPage.graphics : this.currentGraphics;\n // if (this.currentGraphics.layer !== null) {\n // let index : number = 0;\n // if (this.currentGraphics.page instanceof PdfPage) {\n // index = (this.currentGraphics.page as PdfPage).section.indexOf(this.currentGraphics.page as PdfPage);\n // } else {\n // index = (this.currentGraphics.page as PdfPageBase).defaultLayerIndex;\n // }\n // this.listOfNavigatePages.push(index);\n // }\n var index = 0;\n index = this.currentGraphics.page.section.indexOf(this.currentGraphics.page);\n this.listOfNavigatePages.push(index);\n if (format != null && format.break === PdfLayoutBreakType.FitColumnsToPage) {\n this.currentBounds = new RectangleF(new PointF(param.bounds.x, param.bounds.y), new SizeF(this.Grid.columns.width, this.currentGraphics.clientSize.height));\n }\n else {\n this.currentBounds = new RectangleF(new PointF(param.bounds.x, param.bounds.y), this.currentGraphics.clientSize);\n }\n //this.currentBounds = new RectangleF(new PointF(param.bounds.x, param.bounds.y), this.currentGraphics.clientSize);\n if (this.Grid.rows.count !== 0) {\n this.currentBounds.width = (param.bounds.width > 0) ? param.bounds.width :\n (this.currentBounds.width - this.Grid.rows.getRow(0).cells.getCell(0).style.borders.left.width / 2);\n }\n else if (this.Grid.headers.count !== 0) {\n // this.currentBounds.width = (param.bounds.width > 0) ? param.bounds.width : (this.currentBounds.width -\n // this.Grid.headers.getHeader(0).cells.getCell(0).style.borders.left.width / 2);\n this.currentBounds.width = param.bounds.width;\n }\n else {\n throw Error('Please add row or header into grid');\n }\n this.startLocation = new PointF(param.bounds.x, param.bounds.y);\n // if (this.Grid.style.allowHorizontalOverflow && this.currentBounds.width > this.currentGraphics.clientSize.width) {\n // this.currentBounds.width = this.currentGraphics.clientSize.width;\n // this.currentBounds.width -= this.currentBounds.x;\n // }\n // if (this.Grid.isChildGrid) {\n // this.childheight = param.bounds.height;\n // }\n // if (param.format !== null && param.format.usePaginateBounds) {\n // if (param.format.paginateBounds.height > 0) {\n // this.currentBounds.height = param.format.paginateBounds.height;\n // }\n //} else \n if (param.bounds.height > 0 && !this.Grid.isChildGrid) {\n this.currentBounds.height = param.bounds.height;\n }\n if (!this.Grid.isChildGrid) {\n this.hType = this.Grid.style.horizontalOverflowType;\n }\n if (!this.Grid.style.allowHorizontalOverflow) {\n this.columnRanges = [];\n if (typeof this.Grid.isChildGrid !== 'undefined' && typeof this.Grid.isChildGrid) {\n this.Grid.measureColumnsWidth(this.currentBounds);\n }\n else {\n this.Grid.measureColumnsWidth(new RectangleF(this.currentBounds.x, this.currentBounds.y, this.currentBounds.x + this.currentBounds.width, this.currentBounds.height));\n }\n this.columnRanges.push([0, this.Grid.columns.count - 1]);\n }\n else {\n this.Grid.measureColumnsWidth();\n this.determineColumnDrawRanges();\n }\n if (this.Grid.hasRowSpanSpan) {\n for (var i = 0; i < this.Grid.rows.count; i++) {\n if (this.Grid.rows.getRow(i).height !== -1 && !this.Grid.rows.getRow(i).isRowHeightSet) {\n this.Grid.rows.getRow(i).isRowHeightSet = true;\n }\n }\n }\n var result = this.layoutOnPage(param);\n return result;\n };\n // /* tslint:enable */\n /**\n * `Determines the column draw ranges`.\n * @private\n */\n PdfGridLayouter.prototype.determineColumnDrawRanges = function () {\n var startColumn = 0;\n var endColumn = 0;\n var cellWidths = 0;\n var availableWidth = this.currentGraphics.clientSize.width - this.currentBounds.x;\n for (var i = 0; i < this.Grid.columns.count; i++) {\n cellWidths += this.Grid.columns.getColumn(i).width;\n if (cellWidths >= availableWidth) {\n var subWidths = 0;\n for (var j = startColumn; j <= i; j++) {\n subWidths += this.Grid.columns.getColumn(j).width;\n if (subWidths > availableWidth) {\n break;\n }\n endColumn = j;\n }\n this.columnRanges.push([startColumn, endColumn]);\n startColumn = endColumn + 1;\n endColumn = startColumn;\n cellWidths = (endColumn <= i) ? this.Grid.columns.getColumn(i).width : 0;\n }\n }\n // if (startColumn !== this.columns.Count) {\n this.columnRanges.push([startColumn, this.Grid.columns.count - 1]);\n // }\n };\n /**\n * `Layouts the on page`.\n * @private\n */\n PdfGridLayouter.prototype.layoutOnPage = function (param) {\n /* tslint:disable */\n this.pageBounds.x = param.bounds.x;\n this.pageBounds.y = param.bounds.y;\n this.pageBounds.height = param.bounds.height;\n var format = this.getFormat(param.format);\n var endArgs = null;\n var result = null;\n var layoutedPages = new TemporaryDictionary();\n var startPage = param.page;\n var isParentCell = false;\n var cellBounds = [];\n for (var index = 0; index < this.columnRanges.length; index++) {\n var range = this.columnRanges[index];\n this.cellStartIndex = range[0];\n this.cellEndIndex = range[1];\n var returnObject = this.raiseBeforePageLayout(this.currentPage, this.currentBounds, this.currentRowIndex);\n this.currentBounds = returnObject.currentBounds;\n this.currentRowIndex = returnObject.currentRowIndex;\n // if (returnObject.returnValue) {\n // result = new PdfGridLayoutResult(this.currentPage, this.currentBounds);\n // break;\n // }\n //Draw Headers.\n var drawHeader = void 0;\n for (var i_1 = 0; i_1 < this.Grid.headers.count; i_1++) {\n var row = this.Grid.headers.getHeader(i_1);\n var headerHeight = this.currentBounds.y;\n this.isHeader = true;\n if (startPage != this.currentPage) {\n for (var k = this.cellStartIndex; k <= this.cellEndIndex; k++) {\n if (row.cells.getCell(k).isCellMergeContinue) {\n row.cells.getCell(k).isCellMergeContinue = false;\n row.cells.getCell(k).value = \"\";\n }\n }\n }\n // RowLayoutResult\n var headerResult = this.drawRow(row);\n if (headerHeight === this.currentBounds.y) {\n drawHeader = true;\n if (PdfGridLayouter.repeatRowIndex === -1) {\n PdfGridLayouter.repeatRowIndex = i_1;\n }\n }\n else {\n drawHeader = false;\n }\n if (!headerResult.isFinish && startPage !== null\n && format.layout !== PdfLayoutType.OnePage && drawHeader) {\n this.startLocation.x = this.currentBounds.x;\n this.currentPage = this.getNextPageformat(format);\n this.startLocation.y = this.currentBounds.y;\n if (typeof format.paginateBounds !== 'undefined' && format.paginateBounds.x === 0 && format.paginateBounds.y === 0 && format.paginateBounds.width === 0 && format.paginateBounds.height === 0)\n this.currentBounds.x += this.startLocation.x;\n this.drawRow(row);\n }\n this.isHeader = false;\n }\n var i = 0;\n var length_1 = this.Grid.rows.count;\n var repeatRow = void 0;\n var startingHeight = 0;\n var flag = true;\n //Here is to draw parent Grid and Cells\n cellBounds = [];\n //Draw row by row with the specified cell range.\n for (var j = 0; j < this.Grid.rows.count; j++) {\n var row = this.Grid.rows.getRow(j);\n i++;\n this.currentRowIndex = i - 1;\n var originalHeight = this.currentBounds.y;\n startPage = this.currentPage;\n PdfGridLayouter.repeatRowIndex = -1;\n if (flag && row.grid.isChildGrid) {\n startingHeight = originalHeight;\n flag = false;\n }\n var rowResult = null;\n ///rowResult = this.drawRow(row);\n /*if(!row.isrowFinish) {\n if(!row.grid.isgridSplit){\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n row.isrowDraw = true;\n } else {\n if(!row.isrowDraw){\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n row.isrowDraw = true;\n row.grid.isgridSplit = false;\n } else {\n rowResult = null;\n break;\n }\n }\n }\n else {\n //row.isrowFinish = false;\n //rowResult = this.drawRow(row);\n rowResult = null;\n break;\n \n } */\n if (this.Grid.splitChildRowIndex == -1) {\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n }\n else {\n if (row.grid.ParentCell.row.grid.isGridSplit && this.Grid.splitChildRowIndex <= row.rowIndex) {\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n }\n else if (row.isrowFinish) {\n continue;\n }\n else {\n break;\n }\n }\n //rowResult = this.drawRow(row);\n cellBounds.push(rowResult.bounds.width);\n /*if (row.isRowBreaksNextPage)\n {\n let x : number = 0;\n for (let l : number = 0; l < row.cells.count; l++)\n {\n let isNestedRowBreak : boolean = false;\n if (row.height == row.cells.getCell(l).height)\n {\n let n : number;\n let grid : PdfGrid = row.cells.getCell(l).value as PdfGrid;\n for (let m : number = grid.rows.count; 0 < m; m--)\n {\n if ((grid.rows.getRow(m - 1).rowBreakHeight > 0))\n {\n isNestedRowBreak = true;\n break;\n }\n if (grid.rows.getRow(m - 1).isRowBreaksNextPage)\n {\n row.rowBreakHeightValue = grid.rows.getRow(m - 1).rowBreakHeightValue;\n break;\n }\n row.rowBreakHeightValue += grid.rows.getRow(m - 1).height;\n }\n }\n if (isNestedRowBreak)\n break;\n }\n for (let j : number = 0; j < row.cells.count; j++)\n {\n\n if (row.height > row.cells.getCell(j).height)\n {\n row.cells.getCell(j).value = \" \";\n let rect : RectangleF ;\n let page : PdfPage = this.getNextPage(this.currentPage);\n let section : PdfSection = this.currentPage.section;\n let index : number = section.indexOf(page);\n for (let k : number = 0; k < (section.count - 1) - index; k++)\n {\n rect = new RectangleF(x, 0, row.grid.columns.getColumn(j).width, page.getClientSize().height);\n PdfGridLayouter.repeatRowIndex = -1;\n row.cells.getCell(j).draw(page.graphics, rect, false);\n page = this.getNextPage(page);\n }\n rect = new RectangleF(x, 0, row.grid.columns.getColumn(j).width, row.rowBreakHeightValue);\n\n row.cells.getCell(j).draw(page.graphics, rect, false);\n }\n x += row.grid.columns.getColumn(j).width;\n }\n }*/\n //if height remains same, it is understood that row is not drawn in the page\n if (originalHeight === this.currentBounds.y) {\n repeatRow = true;\n PdfGridLayouter.repeatRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n }\n else {\n repeatRow = false;\n PdfGridLayouter.repeatRowIndex = -1;\n }\n while (!rowResult.isFinish && startPage != null) {\n var tempResult = this.getLayoutResult();\n /*if (startPage != this.currentPage)\n {\n if (row.grid.isChildGrid && row.grid.ParentCell != null)\n {\n let bounds : RectangleF= new RectangleF(new PointF(format.paginateBounds.x,format.paginateBounds.y), new SizeF(param.bounds.width, tempResult.bounds.height));\n bounds.x += param.bounds.x;\n if (row.grid.ParentCell.row.grid.style.cellPadding != null)\n {\n bounds.y += row.grid.ParentCell.row.grid.style.cellPadding.top;\n if (bounds.height > this.currentPageBounds.height)\n {\n bounds.height = this.currentPageBounds.height - bounds.y;\n bounds.height -= (row.grid.ParentCell.row.grid.style.cellPadding.bottom);\n }\n }\n // Draw border for cells in the nested grid cell's row.\n for (let c : number = 0; c < row.cells.count; c++)\n {\n let cell : PdfGridCell = row.cells.getCell(c);\n let cellWidth : number= 0;\n if (cell.columnSpan > 1)\n {\n for (; c < cell.columnSpan; c++)\n cellWidth += row.grid.columns.getColumn(c).width;\n }\n else\n cellWidth = Math.max(cell.width, row.grid.columns.getColumn(c).width);\n cell.drawCellBorders(this.currentGraphics, new RectangleF(new PointF(bounds.x,bounds.y), new SizeF(cellWidth, bounds.height)));\n bounds.x += cellWidth;\n c += (cell.columnSpan - 1);\n }\n }\n }\n */\n endArgs = this.raisePageLayouted(tempResult);\n if (endArgs.cancel || repeatRow)\n break;\n else if (this.Grid.allowRowBreakAcrossPages) {\n //If there is no space in the current page, add new page and then draw the remaining row.\n this.currentPage = this.getNextPageformat(format);\n originalHeight = this.currentBounds.y;\n var location_1 = new PointF(PdfBorders.default.right.width / 2, PdfBorders.default.top.width / 2);\n if ((format.paginateBounds.x === 0 && format.paginateBounds.y === 0 && format.paginateBounds.width === 0 &&\n format.paginateBounds.height === 0) && (this.startLocation.x === location_1.x && this.startLocation.y === location_1.y)) {\n this.currentBounds.x += this.startLocation.x;\n this.currentBounds.y += this.startLocation.y;\n }\n if (this.isPaginate) {\n this.startLocation.y = this.currentBounds.y;\n this.isPaginate = false;\n }\n if (this.Grid.isChildGrid && row.grid.ParentCell != null) {\n if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n if (row.rowBreakHeight + this.Grid.ParentCell.row.grid.style.cellPadding.top < this.currentBounds.height) {\n this.currentBounds.y = this.Grid.ParentCell.row.grid.style.cellPadding.top;\n }\n }\n }\n if (row.grid.ParentCell != null) {\n row.grid.ParentCell.row.isRowBreaksNextPage = true;\n row.grid.ParentCell.row.rowBreakHeightValue = row.rowBreakHeight + this.Grid.ParentCell.row.grid.style.cellPadding.top + this.Grid.ParentCell.row.grid.style.cellPadding.bottom;\n for (var i_2 = row.rowIndex + 1; i_2 < row.grid.rows.count; i_2++) {\n row.grid.ParentCell.row.rowBreakHeightValue += row.grid.rows.getRow(i_2).height;\n }\n //row.rowBreakHeight = row.grid.ParentCell.row.rowBreakHeightValue;\n }\n /*if (row.noOfPageCount > 1)\n {\n let temp : number = row.rowBreakHeightValue;\n for (let j : number = 1; j < row.noOfPageCount; j++)\n {\n row.rowBreakHeightValue = 0;\n row.height = ((row.noOfPageCount - 1) * this.currentPage.getClientSize().height);\n this.drawRow(row);\n this.currentPage = this.getNextPageformat(format);\n startPage = this.currentPage;\n }\n row.rowBreakHeightValue = temp;\n row.noOfPageCount = 1;\n rowResult = this.drawRow(row);\n } else {\n rowResult = this.drawRow(row);\n }\n /*if(row.grid.isChildGrid){\n row.isrowFinish = false;\n row.isrowDraw = false;\n row.grid.isgridSplit = true;\n row.grid.ParentCell.row.grid.isgridSplit = true;\n //rowResult.isFinish = false;\n break;\n }*/\n if (row.grid.isChildGrid) {\n //row.grid.isgridSplit = true;\n row.isrowFinish = false;\n //row.grid.ParentCell.row.grid.isgridSplit = true;\n row.grid.splitChildRowIndex = row.rowIndex;\n row.grid.ParentCell.row.grid.splitChildRowIndex = row.grid.ParentCell.row.rowIndex;\n if (row.grid.ParentCell.row.grid.isGridSplit) {\n row.grid.ParentCell.row.noOfPageCount += 1;\n row.grid.ParentCell.row.grid.isGridSplit = false;\n }\n break;\n }\n if (row.noOfPageCount < 1) {\n if (row.grid.splitChildRowIndex != -1) {\n row.grid.isGridSplit = true;\n }\n if (row.style.border != null && ((row.style.border.left != null && row.style.border.left.width !== 1)\n || (row.style.border.top != null && row.style.border.top.width !== 1))) {\n var x = row.style.border.left.width / 2;\n var y = row.style.border.top.width / 2;\n if (this.currentBounds.x === PdfBorders.default.right.width / 2 && this.currentBounds.y === PdfBorders.default.right.width / 2) {\n var newBound = new RectangleF(x, y, this.currentBounds.width, this.currentBounds.height);\n this.currentBounds = newBound;\n }\n }\n if (this.Grid.repeatHeader) {\n for (var j_1 = 0; j_1 < this.Grid.headers.count; j_1++) {\n var headerRepeat = this.Grid.headers.getHeader(j_1);\n this.drawRow(headerRepeat);\n }\n }\n rowResult = this.drawRow(row);\n if (row.noOfPageCount >= 1) {\n var temp = row.rowBreakHeightValue;\n for (var j_2 = 0; j_2 < row.noOfPageCount; j_2++) {\n //this.currentPage.section.add();\n var tempResult1 = this.getLayoutResult();\n endArgs = this.raisePageLayouted(tempResult1);\n this.currentPage = this.getNextPageformat(format);\n originalHeight = this.currentBounds.y;\n //row.rowBreakHeightValue = 0;\n if (row.grid.splitChildRowIndex != -1) {\n row.grid.isGridSplit = true;\n }\n this.currentBounds.y = 0.5;\n if (this.Grid.repeatHeader) {\n for (var i_3 = 0; i_3 < this.Grid.headers.count; i_3++) {\n var header = this.Grid.headers.getHeader(i_3);\n this.drawRow(header);\n }\n }\n //row.height = ((row.noOfPageCount - 1) * this.currentPage.getClientSize().height);\n this.drawRow(row);\n }\n // row.rowBreakHeight = temp;\n // row.noOfPageCount = 1;\n // rowResult = this.drawRow(row);\n }\n row.grid.splitChildRowIndex = -1;\n row.grid.isGridSplit = false;\n rowResult.isFinish = this.checkIsFisished(row);\n //row.NestedGridLayoutResult.bounds.height = row.rowBreakHeightValue;\n //this.currentBounds.y = rowResult.bounds.y;\n for (var i_4 = 0; i_4 < row.cells.count; i_4++) {\n if (row.cells.getCell(i_4).value instanceof PdfGrid) {\n row.cells.getCell(i_4).value.splitChildRowIndex = -1;\n }\n }\n }\n }\n // else if (!this.Grid.allowRowBreakAcrossPages && i < length)\n // {\n // this.currentPage = this.getNextPageformat(format);\n // break;\n // }\n // else if (i >= length)\n // break;\n }\n if (!rowResult.isFinish && startPage !== null && format.layout !== PdfLayoutType.OnePage && repeatRow) {\n // During pagination, cell position is maintained here.\n this.startLocation.x = this.currentBounds.x;\n var isAddNextPage = false;\n this.currentPage = this.getNextPageformat(format);\n /*if (!this.Grid.isSingleGrid)\n {\n for ( let j : number= 0; j < this.Grid.rows.count; j++)\n {\n let isWidthGreaterthanParent : boolean = false;\n for (let k : number = 0; k < this.Grid.rows.getRow(j).cells.count; k++)\n {\n if (this.Grid.rows.getRow(j).cells.getCell(k).width > this.currentPageBounds.width)\n isWidthGreaterthanParent = true;\n }\n if (isWidthGreaterthanParent && this.Grid.rows.getRow(j).cells.getCell(this.rowBreakPageHeightCellIndex).pageCount > 0)\n {\n isAddNextPage = true;\n }\n }\n }\n if (!this.Grid.isRearranged && isAddNextPage)\n {\n let section : PdfSection = this.currentPage.section;\n \n //this.currentPage = section.add();\n \n this.currentGraphics = this.currentPage.graphics;\n this.currentBounds = new RectangleF(new PointF(0,0), this.currentPage.getClientSize());\n \n let pageindex : number = (this.currentGraphics.page as PdfPage).section.indexOf(this.currentGraphics.page as PdfPage);\n }\n else\n {\n this.currentPage = this.getNextPageformat(format);\n }\n if (format.paginateBounds.y == 0)\n this.currentBounds.y = PdfBorders.default.top.width/2;\n else\n {\n this.currentBounds.y = format == null ? 0 : format.paginateBounds.y;\n \n }*/\n if (this.raiseBeforePageLayout(this.currentPage, this.currentBounds, this.currentRowIndex).returnValue) {\n break;\n }\n if ((param.format !== null) && !param.format.usePaginateBounds && param.bounds !== null &&\n param.bounds.height > 0 && !this.Grid.isChildGrid) {\n this.currentBounds.height = param.bounds.height;\n }\n if (typeof param.format !== 'undefined' && param.format != null && typeof param.format.usePaginateBounds !== 'undefined' && !param.format.usePaginateBounds && !(param.format.paginateBounds.x === 0 && param.format.paginateBounds.y === 0 && param.format.paginateBounds.width === 0 && param.format.paginateBounds.height === 0) && param.format.paginateBounds.y === 0) {\n this.currentBounds.y = PdfBorders.default.top.width / 2;\n }\n else {\n this.currentBounds.y = format == null ? 0 : format.paginateBounds.y;\n if (format != null && (format.paginateBounds.x !== 0 || format.paginateBounds.y !== 0 || format.paginateBounds.height !== 0 || format.paginateBounds.width !== 0)) {\n this.currentBounds.x = format.paginateBounds.x;\n this.currentBounds.width = format.paginateBounds.width;\n this.currentBounds.height = format.paginateBounds.height;\n }\n }\n if (typeof param.format !== 'undefined' && (param.format !== null) && typeof param.format.usePaginateBounds !== 'undefined' && !param.format.usePaginateBounds && param.bounds !== null &&\n param.bounds.y > 0 && !this.Grid.isChildGrid) {\n this.currentBounds.y = param.bounds.y;\n }\n this.startLocation.y = this.currentBounds.y;\n if ((format.paginateBounds.x === format.paginateBounds.y) &&\n (format.paginateBounds.y === format.paginateBounds.height) &&\n (format.paginateBounds.height === format.paginateBounds.width) && (format.paginateBounds.width === 0)) {\n this.currentBounds.x += this.startLocation.x;\n }\n if (this.currentBounds.x === PdfBorders.default.left.width / 2) {\n this.currentBounds.y += this.startLocation.x;\n }\n if (this.Grid.repeatHeader) {\n for (var i_5 = 0; i_5 < this.Grid.headers.count; i_5++) {\n var header = this.Grid.headers.getHeader(i_5);\n this.drawRow(header);\n }\n }\n this.drawRow(row);\n if (this.currentPage !== null && !layoutedPages.containsKey(this.currentPage)) {\n layoutedPages.add(this.currentPage, range);\n }\n }\n if (row.NestedGridLayoutResult != null) {\n // Position for next row in the grid.\n this.currentPage = row.NestedGridLayoutResult.page;\n this.currentGraphics = this.currentPage.graphics; //If not, next row will not be drawn in the layouted page.\n this.startLocation = new PointF(row.NestedGridLayoutResult.bounds.x, row.NestedGridLayoutResult.bounds.y);\n var recalHeight = this.ReCalculateHeight(row, row.NestedGridLayoutResult.bounds.height);\n this.currentBounds.y = recalHeight;\n //this.currentBounds.y = row.NestedGridLayoutResult.bounds.height;\n if (startPage != this.currentPage) {\n var section = this.currentPage.section;\n var startIndex = section.indexOf(startPage) + 1;\n var endIndex = section.indexOf(this.currentPage);\n for (var page = startIndex; page < endIndex + 1; page++) {\n var pageGraphics = section.getPages()[page].graphics;\n var location_2 = new PointF(format.paginateBounds.x, format.paginateBounds.y);\n var height = page == endIndex ? (row.NestedGridLayoutResult.bounds.height - param.bounds.y) :\n (this.currentBounds.height - location_2.y);\n if (height <= pageGraphics.clientSize.height)\n height += param.bounds.y;\n // if (row.grid.isChildGrid && row.grid.ParentCell != null)\n // location.x += param.bounds.x;\n location_2.y = format == null ? 0.5 : format.paginateBounds.y;\n // Draw border for last paginated row containing nested grid.\n for (var c = 0; c < row.cells.count; c++) {\n var cell = row.cells.getCell(c);\n var cellWidth = 0;\n var totalwidth = 0;\n if (cell.value instanceof PdfGrid) {\n for (var i_6 = 0; i_6 < cell.value.columns.count; i_6++) {\n totalwidth += cell.value.columns.getColumn(i_6).columnWidth;\n }\n }\n else {\n totalwidth = cell.width;\n }\n if (cell.columnSpan > 1) {\n for (; c < cell.columnSpan; c++)\n cellWidth += row.grid.columns.getColumn(c).width;\n }\n else\n cellWidth = Math.max(totalwidth, row.grid.columns.getColumn(c).width);\n cell.drawCellBorders(pageGraphics, new RectangleF(location_2, new SizeF(cellWidth, height)));\n cell.drawCellBorders(pageGraphics, new RectangleF(location_2, new SizeF(this.Grid.rows.getRow(this.Grid.rows.count - 1).width, height)));\n location_2.x += cellWidth;\n c += (cell.columnSpan - 1);\n }\n }\n // So, nested grid drawing is completed for the current row. Update page.\n // Otherwise, the next nested grid of the parent will draw borders from start.\n startPage = this.currentPage;\n }\n }\n }\n var isPdfGrid = false;\n var maximumCellBoundsWidth = 0;\n if (cellBounds.length > 0) {\n maximumCellBoundsWidth = cellBounds[0];\n }\n var largeNavigatePage = [[1, 2]];\n for (var c = 0; c < this.Grid.rows.count; c++) {\n if (this.cellEndIndex != -1 && this.Grid.rows.getRow(c).cells.getCell(this.cellEndIndex).value instanceof PdfGrid) {\n var grid = this.Grid.rows.getRow(c).cells.getCell(this.cellEndIndex).value;\n this.rowLayoutBoundsWidth = grid.rowLayoutBoundsWidth;\n isPdfGrid = true;\n // if (largeNavigatePage[0][0] < grid.listOfNavigatePages.length)\n // {\n // largeNavigatePage[0][0] = grid.listOfNavigatePages.length;\n // largeNavigatePage[0][1] = cellBounds[c];\n // }\n // else if ((largeNavigatePage[0][0] == grid.listOfNavigatePages.length) && (largeNavigatePage[0][1] < cellBounds[c]))\n // {\n // largeNavigatePage[0][1] = cellBounds[c];\n // }\n }\n }\n if (!isPdfGrid && cellBounds.length > 0) {\n for (var c = 0; c < i - 1; c++) {\n if (maximumCellBoundsWidth < cellBounds[c]) {\n maximumCellBoundsWidth = cellBounds[c];\n }\n }\n this.rowLayoutBoundsWidth = maximumCellBoundsWidth;\n }\n else {\n this.rowLayoutBoundsWidth = largeNavigatePage[0][1];\n }\n if (this.columnRanges.indexOf(range) < this.columnRanges.length - 1\n && startPage != null && format.layout != PdfLayoutType.OnePage) {\n isParentCell = this.Grid.isChildGrid;\n if (largeNavigatePage[0][0] != 0) {\n var section = this.currentPage.section;\n var pageIndex = section.indexOf(this.currentPage);\n this.currentGraphics = this.currentPage.graphics;\n this.currentBounds = new RectangleF(new PointF(0, 0), this.currentPage.getClientSize());\n var pageindex = this.currentGraphics.page.section.indexOf(this.currentGraphics.page);\n }\n else {\n this.currentPage = this.getNextPageformat(format);\n }\n // let locationGrid : PointF= new PointF(PdfBorders.default.right.width / 2, PdfBorders.default.top.width / 2);\n // if (format.paginateBounds == new RectangleF(0,0,0,0) && this.startLocation == locationGrid)\n // {\n // this.currentBounds.x += this.startLocation.x;\n // this.currentBounds.y += this.startLocation.y;\n // }\n }\n if (this.columnRanges.length - 1 !== index && this.columnRanges.length > 1 && format.layout !== PdfLayoutType.OnePage) {\n this.currentPage = this.getNextPageformat(format);\n if ((format.paginateBounds.x === format.paginateBounds.y) && (format.paginateBounds.y === format.paginateBounds.height)\n && (format.paginateBounds.height === format.paginateBounds.width) && (format.paginateBounds.width === 0)) {\n this.currentBounds.x += this.startLocation.x;\n this.currentBounds.y += this.startLocation.y;\n //this.currentBounds.height = this.pageBounds.height;\n }\n }\n }\n result = this.getLayoutResult();\n if (this.Grid.style.allowHorizontalOverflow && this.Grid.style.horizontalOverflowType == PdfHorizontalOverflowType.NextPage) {\n this.reArrangePages(layoutedPages);\n }\n this.raisePageLayouted(result);\n return result;\n };\n PdfGridLayouter.prototype.checkIsFisished = function (row) {\n var result = true;\n for (var i = 0; i < row.cells.count; i++) {\n if (!row.cells.getCell(i).FinishedDrawingCell) {\n result = false;\n }\n }\n return result;\n };\n /* tslint:enable */\n /**\n * Gets the `next page`.\n * @private\n */\n PdfGridLayouter.prototype.getNextPageformat = function (format) {\n var section = this.currentPage.section;\n var nextPage = null;\n var index = section.indexOf(this.currentPage);\n this.flag = false;\n if (index === section.count - 1) {\n nextPage = section.add();\n }\n else {\n nextPage = section.getPages()[index + 1];\n }\n this.currentGraphics = nextPage.graphics;\n var pageindex = this.currentGraphics.page.section.indexOf(this.currentGraphics.page);\n if (!(this.listOfNavigatePages.indexOf(pageindex) !== -1)) {\n this.listOfNavigatePages.push(pageindex);\n }\n this.currentBounds = new RectangleF(new PointF(0, 0), nextPage.getClientSize());\n if ((typeof format !== 'undefined') && format != null && format.usePaginateBounds && (typeof format.paginateBounds !== 'undefined') && format.paginateBounds != null && (format.paginateBounds.x !== format.paginateBounds.y) && (format.paginateBounds.y !== format.paginateBounds.height)\n && (format.paginateBounds.height !== format.paginateBounds.width) && (format.paginateBounds.width !== 0)) {\n this.currentBounds.x = format.paginateBounds.x;\n this.currentBounds.y = format.paginateBounds.y;\n this.currentBounds.height = format.paginateBounds.height;\n }\n return nextPage;\n };\n PdfGridLayouter.prototype.CheckIfDefaultFormat = function (format) {\n var defaultFormat = new PdfStringFormat();\n return (format.alignment === defaultFormat.alignment && format.characterSpacing === defaultFormat.characterSpacing &&\n format.clipPath === defaultFormat.clipPath && format.firstLineIndent === defaultFormat.firstLineIndent &&\n format.horizontalScalingFactor === defaultFormat.horizontalScalingFactor &&\n format.lineAlignment === defaultFormat.lineAlignment\n && format.lineLimit === defaultFormat.lineLimit && format.lineSpacing === defaultFormat.lineSpacing &&\n format.measureTrailingSpaces === defaultFormat.measureTrailingSpaces && format.noClip === defaultFormat.noClip &&\n format.paragraphIndent === defaultFormat.paragraphIndent && format.rightToLeft === defaultFormat.rightToLeft &&\n format.subSuperScript === defaultFormat.subSuperScript && format.wordSpacing === defaultFormat.wordSpacing &&\n format.wordWrap === defaultFormat.wordWrap);\n };\n /**\n * `Raises BeforeCellDraw event`.\n * @private\n */\n PdfGridLayouter.prototype.RaiseBeforeCellDraw = function (graphics, rowIndex, cellIndex, bounds, value, style) {\n var args = null;\n if (this.Grid.raiseBeginCellDraw) {\n args = new PdfGridBeginCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, style);\n this.Grid.onBeginCellDraw(args);\n style = args.style;\n }\n return style;\n };\n /**\n * `Raises AfterCellDraw event`.\n * @private\n */\n PdfGridLayouter.prototype.raiseAfterCellDraw = function (graphics, rowIndex, cellIndex, bounds, value, cellstyle) {\n var args = null;\n if (this.Grid.raiseEndCellDraw) {\n args = new PdfGridEndCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, cellstyle);\n this.Grid.onEndCellDraw(args);\n }\n };\n PdfGridLayouter.prototype.reArrangePages = function (layoutedPages) {\n var document = this.currentPage.document;\n var pages = [];\n var keys = layoutedPages.keys();\n var values = layoutedPages.values();\n for (var i = 0; i < keys.length; i++) {\n var page = keys[i];\n page.section = null;\n pages.push(page);\n document.pages.remove(page);\n }\n /* tslint:disable */\n for (var i = 0; i < layoutedPages.size(); i++) {\n var count = 0;\n for (var j = i, count_1 = (layoutedPages.size() / this.columnRanges.length); j < layoutedPages.size(); j += count_1) {\n var page = pages[j];\n if (typeof page !== 'undefined' && document.pages.indexOf(page) === -1) {\n document.pages.add(page);\n }\n }\n }\n /* tslint:enable */\n };\n /**\n * Gets the `layout result`.\n * @private\n */\n PdfGridLayouter.prototype.getLayoutResult = function () {\n if (this.Grid.isChildGrid && this.Grid.allowRowBreakAcrossPages) {\n for (var i = 0; i < this.Grid.rows.count; i++) {\n var row = this.Grid.rows.getRow(i);\n if (row.rowBreakHeight > 0 && row.repeatFlag) {\n this.startLocation.y = this.currentPage.origin.y;\n }\n }\n }\n var bounds;\n if (!this.isChanged) {\n bounds = new RectangleF(this.startLocation, new SizeF(this.currentBounds.width, this.currentBounds.y -\n this.startLocation.y));\n }\n // else {\n // bounds = new RectangleF(this.currentLocation, new SizeF(this.currentBounds.width, this.currentBounds.y -\n // this.currentLocation.y));\n // }\n /* tslint:enable */\n return new PdfGridLayoutResult(this.currentPage, bounds);\n };\n /**\n * `Recalculate row height` for the split cell to be drawn.\n * @private\n */\n PdfGridLayouter.prototype.ReCalculateHeight = function (row, height) {\n var newHeight = 0.0;\n for (var i = this.cellStartIndex; i <= this.cellEndIndex; i++) {\n if (!(row.cells.getCell(i).remainingString === null || row.cells.getCell(i).remainingString === '' ||\n typeof row.cells.getCell(i).remainingString === 'undefined')) {\n newHeight = Math.max(newHeight, row.cells.getCell(i).measureHeight());\n }\n }\n return Math.max(height, newHeight);\n };\n /**\n * `Raises BeforePageLayout event`.\n * @private\n */\n PdfGridLayouter.prototype.raiseBeforePageLayout = function (currentPage, currentBounds, currentRow) {\n var cancel = false;\n if (this.Grid.raiseBeginPageLayout) {\n var args = new PdfGridBeginPageLayoutEventArgs(currentBounds, currentPage, currentRow);\n this.Grid.onBeginPageLayout(args);\n // if (currentBounds !== args.Bounds) {\n // this.isChanged = true;\n // this.currentLocation = new PointF(args.Bounds.x, args.Bounds.y);\n // this.measureColumnsWidth(new RectangleF(new PointF(args.Bounds.x, args.Bounds.y) ,\n // new SizeF(args.Bounds.width + args.Bounds.x ,\n // args.Bounds.height)));\n // }\n cancel = (typeof args.cancel === 'undefined' ? false : args.cancel);\n currentBounds = args.bounds;\n currentRow = args.startRowIndex;\n }\n return { returnValue: cancel, currentBounds: currentBounds, currentRowIndex: currentRow };\n };\n /**\n * `Raises PageLayout event` if needed.\n * @private\n */\n PdfGridLayouter.prototype.raisePageLayouted = function (result) {\n var args = new PdfGridEndPageLayoutEventArgs(result);\n if (this.Grid.raiseEndPageLayout) {\n this.Grid.onEndPageLayout(args);\n }\n return args;\n };\n PdfGridLayouter.prototype.drawRow = function (row, result, height) {\n if (typeof result === 'undefined') {\n //.. Check if required space available.\n //.....If the row conains spans which falls through more than one page, then draw the row to next page. \n var result_1 = new RowLayoutResult();\n var rowHeightWithSpan = 0;\n var location_3 = new PointF(0, 0);\n var size = new SizeF(0, 0);\n var isHeader = false;\n if (row.rowSpanExists) {\n var maxSpan = 0;\n var currRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n if (currRowIndex === -1) {\n currRowIndex = this.Grid.headers.indexOf(row);\n if (currRowIndex !== -1) {\n isHeader = true;\n }\n }\n for (var i = 0; i < row.cells.count; i++) {\n var cell = row.cells.getCell(i);\n maxSpan = Math.max(maxSpan, cell.rowSpan);\n }\n for (var i = currRowIndex; i < currRowIndex + maxSpan; i++) {\n rowHeightWithSpan += (isHeader ? this.Grid.headers.getHeader(i).height : this.Grid.rows.getRow(i).height);\n }\n // let rowMaxHeight : number = rowHeightWithSpan;\n // for (let i : number = 0; i < row.cells.count; i++ ) {\n // rowMaxHeight = rowMaxHeight > row.cells.getCell(i).height ? rowMaxHeight : row.cells.getCell(i).height;\n // }\n // let flag : boolean = true;\n // let nextRow : PdfGridRow = this.Grid.headers.getHeader(this.Grid.headers.indexOf(row) + 1);\n // for (let i : number = 0; i < nextRow.cells.count; i++ ) {\n // if (nextRow.cells.getCell(i).value !== '' && nextRow.cells.getCell(i).value !== undefined) {\n // flag = false;\n // break;\n // }\n // }\n // if ((rowMaxHeight > rowHeightWithSpan) && flag) {\n // row.height += (rowMaxHeight - rowHeightWithSpan);\n // } \n }\n var calculatedHeight = row.rowBreakHeight > 0.0 ? row.rowBreakHeight : row.height;\n if (typeof this.Grid.isChildGrid !== 'undefined' && this.Grid.isChildGrid && typeof this.Grid.ParentCell !== 'undefined' && this.Grid.ParentCell != null) {\n //Split row only if row height exceeds page height and AllowRowBreakAcrossPages is true.\n // if (calculatedHeight + this.Grid.ParentCell.row.grid.style.cellPadding.bottom +\n // this.Grid.ParentCell.row.grid.style.cellPadding.top > this.currentPageBounds.height) {\n // if (this.Grid.allowRowBreakAcrossPages) {\n // result.isFinish = true;\n // if ( this.Grid.isChildGrid && row.rowBreakHeight > 0 ) {\n // if (this.Grid.ParentCell.row.grid.style.cellPadding !== null) {\n // this.currentBounds.y += this.Grid.ParentCell.row.grid.style.cellPadding.top;\n // }\n // this.currentBounds.x = this.startLocation.x;\n // }\n // result.bounds = this.currentBounds ;\n // this.drawRowWithBreak(result, row, calculatedHeight);\n // } else {\n // //If AllowRowBreakAcrossPages is not true, draw the row till it fits the page. \n // if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n // this.currentBounds.y += this.Grid.ParentCell.row.grid.style.cellPadding.top;\n // calculatedHeight = this.currentBounds.height - this.currentBounds.y -\n // this.Grid.ParentCell.row.grid.style.cellPadding.bottom;\n // }\n // result.isFinish = false;\n // this.drawRow( row, result, calculatedHeight);\n // }\n // } else\n if (this.currentBounds.y + this.Grid.ParentCell.row.grid.style.cellPadding.bottom + calculatedHeight >\n this.currentPageBounds.height || this.currentBounds.y + this.Grid.ParentCell.row.grid.style.cellPadding.bottom\n + calculatedHeight > this.currentBounds.height || this.currentBounds.y +\n this.Grid.ParentCell.row.grid.style.cellPadding.bottom + rowHeightWithSpan > this.currentPageBounds.height) {\n //If a row is repeated and still cannot fit in page, proceed draw.\n if (typeof this.Grid.ParentCell.row.grid.LayoutFormat !== 'undefined' && this.Grid.ParentCell.row.grid.LayoutFormat.break === PdfLayoutBreakType.FitPage) {\n PdfGridLayouter.repeatRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n this.Grid.splitChildRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n }\n if (PdfGridLayouter.repeatRowIndex > -1 && PdfGridLayouter.repeatRowIndex === row.rowIndex) {\n if (this.Grid.allowRowBreakAcrossPages) {\n result_1.isFinish = true;\n // if (this.Grid.isChildGrid && row.rowBreakHeightValue > 0) {\n // // if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n // // this.currentBounds.y += this.Grid.ParentCell.row.grid.style.cellPadding.top;\n // // }\n // this.currentBounds.x = this.startLocation.x;\n // }\n result_1.bounds = this.currentBounds;\n this.drawRowWithBreak(result_1, row, calculatedHeight);\n row.repeatFlag = true;\n row.repeatRowNumber = PdfGridLayouter.repeatRowIndex;\n }\n // else {\n // result.isFinish = false;\n // row.repeatFlag = false;\n // this.drawRow( row, result, calculatedHeight);\n // }\n }\n // else {\n // result.isFinish = false;\n // }\n }\n else {\n result_1.isFinish = true;\n if (row.grid.ParentCell.row.rowBreakHeightValue > 0) {\n row.repeatFlag = true;\n }\n else {\n row.repeatFlag = false;\n calculatedHeight = row.height;\n }\n if (this.Grid.isChildGrid && row.rowBreakHeight > 0) {\n if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n calculatedHeight += this.Grid.ParentCell.row.grid.style.cellPadding.bottom;\n }\n }\n this.drawRow(row, result_1, calculatedHeight);\n }\n }\n else {\n //Split row only if row height exceeds page height and AllowRowBreakAcrossPages is true.\n if (calculatedHeight > this.currentPageBounds.height) {\n if (this.Grid.allowRowBreakAcrossPages) {\n result_1.isFinish = true;\n //result.bounds = this.currentBounds;\n this.drawRowWithBreak(result_1, row, calculatedHeight);\n row.isrowFinish = true;\n row.repeatFlag = true;\n if (row.grid.splitChildRowIndex !== -1) {\n result_1.isFinish = false;\n }\n }\n // else {\n // //If AllowRowBreakAcrossPages is not true, draw the row till it fits the page.\n // result.isFinish = false;\n // this.drawRow( row, result, calculatedHeight);\n // }\n }\n else if (this.currentBounds.y + calculatedHeight > this.currentPageBounds.height ||\n this.currentBounds.y + calculatedHeight > (this.currentBounds.height + this.startLocation.y) ||\n this.currentBounds.y + rowHeightWithSpan > this.currentPageBounds.height) {\n // If a row is repeated and still cannot fit in page, proceed draw.\n var isFit = false;\n if ((this.Grid.allowRowBreakAcrossPages && !this.Grid.repeatHeader && !row.isRowHeightSet && !row.rowMergeComplete)) {\n if (this.Grid.LayoutFormat !== null && this.Grid.LayoutFormat.paginateBounds.height > 0) {\n isFit = this.isFitToCell((this.currentBounds.height + this.startLocation.y) - this.currentBounds.y, this.Grid, row);\n }\n else\n isFit = this.isFitToCell(this.currentPageBounds.height - this.currentBounds.y, this.Grid, row);\n if (isFit) {\n this.isPaginate = true;\n }\n }\n else if (this.Grid.allowRowBreakAcrossPages && this.Grid.LayoutFormat != null && this.Grid.LayoutFormat.layout == PdfLayoutType.Paginate && this.Grid.LayoutFormat.break != PdfLayoutBreakType.FitElement && row.isRowHeightSet && this.currentBounds.y + height > this.currentPageBounds.height) {\n isFit = this.isFitToCell(this.currentPageBounds.height - this.currentBounds.y, this.Grid, row);\n if (!isFit)\n isFit = !(this.slr !== null && this.slr.actualSize.height == 0 && this.slr.remainder != null && this.slr.remainder.length > 0 && this.remainderText == this.slr.remainder);\n if (isFit && this.slr != null && this.slr.lineCount > 1) {\n //It may text cutoff issue\n isFit = false;\n }\n this.remainderText = null;\n }\n if (PdfGridLayouter.repeatRowIndex > -1 && PdfGridLayouter.repeatRowIndex === row.rowIndex || isFit) {\n if (this.Grid.allowRowBreakAcrossPages) {\n result_1.isFinish = true;\n this.drawRowWithBreak(result_1, row, calculatedHeight);\n row.repeatFlag = true;\n row.repeatRowNumber = PdfGridLayouter.repeatRowIndex;\n if (row.grid.splitChildRowIndex !== -1) {\n result_1.isFinish = false;\n }\n }\n else {\n result_1.isFinish = false;\n this.drawRow(row, result_1, calculatedHeight);\n }\n }\n else {\n result_1.isFinish = false;\n }\n }\n else {\n result_1.isFinish = true;\n this.drawRow(row, result_1, calculatedHeight);\n row.repeatFlag = false;\n }\n }\n return result_1;\n }\n else {\n var skipcell = false;\n var location_4 = new PointF(this.currentBounds.x, this.currentBounds.y);\n // if (row.grid.isChildGrid && row.grid.allowRowBreakAcrossPages && this.startLocation.x !== this.currentBounds.x && row.width <\n // this.currentPage.getClientSize().width) {\n // location.x = this.startLocation.x;\n // }\n result.bounds = new RectangleF(location_4, new SizeF(0, 0));\n height = this.ReCalculateHeight(row, height);\n for (var i = this.cellStartIndex; i <= this.cellEndIndex; i++) {\n var cancelSpans = ((i > this.cellEndIndex + 1) && (row.cells.getCell(i).columnSpan > 1));\n // let cancelSpans : boolean = false;\n if (!cancelSpans) {\n for (var j = 1; j < row.cells.getCell(i).columnSpan; j++) {\n row.cells.getCell(i + j).isCellMergeContinue = true;\n }\n }\n var size = new SizeF(this.Grid.columns.getColumn(i).width, height);\n // if (size.width > this.currentGraphics.clientSize.width) {\n // size.width = this.currentGraphics.clientSize.width;\n // }\n // if (this.Grid.isChildGrid && this.Grid.style.allowHorizontalOverflow) {\n // if (size.width >= this.currentGraphics.clientSize.width) {\n // size.width -= 2 * this.currentBounds.x;\n // }\n // }\n /* tslint:disable */\n if (!this.CheckIfDefaultFormat(this.Grid.columns.getColumn(i).format) &&\n this.CheckIfDefaultFormat(row.cells.getCell(i).stringFormat)) {\n row.cells.getCell(i).stringFormat = this.Grid.columns.getColumn(i).format;\n }\n var cellstyle = row.cells.getCell(i).style;\n var tempValue = ((typeof row.cells.getCell(i).value === 'string' &&\n row.cells.getCell(i).value !== null) ? row.cells.getCell(i).value : '');\n row.cells.getCell(i).style = this.RaiseBeforeCellDraw(this.currentGraphics, this.currentRowIndex, i, new RectangleF(location_4, size), tempValue, cellstyle);\n //row.cells.getCell(i).style = cellstyle;\n if (!skipcell) {\n if (row.cells.getCell(i).value instanceof PdfGrid) {\n var grid = row.cells.getCell(i).value;\n grid.parentCellIndex = i;\n }\n var stringResult = row.cells.getCell(i).draw(this.currentGraphics, new RectangleF(location_4, size), cancelSpans);\n if (row.grid.style.allowHorizontalOverflow && (row.cells.getCell(i).columnSpan > this.cellEndIndex ||\n i + row.cells.getCell(i).columnSpan > this.cellEndIndex + 1) && this.cellEndIndex < row.cells.count - 1) {\n row.rowOverflowIndex = this.cellEndIndex;\n }\n if (row.grid.style.allowHorizontalOverflow && (row.rowOverflowIndex > 0 && (row.cells.getCell(i).columnSpan >\n this.cellEndIndex || i + row.cells.getCell(i).columnSpan > this.cellEndIndex + 1)) &&\n row.cells.getCell(i).columnSpan - this.cellEndIndex + i - 1 > 0) {\n row.cells.getCell(row.rowOverflowIndex + 1).value = stringResult !== null ? (stringResult.remainder !== undefined) ?\n stringResult.remainder : '' : '';\n row.cells.getCell(row.rowOverflowIndex + 1).stringFormat = row.cells.getCell(i).stringFormat;\n row.cells.getCell(row.rowOverflowIndex + 1).style = row.cells.getCell(i).style;\n row.cells.getCell(row.rowOverflowIndex + 1).columnSpan = row.cells.getCell(i).columnSpan - this.cellEndIndex + i - 1;\n }\n }\n /* tslint:enable */\n tempValue = ((typeof row.cells.getCell(i).value === 'string' &&\n row.cells.getCell(i).value !== null) ? row.cells.getCell(i).value : '');\n if (!cancelSpans) {\n this.raiseAfterCellDraw(this.currentGraphics, this.currentRowIndex, i, new RectangleF(location_4, size), tempValue, row.cells.getCell(i).style);\n }\n if (row.cells.getCell(i).value instanceof PdfGrid) {\n var grid = row.cells.getCell(i).value;\n if (this.Grid.columns.getColumn(i).width >= this.currentGraphics.clientSize.width) {\n location_4.x = grid.rowLayoutBoundsWidth;\n location_4.x += grid.style.cellSpacing;\n }\n else {\n location_4.x += this.Grid.columns.getColumn(i).width;\n }\n }\n else {\n location_4.x += this.Grid.columns.getColumn(i).width;\n }\n }\n if (!row.rowMergeComplete || row.isRowHeightSet) {\n this.currentBounds.y += height;\n }\n result.bounds = new RectangleF(new PointF(result.bounds.x, result.bounds.y), new SizeF(location_4.x, location_4.y));\n }\n };\n PdfGridLayouter.prototype.isFitToCell = function (currentHeight, grid, gridRow) {\n var isFit = false;\n var layouter = new PdfStringLayouter();\n for (var i = 0; i < gridRow.cells.count; i++) {\n var cell = gridRow.cells.getCell(i);\n if (typeof cell.value !== 'undefined' && cell.value !== null && typeof cell.value === 'string') {\n var font = null;\n if (typeof cell.style.font !== 'undefined' && cell.style.font != null) {\n font = cell.style.font;\n }\n else if (typeof cell.row.style.font !== 'undefined' && cell.row.style.font != null) {\n font = cell.row.style.font;\n }\n else if (typeof cell.row.grid.style.font !== 'undefined' && cell.row.grid.style.font != null) {\n font = cell.row.grid.style.font;\n }\n else {\n font = PdfDocument.defaultFont;\n }\n this.remainderText = cell.value;\n var width = cell.width;\n var column = grid.columns.getColumn(i);\n if (column.isCustomWidth && cell.width > column.width) {\n width = column.width;\n }\n this.slr = layouter.layout(cell.value, font, cell.stringFormat, new SizeF(width, currentHeight), false, this.currentPageBounds);\n var height = this.slr.actualSize.height;\n if (cell.value !== '' && height === 0) {\n isFit = false;\n break;\n }\n if (cell.style !== null && cell.style.borders !== null && cell.style.borders.top !== null && cell.style.borders.bottom !== null) {\n height += (cell.style.borders.top.width + cell.style.borders.bottom.width) * 2;\n }\n if (this.slr.lineCount > 1 && cell.stringFormat != null && cell.stringFormat.lineSpacing != 0) {\n height += (this.slr.lineCount - 1) * (cell.style.stringFormat.lineSpacing);\n }\n if (cell.style.cellPadding === null) {\n height += (grid.style.cellPadding.top + grid.style.cellPadding.bottom);\n }\n else {\n height += (grid.style.cellPadding.top + grid.style.cellPadding.bottom);\n }\n height += grid.style.cellSpacing;\n if (currentHeight > height || (typeof this.slr.remainder !== 'undefined' && this.slr.remainder !== null)) {\n isFit = true;\n break;\n }\n }\n }\n return isFit;\n };\n PdfGridLayouter.prototype.drawRowWithBreak = function (result, row, calculateHeight) {\n var location = new PointF(this.currentBounds.x, this.currentBounds.y);\n if (row.grid.isChildGrid && row.grid.allowRowBreakAcrossPages && this.startLocation.x !== this.currentBounds.x) {\n location.x = this.startLocation.x;\n }\n result.bounds = new RectangleF(location, new SizeF(0, 0));\n this.gridHeight = row.rowBreakHeight > 0 ? this.currentPageBounds.height : 0;\n // Calculate the remaining height.\n if (row.grid.style.cellPadding.top + this.currentBounds.y + row.grid.style.cellPadding.bottom < this.currentPageBounds.height) {\n row.rowBreakHeight = this.currentBounds.y + calculateHeight - this.currentPageBounds.height;\n }\n // else {\n // row.rowBreakHeight = calculateHeight;\n // result.isFinish = false;\n // return;\n // }\n // No need to explicit break if the row height is equal to grid height.\n for (var i = 0; i < row.cells.count; i++) {\n var cell = row.cells.getCell(i);\n var cellHeight = cell.measureHeight();\n if (cellHeight === calculateHeight && cell.value instanceof PdfGrid) {\n row.rowBreakHeight = 0;\n }\n // else if (cellHeight === calculateHeight && (cell.value as PdfGrid) === null) {\n // row.rowBreakHeight = this.currentBounds.y + calculateHeight - this.currentPageBounds.height;\n // }\n }\n for (var i = this.cellStartIndex; i <= this.cellEndIndex; i++) {\n var gridColumnWidth = this.Grid.columns.getColumn(i).width;\n var cancelSpans = ((row.cells.getCell(i).columnSpan + i > this.cellEndIndex + 1) &&\n (row.cells.getCell(i).columnSpan > 1));\n if (!cancelSpans) {\n for (var k = 1; k < row.cells.getCell(i).columnSpan; k++) {\n row.cells.getCell(i + k).isCellMergeContinue = true;\n gridColumnWidth += this.Grid.columns.getColumn(i + k).width;\n }\n }\n var size = new SizeF(gridColumnWidth, this.gridHeight > 0.0 ? this.gridHeight :\n this.currentPageBounds.height);\n // if (size.width === 0) {\n // size = new SizeF(row.cells.getCell(i).width, size.height);\n // }\n // if (!this.CheckIfDefaultFormat(this.Grid.columns.getColumn(i).format) &&\n // this.CheckIfDefaultFormat((row.cells.getCell(i).stringFormat))) {\n // row.cells.getCell(i).stringFormat = this.Grid.columns.getColumn(i).format;\n // }\n var cellstyle1 = row.cells.getCell(i).style;\n row.cells.getCell(i).style = cellstyle1;\n var skipcell = false;\n var stringResult = null;\n if (!skipcell) {\n row.cells.getCell(i)._rowHeight = row.height;\n stringResult = row.cells.getCell(i).draw(this.currentGraphics, new RectangleF(location, size), cancelSpans);\n }\n //If still row is to be drawn, set cell finished drawing cell as false and update the text to be drawn.\n if (row.rowBreakHeight > 0.0) {\n if (stringResult != null && typeof stringResult.remainder !== 'undefined') {\n row.cells.getCell(i).FinishedDrawingCell = false;\n row.cells.getCell(i).remainingString = stringResult.remainder == null ? ' ' : stringResult.remainder;\n row.rowBreakHeight = calculateHeight - stringResult.actualSize.height;\n }\n }\n result.isFinish = (!result.isFinish) ? result.isFinish : row.cells.getCell(i).FinishedDrawingCell;\n // let tempValue : string = ((typeof row.cells.getCell(i).value === 'string' &&\n //row.cells.getCell(i).value !== null) ? row.cells.getCell(i).value : '') as string;\n // if (!cancelSpans) {\n // // this.raiseAfterCellDraw(this.currentGraphics, this.currentRowIndex, i,\n // // new RectangleF(location, size), tempValue, row.cells.getCell(i).style); \n // this.raiseAfterCellDraw(this.currentGraphics, this.currentRowIndex, i, new RectangleF(location, size),\n // (row.cells.getCell(i).value as string) ? row.cells.getCell(i).value.toString() : ' ',\n // row.cells.getCell(i).style);\n // } \n if (row.cells.getCell(i).value instanceof PdfGrid) {\n var grid = row.cells.getCell(i).value;\n this.rowBreakPageHeightCellIndex = i;\n // row.cells.getCell(i).pageCount = grid.listOfNavigatePages.length;\n // for (let j : number = 0;j= this.currentGraphics.clientSize.width) {\n location.x = this.rowLayoutBoundsWidth;\n location.x += grid.style.cellSpacing;\n }\n else {\n location.x += this.Grid.columns.getColumn(i).width;\n }\n }\n else {\n location.x += this.Grid.columns.getColumn(i).width;\n }\n }\n this.currentBounds.y += this.gridHeight > 0.0 ? this.gridHeight : calculateHeight;\n result.bounds = new RectangleF(new PointF(result.bounds.x, result.bounds.y), new SizeF(location.x, location.y));\n };\n /**\n * @hidden\n * @private\n */\n PdfGridLayouter.repeatRowIndex = -1;\n return PdfGridLayouter;\n}(ElementLayouter));\nexport { PdfGridLayouter };\n// recalculateBounds : boolean, clientSize : SizeF\n//Implementation\n/**\n * `Initializes` internal data.\n * @private\n */\n//Internal declaration\nvar PdfGridLayoutResult = /** @class */ (function (_super) {\n __extends(PdfGridLayoutResult, _super);\n /**\n * Constructor\n * @private\n */\n function PdfGridLayoutResult(page, bounds) {\n return _super.call(this, page, bounds) || this;\n }\n return PdfGridLayoutResult;\n}(PdfLayoutResult));\nexport { PdfGridLayoutResult };\n/**\n * `PdfGridLayoutFormat` class represents a flexible grid that consists of columns and rows.\n */\nvar PdfGridLayoutFormat = /** @class */ (function (_super) {\n __extends(PdfGridLayoutFormat, _super);\n /**\n * Initializes a new instance of the `PdfGridLayoutFormat` class.\n * @private\n */\n function PdfGridLayoutFormat(baseFormat) {\n return _super.call(this, baseFormat) || this;\n }\n return PdfGridLayoutFormat;\n}(PdfLayoutFormat));\nexport { PdfGridLayoutFormat };\nvar GridCellEventArgs = /** @class */ (function () {\n // Constructors\n /**\n * Initialize a new instance for `GridCellEventArgs` class.\n * @private\n */\n function GridCellEventArgs(graphics, rowIndex, cellIndex, bounds, value) {\n this.gridRowIndex = rowIndex;\n this.gridCellIndex = cellIndex;\n this.internalValue = value;\n this.gridBounds = bounds;\n this.pdfGraphics = graphics;\n }\n Object.defineProperty(GridCellEventArgs.prototype, \"rowIndex\", {\n // Properties\n /**\n * Gets the value of current `row index`.\n * @private\n */\n get: function () {\n return this.gridRowIndex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCellEventArgs.prototype, \"cellIndex\", {\n /**\n * Gets the value of current `cell index`.\n * @private\n */\n get: function () {\n return this.gridCellIndex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCellEventArgs.prototype, \"value\", {\n /**\n * Gets the actual `value` of current cell.\n * @private\n */\n get: function () {\n return this.internalValue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCellEventArgs.prototype, \"bounds\", {\n /**\n * Gets the `bounds` of current cell.\n * @private\n */\n get: function () {\n return this.gridBounds;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCellEventArgs.prototype, \"graphics\", {\n /**\n * Gets the instance of `current graphics`.\n * @private\n */\n get: function () {\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n return GridCellEventArgs;\n}());\nexport { GridCellEventArgs };\nvar PdfGridBeginCellDrawEventArgs = /** @class */ (function (_super) {\n __extends(PdfGridBeginCellDrawEventArgs, _super);\n // Constructors\n /**\n * Initializes a new instance of the `StartCellLayoutEventArgs` class.\n * @private\n */\n function PdfGridBeginCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, style) {\n var _this = _super.call(this, graphics, rowIndex, cellIndex, bounds, value) || this;\n _this.style = style;\n return _this;\n }\n Object.defineProperty(PdfGridBeginCellDrawEventArgs.prototype, \"skip\", {\n // Properties\n /**\n * Gets or sets a value indicating whether the value of this cell should be `skipped`.\n * @private\n */\n get: function () {\n return this.bSkip;\n },\n set: function (value) {\n this.bSkip = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridBeginCellDrawEventArgs.prototype, \"style\", {\n /**\n * Gets or sets a `style` value of the cell.\n * @private\n */\n get: function () {\n return this.cellStyle;\n },\n set: function (value) {\n this.cellStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridBeginCellDrawEventArgs;\n}(GridCellEventArgs));\nexport { PdfGridBeginCellDrawEventArgs };\nvar PdfGridEndCellDrawEventArgs = /** @class */ (function (_super) {\n __extends(PdfGridEndCellDrawEventArgs, _super);\n // Constructors\n /**\n * Initializes a new instance of the `PdfGridEndCellLayoutEventArgs` class.\n * @private\n */\n function PdfGridEndCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, style) {\n var _this = _super.call(this, graphics, rowIndex, cellIndex, bounds, value) || this;\n _this.cellStyle = style;\n return _this;\n }\n Object.defineProperty(PdfGridEndCellDrawEventArgs.prototype, \"style\", {\n // Propertise\n /**\n * Get the `PdfGridCellStyle`.\n * @private\n */\n get: function () {\n return this.cellStyle;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridEndCellDrawEventArgs;\n}(GridCellEventArgs));\nexport { PdfGridEndCellDrawEventArgs };\nvar PdfCancelEventArgs = /** @class */ (function () {\n function PdfCancelEventArgs() {\n }\n Object.defineProperty(PdfCancelEventArgs.prototype, \"cancel\", {\n // Properties\n /**\n * Gets and Sets the value of `cancel`.\n * @private\n */\n get: function () {\n return this.isCancel;\n },\n set: function (value) {\n this.isCancel = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfCancelEventArgs;\n}());\nexport { PdfCancelEventArgs };\nvar BeginPageLayoutEventArgs = /** @class */ (function (_super) {\n __extends(BeginPageLayoutEventArgs, _super);\n // Constructors\n /**\n * Initializes a new instance of the `BeginPageLayoutEventArgs` class with the specified rectangle and page.\n * @private\n */\n function BeginPageLayoutEventArgs(bounds, page) {\n var _this = _super.call(this) || this;\n _this.bounds = bounds;\n _this.pdfPage = page;\n return _this;\n }\n Object.defineProperty(BeginPageLayoutEventArgs.prototype, \"bounds\", {\n // Properties\n /**\n * Gets or sets value that indicates the lay outing `bounds` on the page.\n * @private\n */\n get: function () {\n return this.cellBounds;\n },\n set: function (value) {\n this.cellBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BeginPageLayoutEventArgs.prototype, \"page\", {\n /**\n * Gets the `page` where the lay outing should start.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n return BeginPageLayoutEventArgs;\n}(PdfCancelEventArgs));\nexport { BeginPageLayoutEventArgs };\n/**\n * `EndPageLayoutEventArgs` class is alternate for end page layout events.\n */\nvar EndPageLayoutEventArgs = /** @class */ (function (_super) {\n __extends(EndPageLayoutEventArgs, _super);\n // Constructors\n /**\n * Initializes a new instance of the `EndPageLayoutEventArgs` class. with the specified 'PdfLayoutResult'.\n * @private\n */\n function EndPageLayoutEventArgs(result) {\n var _this = _super.call(this) || this;\n _this.layoutResult = result;\n return _this;\n }\n Object.defineProperty(EndPageLayoutEventArgs.prototype, \"result\", {\n // Properties\n /**\n * Gets the lay outing `result` of the page.\n * @private\n */\n get: function () {\n return this.layoutResult;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EndPageLayoutEventArgs.prototype, \"nextPage\", {\n /**\n * Gets or sets a value indicating the `next page` where the element should be layout.\n * @private\n */\n get: function () {\n return this.nextPdfPage;\n },\n set: function (value) {\n this.nextPdfPage = value;\n },\n enumerable: true,\n configurable: true\n });\n return EndPageLayoutEventArgs;\n}(PdfCancelEventArgs));\nexport { EndPageLayoutEventArgs };\n/**\n * `PdfGridBeginPageLayoutEventArgs` class is alternate for begin page layout events.\n */\nvar PdfGridBeginPageLayoutEventArgs = /** @class */ (function (_super) {\n __extends(PdfGridBeginPageLayoutEventArgs, _super);\n // Constructors\n /**\n * Initialize a new instance of `PdfGridBeginPageLayoutEventArgs` class.\n * @private\n */\n function PdfGridBeginPageLayoutEventArgs(bounds, page, startRow) {\n var _this = _super.call(this, bounds, page) || this;\n _this.startRow = startRow;\n return _this;\n }\n Object.defineProperty(PdfGridBeginPageLayoutEventArgs.prototype, \"startRowIndex\", {\n // Properties\n /**\n * Gets the `start row index`.\n * @private\n */\n get: function () {\n return this.startRow;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridBeginPageLayoutEventArgs;\n}(BeginPageLayoutEventArgs));\nexport { PdfGridBeginPageLayoutEventArgs };\n/**\n * `PdfGridEndPageLayoutEventArgs` class is alternate for begin page layout events.\n */\nvar PdfGridEndPageLayoutEventArgs = /** @class */ (function (_super) {\n __extends(PdfGridEndPageLayoutEventArgs, _super);\n // Constructors\n /**\n * Initialize a new instance of `PdfGridEndPageLayoutEventArgs` class.\n * @private\n */\n function PdfGridEndPageLayoutEventArgs(result) {\n return _super.call(this, result) || this;\n }\n return PdfGridEndPageLayoutEventArgs;\n}(EndPageLayoutEventArgs));\nexport { PdfGridEndPageLayoutEventArgs };\nvar RowLayoutResult = /** @class */ (function () {\n //Constructors\n /**\n * Initializes a new instance of the `RowLayoutResult` class.\n * @private\n */\n function RowLayoutResult() {\n this.layoutedBounds = new RectangleF(0, 0, 0, 0);\n }\n Object.defineProperty(RowLayoutResult.prototype, \"isFinish\", {\n /**\n * Gets or sets a value indicating whether this instance `is finish`.\n * @private\n */\n get: function () {\n return this.bIsFinished;\n },\n set: function (value) {\n this.bIsFinished = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RowLayoutResult.prototype, \"bounds\", {\n /**\n * Gets or sets the `bounds`.\n * @private\n */\n get: function () {\n return this.layoutedBounds;\n },\n set: function (value) {\n this.layoutedBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n return RowLayoutResult;\n}());\nexport { RowLayoutResult };\n","/**\n * PdfPageTemplateElement.ts class for EJ2-Pdf\n */\nimport { PdfDockStyle, PdfAlignmentStyle, TemplateType } from './enum';\nimport { PointF, SizeF } from './../drawing/pdf-drawing';\nimport { PdfTemplate } from './../graphics/figures/pdf-template';\nimport { PdfPage } from './pdf-page';\nimport { RectangleF } from './../drawing/pdf-drawing';\n/**\n * Describes a `page template` object that can be used as header/footer, watermark or stamp.\n */\nvar PdfPageTemplateElement = /** @class */ (function () {\n /* tslint:disable */\n function PdfPageTemplateElement(arg1, arg2, arg3, arg4, arg5) {\n if (arg1 instanceof RectangleF && typeof arg2 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg1.width, arg1.height, null);\n }\n else if (arg1 instanceof RectangleF && arg2 instanceof PdfPage && typeof arg3 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg1.width, arg1.height, arg2);\n }\n else if (arg1 instanceof PointF && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg2.width, arg2.height, null);\n }\n else if (arg1 instanceof PointF && arg2 instanceof SizeF && arg3 instanceof PdfPage && typeof arg4 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg2.width, arg2.height, arg3);\n }\n else if (arg1 instanceof SizeF && typeof arg2 === 'undefined') {\n this.InitiateBounds(0, 0, arg1.width, arg1.height, null);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n this.InitiateBounds(0, 0, arg1, arg2, null);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && arg3 instanceof PdfPage && typeof arg4 === 'undefined') {\n this.InitiateBounds(0, 0, arg1, arg2, arg3);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'number' && typeof arg5 === 'undefined') {\n this.InitiateBounds(arg1, arg2, arg3, arg4, null);\n }\n else {\n this.InitiateBounds(arg1, arg2, arg3, arg4, null);\n // this.graphics.colorSpace = this.page.document.colorSpace;\n }\n /* tslint:enable */\n }\n Object.defineProperty(PdfPageTemplateElement.prototype, \"dock\", {\n // Properties\n /**\n * Gets or sets the `dock style` of the page template element.\n * @private\n */\n get: function () {\n return this.dockStyle;\n },\n set: function (value) {\n // if (this.dockStyle !== value && this.Type === TemplateType.None) {\n this.dockStyle = value;\n // Reset alignment.\n this.resetAlignment();\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"alignment\", {\n /**\n * Gets or sets `alignment` of the page template element.\n * @private\n */\n get: function () {\n return this.alignmentStyle;\n },\n set: function (value) {\n // if (this.alignmentStyle !== value) {\n this.setAlignment(value);\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"foreground\", {\n /**\n * Indicates whether the page template is located `in front of the page layers or behind of it`.\n * @private\n */\n get: function () {\n return this.isForeground;\n },\n set: function (value) {\n // if (this.foreground !== value) {\n this.isForeground = value;\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"background\", {\n /**\n * Indicates whether the page template is located `behind of the page layers or in front of it`.\n * @private\n */\n get: function () {\n return !this.isForeground;\n },\n set: function (value) {\n this.isForeground = !value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"location\", {\n /**\n * Gets or sets `location` of the page template element.\n * @private\n */\n get: function () {\n return this.currentLocation;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"x\", {\n /**\n * Gets or sets `X` co-ordinate of the template element on the page.\n * @private\n */\n get: function () {\n var value = (typeof this.currentLocation !== 'undefined') ? this.currentLocation.x : 0;\n return value;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation.x = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"y\", {\n /**\n * Gets or sets `Y` co-ordinate of the template element on the page.\n * @private\n */\n get: function () {\n var value = (typeof this.currentLocation !== 'undefined') ? this.currentLocation.y : 0;\n return value;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation.y = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"size\", {\n /**\n * Gets or sets `size` of the page template element.\n * @private\n */\n get: function () {\n return this.template.size;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.template.reset(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"width\", {\n /**\n * Gets or sets `width` of the page template element.\n * @private\n */\n get: function () {\n return this.template.width;\n },\n set: function (value) {\n if (this.template.width !== value && this.type === TemplateType.None) {\n var size = this.template.size;\n size.width = value;\n this.template.reset(size);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"height\", {\n /**\n * Gets or sets `height` of the page template element.\n * @private\n */\n get: function () {\n return this.template.height;\n },\n set: function (value) {\n if (this.template.height !== value && this.type === TemplateType.None) {\n var size = this.template.size;\n size.height = value;\n this.template.reset(size);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"graphics\", {\n /**\n * Gets `graphics` context of the page template element.\n * @private\n */\n get: function () {\n return this.template.graphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"template\", {\n /**\n * Gets Pdf `template` object.\n * @private\n */\n get: function () {\n // if (typeof this.pdfTemplate === 'undefined' || this.pdfTemplate == null) {\n // this.pdfTemplate = new PdfTemplate(this.size);\n // }\n return this.pdfTemplate;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"type\", {\n /**\n * Gets or sets `type` of the usage of this page template.\n * @private\n */\n get: function () {\n return this.templateType;\n },\n set: function (value) {\n this.updateDocking(value);\n this.templateType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"bounds\", {\n /**\n * Gets or sets `bounds` of the page template.\n * @public\n */\n get: function () {\n return new RectangleF(new PointF(this.x, this.y), this.size);\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.location = new PointF(value.x, value.y);\n this.size = new SizeF(value.width, value.height);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Initialize Bounds` Initialize the bounds value of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.InitiateBounds = function (arg1, arg2, arg3, arg4, arg5) {\n this.x = arg1;\n this.y = arg2;\n this.pdfTemplate = new PdfTemplate(arg3, arg4);\n // this.graphics.colorSpace = this.page.document.colorSpace;\n };\n /**\n * `Updates Dock` property if template is used as header/footer.\n * @private\n */\n PdfPageTemplateElement.prototype.updateDocking = function (type) {\n if (type !== TemplateType.None) {\n switch (type) {\n case TemplateType.Top:\n this.dock = PdfDockStyle.Top;\n break;\n case TemplateType.Bottom:\n this.dock = PdfDockStyle.Bottom;\n break;\n case TemplateType.Left:\n this.dock = PdfDockStyle.Left;\n break;\n case TemplateType.Right:\n this.dock = PdfDockStyle.Right;\n break;\n }\n this.resetAlignment();\n }\n };\n /**\n * `Resets alignment` of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.resetAlignment = function () {\n this.alignment = PdfAlignmentStyle.None;\n };\n /**\n * `Sets alignment` of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.setAlignment = function (alignment) {\n if (this.dock === PdfDockStyle.None) {\n this.alignmentStyle = alignment;\n }\n else {\n // Template is docked and alignment has been changed.\n var canBeSet = false;\n switch (this.dock) {\n case PdfDockStyle.Left:\n canBeSet = (alignment === PdfAlignmentStyle.TopLeft || alignment === PdfAlignmentStyle.MiddleLeft ||\n alignment === PdfAlignmentStyle.BottomLeft || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Top:\n canBeSet = (alignment === PdfAlignmentStyle.TopLeft || alignment === PdfAlignmentStyle.TopCenter ||\n alignment === PdfAlignmentStyle.TopRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Right:\n canBeSet = (alignment === PdfAlignmentStyle.TopRight || alignment === PdfAlignmentStyle.MiddleRight ||\n alignment === PdfAlignmentStyle.BottomRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Bottom:\n canBeSet = (alignment === PdfAlignmentStyle.BottomLeft || alignment === PdfAlignmentStyle.BottomCenter\n || alignment === PdfAlignmentStyle.BottomRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Fill:\n canBeSet = (alignment === PdfAlignmentStyle.MiddleCenter || alignment === PdfAlignmentStyle.None);\n break;\n }\n if (canBeSet) {\n this.alignmentStyle = alignment;\n }\n }\n };\n /**\n * Draws the template.\n * @private\n */\n PdfPageTemplateElement.prototype.draw = function (layer, document) {\n var page = layer.page;\n var bounds = this.calculateBounds(page, document);\n layer.graphics.drawPdfTemplate(this.template, new PointF(bounds.x, bounds.y), new SizeF(bounds.width, bounds.height));\n };\n /**\n * Calculates bounds of the page template.\n * @private\n */\n PdfPageTemplateElement.prototype.calculateBounds = function (page, document) {\n var result = this.bounds;\n if (this.alignmentStyle !== PdfAlignmentStyle.None) {\n result = this.getAlignmentBounds(page, document);\n }\n else if (this.dockStyle !== PdfDockStyle.None) {\n result = this.getDockBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getAlignmentBounds = function (page, document) {\n var result = this.bounds;\n if (this.type === TemplateType.None) {\n result = this.getSimpleAlignmentBounds(page, document);\n }\n else {\n result = this.getTemplateAlignmentBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getSimpleAlignmentBounds = function (page, document) {\n var bounds = this.bounds;\n var pdfSection = page.section;\n var actualBounds = pdfSection.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n switch (this.alignmentStyle) {\n case PdfAlignmentStyle.TopLeft:\n x = 0;\n y = 0;\n break;\n case PdfAlignmentStyle.TopCenter:\n x = (actualBounds.width - this.width) / 2;\n y = 0;\n break;\n case PdfAlignmentStyle.TopRight:\n x = actualBounds.width - this.width;\n y = 0;\n break;\n case PdfAlignmentStyle.MiddleLeft:\n x = 0;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleCenter:\n x = (actualBounds.width - this.width) / 2;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleRight:\n x = actualBounds.width - this.width;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.BottomLeft:\n x = 0;\n y = actualBounds.height - this.height;\n break;\n case PdfAlignmentStyle.BottomCenter:\n x = (actualBounds.width - this.width) / 2;\n y = actualBounds.height - this.height;\n break;\n case PdfAlignmentStyle.BottomRight:\n x = actualBounds.width - this.width;\n y = actualBounds.height - this.height;\n break;\n }\n bounds.x = x;\n bounds.y = y;\n return bounds;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getTemplateAlignmentBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n switch (this.alignmentStyle) {\n case PdfAlignmentStyle.TopLeft:\n if (this.type === TemplateType.Left) {\n x = this.convertSign(actualBounds.x);\n y = 0;\n }\n else if (this.type === TemplateType.Top) {\n x = this.convertSign(actualBounds.x);\n y = this.convertSign(actualBounds.y);\n }\n break;\n case PdfAlignmentStyle.TopCenter:\n x = (actualBounds.width - this.width) / 2;\n y = this.convertSign(actualBounds.y);\n break;\n case PdfAlignmentStyle.TopRight:\n if (this.type === TemplateType.Right) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = 0;\n }\n else if (this.type === TemplateType.Top) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = this.convertSign(actualBounds.y);\n }\n break;\n case PdfAlignmentStyle.MiddleLeft:\n x = this.convertSign(actualBounds.x);\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleCenter:\n x = (actualBounds.width - this.width) / 2;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleRight:\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.BottomLeft:\n if (this.type === TemplateType.Left) {\n x = this.convertSign(actualBounds.x);\n y = actualBounds.height - this.height;\n }\n else if (this.type === TemplateType.Bottom) {\n x = this.convertSign(actualBounds.x);\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n }\n break;\n case PdfAlignmentStyle.BottomCenter:\n x = (actualBounds.width - this.width) / 2;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n break;\n case PdfAlignmentStyle.BottomRight:\n if (this.type === TemplateType.Right) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = actualBounds.height - this.height;\n }\n else if (this.type === TemplateType.Bottom) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n }\n break;\n }\n result.x = x;\n result.y = y;\n return result;\n };\n /**\n * Calculates bounds according to the docking.\n * @private\n */\n PdfPageTemplateElement.prototype.getDockBounds = function (page, document) {\n var result = this.bounds;\n if (this.type === TemplateType.None) {\n result = this.getSimpleDockBounds(page, document);\n }\n else {\n result = this.getTemplateDockBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the docking.\n * @private\n */\n PdfPageTemplateElement.prototype.getSimpleDockBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n var width = this.width;\n var height = this.height;\n switch (this.dockStyle) {\n case PdfDockStyle.Left:\n x = 0;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Top:\n x = 0;\n y = 0;\n width = actualBounds.width;\n height = this.height;\n break;\n case PdfDockStyle.Right:\n x = actualBounds.width - this.width;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Bottom:\n x = 0;\n y = actualBounds.height - this.height;\n width = actualBounds.width;\n height = this.height;\n break;\n case PdfDockStyle.Fill:\n x = 0;\n x = 0;\n width = actualBounds.width;\n height = actualBounds.height;\n break;\n }\n result = new RectangleF(x, y, width, height);\n return result;\n };\n /**\n * Calculates template bounds basing on docking if template is a page template.\n * @private\n */\n PdfPageTemplateElement.prototype.getTemplateDockBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var actualSize = section.pageSettings.getActualSize();\n var x = this.x;\n var y = this.y;\n var width = this.width;\n var height = this.height;\n switch (this.dockStyle) {\n case PdfDockStyle.Left:\n x = this.convertSign(actualBounds.x);\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Top:\n x = this.convertSign(actualBounds.x);\n y = this.convertSign(actualBounds.y);\n width = actualSize.width;\n height = this.height;\n if (actualBounds.height < 0) {\n y = actualSize.height - actualBounds.y;\n }\n break;\n case PdfDockStyle.Right:\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Bottom:\n x = this.convertSign(actualBounds.x);\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n width = actualSize.width;\n height = this.height;\n if (actualBounds.height < 0) {\n y -= actualSize.height;\n }\n break;\n case PdfDockStyle.Fill:\n x = 0;\n x = 0;\n width = actualBounds.width;\n height = actualBounds.height;\n break;\n }\n result = new RectangleF(x, y, width, height);\n return result;\n };\n /**\n * Ignore value zero, otherwise convert sign.\n * @private\n */\n PdfPageTemplateElement.prototype.convertSign = function (value) {\n return (value !== 0 || (value === 0 && 1 / value === -Infinity)) ? -value : value;\n };\n return PdfPageTemplateElement;\n}());\nexport { PdfPageTemplateElement };\n","/**\n * PdfNumbersConvertor.ts class for EJ2-PDF\n * @private\n */\nimport { PdfNumberStyle } from './../../pages/enum';\n/**\n * `PdfNumbersConvertor` for convert page number into numbers, roman letters, etc.,\n * @private\n */\nvar PdfNumbersConvertor = /** @class */ (function () {\n function PdfNumbersConvertor() {\n }\n // Static methods\n /**\n * Convert string value from page number with correct format.\n * @private\n */\n PdfNumbersConvertor.convert = function (intArabic, numberStyle) {\n var result = '';\n switch (numberStyle) {\n case PdfNumberStyle.None:\n result = '';\n break;\n case PdfNumberStyle.Numeric:\n result = intArabic.toString();\n break;\n case PdfNumberStyle.LowerLatin:\n result = this.arabicToLetter(intArabic).toLowerCase();\n break;\n case PdfNumberStyle.LowerRoman:\n result = this.arabicToRoman(intArabic).toLowerCase();\n break;\n case PdfNumberStyle.UpperLatin:\n result = this.arabicToLetter(intArabic);\n break;\n case PdfNumberStyle.UpperRoman:\n result = this.arabicToRoman(intArabic);\n break;\n }\n return result;\n };\n /**\n * Converts `arabic to roman` letters.\n * @private\n */\n PdfNumbersConvertor.arabicToRoman = function (intArabic) {\n var retval = '';\n var retvalM = this.generateNumber(intArabic, 1000, 'M');\n retval += retvalM.returnValue;\n intArabic = retvalM.intArabic;\n var retvalCM = this.generateNumber(intArabic, 900, 'CM');\n retval += retvalCM.returnValue;\n intArabic = retvalCM.intArabic;\n var retvalD = this.generateNumber(intArabic, 500, 'D');\n retval += retvalD.returnValue;\n intArabic = retvalD.intArabic;\n var retvalCD = this.generateNumber(intArabic, 400, 'CD');\n retval += retvalCD.returnValue;\n intArabic = retvalCD.intArabic;\n var retvalC = this.generateNumber(intArabic, 100, 'C');\n retval += retvalC.returnValue;\n intArabic = retvalC.intArabic;\n var retvalXC = this.generateNumber(intArabic, 90, 'XC');\n retval += retvalXC.returnValue;\n intArabic = retvalXC.intArabic;\n var retvalL = this.generateNumber(intArabic, 50, 'L');\n retval += retvalL.returnValue;\n intArabic = retvalL.intArabic;\n var retvalXL = this.generateNumber(intArabic, 40, 'XL');\n retval += retvalXL.returnValue;\n intArabic = retvalXL.intArabic;\n var retvalX = this.generateNumber(intArabic, 10, 'X');\n retval += retvalX.returnValue;\n intArabic = retvalX.intArabic;\n var retvalIX = this.generateNumber(intArabic, 9, 'IX');\n retval += retvalIX.returnValue;\n intArabic = retvalIX.intArabic;\n var retvalV = this.generateNumber(intArabic, 5, 'V');\n retval += retvalV.returnValue;\n intArabic = retvalV.intArabic;\n var retvalIV = this.generateNumber(intArabic, 4, 'IV');\n retval += retvalIV.returnValue;\n intArabic = retvalIV.intArabic;\n var retvalI = this.generateNumber(intArabic, 1, 'I');\n retval += retvalI.returnValue;\n intArabic = retvalI.intArabic;\n return retval.toString();\n };\n /**\n * Converts `arabic to normal letters`.\n * @private\n */\n PdfNumbersConvertor.arabicToLetter = function (arabic) {\n var stack = this.convertToLetter(arabic);\n var result = '';\n while (stack.length > 0) {\n var num = stack.pop();\n result = this.appendChar(result, num);\n }\n return result.toString();\n };\n /**\n * Generate a string value of an input number.\n * @private\n */\n PdfNumbersConvertor.generateNumber = function (value, magnitude, letter) {\n var numberstring = '';\n while (value >= magnitude) {\n value -= magnitude;\n numberstring += letter;\n }\n return { returnValue: numberstring.toString(), intArabic: value };\n };\n /**\n * Convert a input number into letters.\n * @private\n */\n PdfNumbersConvertor.convertToLetter = function (arabic) {\n if (arabic <= 0) {\n throw Error('ArgumentOutOfRangeException-arabic, Value can not be less 0');\n }\n var stack = [];\n while (arabic > this.letterLimit) {\n var remainder = arabic % this.letterLimit;\n if (remainder === 0.0) {\n arabic = arabic / this.letterLimit - 1;\n remainder = this.letterLimit;\n }\n else {\n arabic /= this.letterLimit;\n }\n stack.push(remainder);\n }\n stack.push(arabic);\n return stack;\n };\n /**\n * Convert number to actual string value.\n * @private\n */\n PdfNumbersConvertor.appendChar = function (builder, value) {\n var letter = String.fromCharCode(PdfNumbersConvertor.acsiiStartIndex + value);\n builder += letter;\n return builder;\n };\n // Fields\n /**\n * numbers of letters in english [readonly].\n * @default = 26.0\n * @private\n */\n PdfNumbersConvertor.letterLimit = 26.0;\n /**\n * Resturns `acsii start index` value.\n * @default 64\n * @private\n */\n PdfNumbersConvertor.acsiiStartIndex = (65 - 1);\n return PdfNumbersConvertor;\n}());\nexport { PdfNumbersConvertor };\n","/**\n * Represent class to store information about `template and value pairs`.\n * @private\n */\nvar PdfTemplateValuePair = /** @class */ (function () {\n function PdfTemplateValuePair(template, value) {\n // Fields\n /**\n * Internal variable to store template.\n * @default null\n * @private\n */\n this.pdfTemplate = null;\n /**\n * Intenal variable to store value.\n * @private\n */\n this.content = '';\n if (typeof template === 'undefined') {\n //\n }\n else {\n this.template = template;\n this.value = value;\n }\n }\n Object.defineProperty(PdfTemplateValuePair.prototype, \"template\", {\n // Properties\n /**\n * Gets or sets the template.\n * @private\n */\n get: function () {\n return this.pdfTemplate;\n },\n set: function (value) {\n this.pdfTemplate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplateValuePair.prototype, \"value\", {\n /**\n * Gets or sets the value.\n * @private\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.content = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTemplateValuePair;\n}());\nexport { PdfTemplateValuePair };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfAutomaticField.ts class for EJ2-PDF\n */\nimport { PdfAutomaticField } from './automatic-field';\nimport { TemporaryDictionary } from './../../collections/object-object-pair/dictionary';\nimport { PdfTemplateValuePair } from './pdf-template-value-pair';\nimport { SizeF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfTemplate } from './../../graphics/figures/pdf-template';\n/**\n * Represents automatic field which has the same value within the `PdfGraphics`.\n */\nvar PdfMultipleValueField = /** @class */ (function (_super) {\n __extends(PdfMultipleValueField, _super);\n function PdfMultipleValueField() {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the instance of dictionary values of `graphics and template value pair`.\n * @private\n */\n _this.list = new TemporaryDictionary();\n return _this;\n }\n // Implementation\n /* tslint:disable */\n PdfMultipleValueField.prototype.performDraw = function (graphics, location, scalingX, scalingY) {\n _super.prototype.performDrawHelper.call(this, graphics, location, scalingX, scalingY);\n var value = this.getValue(graphics);\n var template = new PdfTemplate(this.getSize());\n this.list.setValue(graphics, new PdfTemplateValuePair(template, value));\n var g = template.graphics;\n var size = this.getSize();\n template.graphics.drawString(value, this.getFont(), this.pen, this.getBrush(), 0, 0, size.width, size.height, this.stringFormat);\n var drawLocation = new PointF(location.x + this.location.x, location.y + this.location.y);\n graphics.drawPdfTemplate(template, drawLocation, new SizeF(template.width * scalingX, template.height * scalingY));\n };\n return PdfMultipleValueField;\n}(PdfAutomaticField));\nexport { PdfMultipleValueField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfBrush } from './../../graphics/brushes/pdf-brush';\nimport { PdfNumberStyle } from './../../pages/enum';\nimport { PdfNumbersConvertor } from './pdf-numbers-convertor';\nimport { PdfMultipleValueField } from './multiple-value-field';\n/**\n * Represents PDF document `page number field`.\n * @public\n */\nvar PdfPageNumberField = /** @class */ (function (_super) {\n __extends(PdfPageNumberField, _super);\n function PdfPageNumberField(font, arg2) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the number style of the page number field.\n * @private\n */\n _this.internalNumberStyle = PdfNumberStyle.Numeric;\n if (typeof arg2 === 'undefined') {\n _this.font = font;\n }\n else if (arg2 instanceof PdfBrush) {\n _this.font = font;\n _this.brush = arg2;\n }\n else {\n _this.font = font;\n _this.bounds = arg2;\n }\n return _this;\n }\n Object.defineProperty(PdfPageNumberField.prototype, \"numberStyle\", {\n // Properties\n /**\n * Gets and sets the number style of the page number field.\n * @private\n */\n get: function () {\n return this.internalNumberStyle;\n },\n set: function (value) {\n this.internalNumberStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Return the `string` value of page number field.\n * @public\n */\n PdfPageNumberField.prototype.getValue = function (graphics) {\n var result = null;\n var page = this.getPageFromGraphics(graphics);\n result = this.internalGetValue(page);\n return result;\n };\n /**\n * Internal method to `get actual value of page number`.\n * @private\n */\n PdfPageNumberField.prototype.internalGetValue = function (page) {\n var document = page.document;\n var pageIndex = document.pages.indexOf(page) + 1;\n return PdfNumbersConvertor.convert(pageIndex, this.numberStyle);\n };\n return PdfPageNumberField;\n}(PdfMultipleValueField));\nexport { PdfPageNumberField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfCompositeField.ts class for EJ2-PDF\n */\nimport { PdfMultipleValueField } from './multiple-value-field';\n/**\n * Represents class which can concatenate multiple automatic fields into single string.\n */\nvar PdfCompositeField = /** @class */ (function (_super) {\n __extends(PdfCompositeField, _super);\n // Constructor\n /**\n * Initialize a new instance of `PdfCompositeField` class.\n * @param font Font of the field.\n * @param brush Color of the field.\n * @param text Content of the field.\n * @param list List of the automatic fields in specific order based on the text content.\n */\n function PdfCompositeField(font, brush, text) {\n var list = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n list[_i - 3] = arguments[_i];\n }\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the array of automatic fields.\n * @private\n */\n _this.internalAutomaticFields = null;\n /**\n * Stores the text value of the field.\n * @private\n */\n _this.internalText = '';\n _this.font = font;\n _this.brush = brush;\n _this.text = text;\n _this.automaticFields = list;\n return _this;\n }\n Object.defineProperty(PdfCompositeField.prototype, \"text\", {\n // Properties\n /**\n * Gets and sets the content of the field.\n * @public\n */\n get: function () {\n return this.internalText;\n },\n set: function (value) {\n this.internalText = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCompositeField.prototype, \"automaticFields\", {\n /**\n * Gets and sets the list of the field to drawn.\n * @public\n */\n get: function () {\n return this.internalAutomaticFields;\n },\n set: function (value) {\n this.internalAutomaticFields = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Return the actual value generated from the list of automatic fields.\n * @public\n */\n PdfCompositeField.prototype.getValue = function (graphics) {\n var values = [];\n var text = this.text.toString();\n if (typeof this.automaticFields !== 'undefined' && this.automaticFields != null && this.automaticFields.length > 0) {\n for (var i = 0; i < this.automaticFields.length; i++) {\n var automaticField = this.automaticFields[i];\n text = text.replace('{' + i + '}', automaticField.getValue(graphics));\n }\n }\n return text;\n };\n return PdfCompositeField;\n}(PdfMultipleValueField));\nexport { PdfCompositeField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfSingleValueField.ts class for EJ2-PDF\n */\nimport { PdfAutomaticField } from './automatic-field';\nimport { TemporaryDictionary } from './../../collections/object-object-pair/dictionary';\nimport { PdfTemplateValuePair } from './pdf-template-value-pair';\nimport { PointF, SizeF } from './../../drawing/pdf-drawing';\nimport { PdfTemplate } from './../../graphics/figures/pdf-template';\n/**\n * Represents automatic field which has the same value in the whole document.\n */\nvar PdfSingleValueField = /** @class */ (function (_super) {\n __extends(PdfSingleValueField, _super);\n // Constructors\n function PdfSingleValueField() {\n var _this = _super.call(this) || this;\n // Fields\n /* tslint:disable */\n _this.list = new TemporaryDictionary();\n /* tslint:enable */\n _this.painterGraphics = [];\n return _this;\n }\n PdfSingleValueField.prototype.performDraw = function (graphics, location, scalingX, scalingY) {\n _super.prototype.performDrawHelper.call(this, graphics, location, scalingX, scalingY);\n var page = this.getPageFromGraphics(graphics);\n var document = page.document;\n var textValue = this.getValue(graphics);\n /* tslint:disable */\n if (this.list.containsKey(document)) {\n var pair = this.list.getValue(document);\n var drawLocation = new PointF(location.x + this.location.x, location.y + this.location.y);\n graphics.drawPdfTemplate(pair.template, drawLocation, new SizeF(pair.template.width * scalingX, pair.template.height * scalingY));\n this.painterGraphics.push(graphics);\n }\n else {\n var size = this.getSize();\n var template = new PdfTemplate(size);\n this.list.setValue(document, new PdfTemplateValuePair(template, textValue));\n template.graphics.drawString(textValue, this.getFont(), this.pen, this.getBrush(), 0, 0, size.width, size.height, this.stringFormat);\n var drawLocation = new PointF(location.x + this.location.x, location.y + this.location.y);\n graphics.drawPdfTemplate(template, drawLocation, new SizeF(template.width * scalingX, template.height * scalingY));\n this.painterGraphics.push(graphics);\n }\n /* tslint:enable */\n };\n return PdfSingleValueField;\n}(PdfAutomaticField));\nexport { PdfSingleValueField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfPageCountField.ts class for EJ2-PDF\n */\nimport { PdfSingleValueField } from './single-value-field';\nimport { PdfNumberStyle } from './../../pages/enum';\nimport { PdfBrush } from './../../graphics/brushes/pdf-brush';\nimport { PdfNumbersConvertor } from './pdf-numbers-convertor';\n/**\n * Represents total PDF document page count automatic field.\n */\nvar PdfPageCountField = /** @class */ (function (_super) {\n __extends(PdfPageCountField, _super);\n function PdfPageCountField(font, arg2) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the number style of the field.\n * @private\n */\n _this.internalNumberStyle = PdfNumberStyle.Numeric;\n if (typeof arg2 === 'undefined') {\n _this.font = font;\n }\n else if (arg2 instanceof PdfBrush) {\n _this.font = font;\n _this.brush = arg2;\n }\n else {\n _this.font = font;\n _this.bounds = arg2;\n }\n return _this;\n }\n Object.defineProperty(PdfPageCountField.prototype, \"numberStyle\", {\n // Properties\n /**\n * Gets and sets the number style of the field.\n * @public\n */\n get: function () {\n return this.internalNumberStyle;\n },\n set: function (value) {\n this.internalNumberStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Return the actual value of the content to drawn.\n * @public\n */\n PdfPageCountField.prototype.getValue = function (graphics) {\n var result = null;\n var page = this.getPageFromGraphics(graphics);\n var document = page.section.parent.document;\n var count = document.pages.count;\n result = PdfNumbersConvertor.convert(count, this.numberStyle);\n return result;\n };\n return PdfPageCountField;\n}(PdfSingleValueField));\nexport { PdfPageCountField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfTrueTypeFont.ts class for EJ2-PDF\n */\nimport { UnicodeTrueTypeFont } from './unicode-true-type-font';\nimport { PdfFont } from './pdf-font';\nimport { PdfFontStyle } from './enum';\nimport { PdfDocument } from './../../document/pdf-document';\nimport { PdfTextDirection } from './../enum';\nimport { RtlRenderer } from './rtl-renderer';\n//https://www.giftofspeed.com/base64-encoder/\nvar PdfTrueTypeFont = /** @class */ (function (_super) {\n __extends(PdfTrueTypeFont, _super);\n function PdfTrueTypeFont(base64String, size, style) {\n var _this = _super.call(this, size) || this;\n /**\n * Indicates whether the font is embedded or not.\n * @private\n */\n _this.isEmbedFont = false;\n /**\n * Indicates whether the font is unicoded or not.\n * @private\n */\n _this.isUnicode = true;\n if (style !== undefined) {\n _this.createFontInternal(base64String, style);\n }\n else {\n _this.createFontInternal(base64String, PdfFontStyle.Regular);\n }\n return _this;\n }\n PdfTrueTypeFont.prototype.equalsToFont = function (font) {\n var result = false;\n //let result : boolean = this.fontInternal.equalsToFont(font);\n return result;\n };\n PdfTrueTypeFont.prototype.getLineWidth = function (line, format) {\n var width = 0;\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n var returnValue = this.getUnicodeLineWidth(line, /*out*/ width, format);\n width = returnValue.width;\n }\n else {\n width = this.fontInternal.getLineWidth(line);\n }\n var size = this.metrics.getSize(format);\n width *= (PdfFont.charSizeMultiplier * size);\n width = this.applyFormatSettings(line, format, width);\n return width;\n };\n /**\n * Returns width of the char.\n */\n PdfTrueTypeFont.prototype.getCharWidth = function (charCode, format) {\n var codeWidth = this.fontInternal.getCharWidth(charCode);\n var size = this.metrics.getSize(format);\n codeWidth *= (0.001 * size);\n return codeWidth;\n };\n //Implementation\n PdfTrueTypeFont.prototype.createFontInternal = function (base64String, style) {\n this.fontInternal = new UnicodeTrueTypeFont(base64String, this.size);\n this.calculateStyle(style);\n this.initializeInternals();\n };\n PdfTrueTypeFont.prototype.calculateStyle = function (style) {\n var iStyle = this.fontInternal.ttfMetrics.macStyle;\n if ((style & PdfFontStyle.Underline) !== 0) {\n iStyle |= PdfFontStyle.Underline;\n }\n if ((style & PdfFontStyle.Strikeout) !== 0) {\n iStyle |= PdfFontStyle.Strikeout;\n }\n this.setStyle(iStyle);\n };\n PdfTrueTypeFont.prototype.initializeInternals = function () {\n var equalFont = null;\n if (PdfDocument.enableCache) {\n // Search for the similar fonts.\n equalFont = PdfDocument.cache.search(this);\n }\n var internals = null;\n // There is not equal font in the cache.\n if (equalFont !== null && equalFont !== undefined) {\n // Get the settings from the cached font.\n internals = equalFont.getInternals();\n var metrics = equalFont.metrics;\n metrics = metrics.clone();\n metrics.size = this.size;\n this.metrics = metrics;\n this.fontInternal = equalFont.fontInternal;\n }\n else {\n if (equalFont == null) {\n if (this.fontInternal instanceof UnicodeTrueTypeFont) {\n this.fontInternal.isEmbed = this.isEmbedFont;\n }\n this.fontInternal.createInternals();\n internals = this.fontInternal.getInternals();\n this.metrics = this.fontInternal.metrics;\n }\n }\n this.metrics.isUnicodeFont = true;\n this.setInternals(internals);\n //this.ttfReader = (this.fontInternal as UnicodeTrueTypeFont).ttfReader;\n };\n /**\n * Stores used symbols.\n */\n PdfTrueTypeFont.prototype.setSymbols = function (text) {\n var internalFont = this.fontInternal;\n if (internalFont != null) {\n internalFont.setSymbols(text);\n }\n };\n Object.defineProperty(PdfTrueTypeFont.prototype, \"Unicode\", {\n /**\n * Property\n *\n */\n get: function () {\n return this.isUnicode;\n },\n enumerable: true,\n configurable: true\n });\n // public get Font() : UnicodeTrueTypeFont {\n // return this.fontInternal as UnicodeTrueTypeFont;\n // }\n PdfTrueTypeFont.prototype.getUnicodeLineWidth = function (line, /*out*/ width, format) {\n // if (line == null) {\n // throw new Error('ArgumentNullException : line');\n // }\n width = 0;\n var glyphIndices = null;\n var rtlRender = new RtlRenderer();\n /* tslint:disable-next-line:max-line-length */\n var result = rtlRender.getGlyphIndex(line, this, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, /*out*/ glyphIndices, true);\n var resultGlyph = result.success;\n glyphIndices = result.glyphs;\n if (resultGlyph && glyphIndices !== null) {\n var ttfReader = this.fontInternal.ttfReader;\n for (var i = 0, len = glyphIndices.length; i < len; i++) {\n var glyphIndex = glyphIndices[i];\n var glyph = ttfReader.getGlyph(glyphIndex);\n if (glyph !== null && typeof glyph !== 'undefined') {\n width += glyph.width;\n }\n }\n }\n return { success: resultGlyph, width: width };\n };\n return PdfTrueTypeFont;\n}(PdfFont));\nexport { PdfTrueTypeFont };\n","import { Row } from './../models/row';\nimport { CellType } from '../base/enum';\nimport { isNullOrUndefined, Internationalization, getValue, createElement } from '@syncfusion/ej2-base';\nimport { Cell } from '../models/cell';\nimport { ValueFormatter } from './../services/value-formatter';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { getForeignData, measureColumnDepth, getUid } from '../base/util';\nimport { Grid } from '../base/grid';\n/**\n * @hidden\n * `ExportHelper` for `PdfExport` & `ExcelExport`\n */\nvar ExportHelper = /** @class */ (function () {\n function ExportHelper(parent, foreignKeyData) {\n this.hideColumnInclude = false;\n this.foreignKeyData = {};\n this.parent = parent;\n if (!parent.parentDetails && foreignKeyData) {\n this.foreignKeyData = foreignKeyData;\n }\n }\n ExportHelper.getQuery = function (parent, data) {\n var query = data.generateQuery(true).requiresCount();\n if (data.isRemote()) {\n if (parent.groupSettings.enableLazyLoading && parent.groupSettings.columns.length) {\n query.lazyLoad = [];\n }\n else {\n query.take(parent.pageSettings.totalRecordsCount);\n }\n }\n return query;\n };\n ExportHelper.prototype.getFData = function (value, column) {\n var foreignKeyData = getForeignData(column, {}, value, this.foreignKeyData[column.field])[0];\n return foreignKeyData;\n };\n ExportHelper.prototype.getGridRowModel = function (columns, dataSource, gObj, startIndex) {\n if (startIndex === void 0) { startIndex = 0; }\n var rows = [];\n var length = dataSource.length;\n if (length) {\n for (var i = 0; i < length; i++, startIndex++) {\n var options = { isExpand: false };\n options.data = dataSource[parseInt(i.toString(), 10)];\n options.index = startIndex;\n if (gObj.childGrid || gObj.detailTemplate) {\n if (gObj.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (gObj.hierarchyPrintMode === 'Expanded' &&\n this.parent.expandedRows && this.parent.expandedRows[parseInt(startIndex.toString(), 10)]) {\n options.isExpand = gObj.expandedRows[parseInt(startIndex.toString(), 10)].isExpand;\n }\n }\n var row = new Row(options);\n row.cells = this.generateCells(columns, gObj);\n rows.push(row);\n }\n this.processColumns(rows);\n }\n return rows;\n };\n ExportHelper.prototype.generateCells = function (columns, gObj) {\n var cells = [];\n if (gObj.childGridLevel) {\n var len = gObj.childGridLevel;\n for (var i = 0; len > i; i++) {\n cells.push(this.generateCell({}, CellType.Indent));\n }\n }\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n cells.push(this.generateCell(col, CellType.Data));\n }\n return cells;\n };\n ExportHelper.prototype.getColumnData = function (gridObj) {\n var _this = this;\n var columnPromise = [];\n var promise;\n var fColumns = gridObj.getForeignKeyColumns();\n if (fColumns.length) {\n for (var i = 0; i < fColumns.length; i++) {\n var colData = ('result' in fColumns[parseInt(i.toString(), 10)].dataSource) ?\n new DataManager(fColumns[parseInt(i.toString(), 10)].dataSource.result) :\n fColumns[parseInt(i.toString(), 10)].dataSource;\n columnPromise.push(colData.executeQuery(new Query()));\n }\n promise = Promise.all(columnPromise).then(function (e) {\n for (var j = 0; j < fColumns.length; j++) {\n _this.foreignKeyData[fColumns[parseInt(j.toString(), 10)].field] = e[parseInt(j.toString(), 10)].result;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n });\n }\n return promise;\n };\n ExportHelper.prototype.getHeaders = function (columns, isHideColumnInclude) {\n if (isHideColumnInclude) {\n this.hideColumnInclude = true;\n }\n else {\n this.hideColumnInclude = false;\n }\n this.colDepth = measureColumnDepth(columns);\n var rows = [];\n for (var i = 0; i < this.colDepth; i++) {\n rows[parseInt(i.toString(), 10)] = new Row({});\n rows[parseInt(i.toString(), 10)].cells = [];\n }\n rows = this.processColumns(rows);\n rows = this.processHeaderCells(rows, columns);\n return { rows: rows, columns: this.generateActualColumns(columns) };\n };\n ExportHelper.prototype.getConvertedWidth = function (input) {\n var value = parseFloat(input);\n return (input.indexOf('%') !== -1) ? (this.parent.element.getBoundingClientRect().width * value / 100) : value;\n };\n ExportHelper.prototype.generateActualColumns = function (columns, actualColumns) {\n if (actualColumns === void 0) { actualColumns = []; }\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var column = columns_2[_i];\n if (column.commands) {\n continue;\n }\n if (!column.columns) {\n if (column.visible || this.hideColumnInclude) {\n actualColumns.push(column);\n }\n }\n else {\n if (column.visible || this.hideColumnInclude) {\n var colSpan = this.getCellCount(column, 0);\n if (colSpan !== 0) {\n this.generateActualColumns(column.columns, actualColumns);\n }\n }\n }\n }\n return actualColumns;\n };\n ExportHelper.prototype.processHeaderCells = function (rows, cols) {\n var columns = cols;\n for (var i = 0; i < columns.length; i++) {\n if (!columns[parseInt(i.toString(), 10)].commands) {\n rows = this.appendGridCells(columns[parseInt(i.toString(), 10)], rows, 0);\n }\n }\n return rows;\n };\n ExportHelper.prototype.appendGridCells = function (cols, gridRows, index) {\n if (!cols.columns && (cols.visible !== false || this.hideColumnInclude) && !cols.commands) {\n gridRows[parseInt(index.toString(), 10)].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, index));\n }\n else if (cols.columns) {\n var colSpan = this.getCellCount(cols, 0);\n if (colSpan) {\n gridRows[parseInt(index.toString(), 10)].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols, colSpan: colSpan\n }));\n }\n var isIgnoreFirstCell = void 0;\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n if (cols.columns[parseInt(i.toString(), 10)].visible && !isIgnoreFirstCell) {\n isIgnoreFirstCell = true;\n }\n gridRows = this.appendGridCells(cols.columns[parseInt(i.toString(), 10)], gridRows, index + 1);\n }\n }\n return gridRows;\n };\n ExportHelper.prototype.generateCell = function (gridColumn, cellType, rowSpan, rowIndex) {\n var option = {\n 'visible': gridColumn.visible,\n 'isDataCell': cellType === CellType.Data,\n 'column': gridColumn,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'index': rowIndex\n };\n if (!option.rowSpan || option.rowSpan < 2) {\n delete option.rowSpan;\n }\n return new Cell(option);\n };\n ExportHelper.prototype.processColumns = function (rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n var gridObj = this.parent;\n var columnIndexes = [];\n if (gridObj.enableColumnVirtualization) {\n columnIndexes = gridObj.getColumnIndexesInView();\n }\n for (var i = 0, len = rows.length; i < len; i++) {\n if (gridObj.allowGrouping) {\n for (var j = 0, len_1 = gridObj.groupSettings.columns.length - 1; j < len_1; j++) {\n if (gridObj.enableColumnVirtualization && columnIndexes.indexOf(j) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.splice(0, 0, this.generateCell({}, CellType.HeaderIndent));\n }\n }\n }\n return rows;\n };\n ExportHelper.prototype.getCellCount = function (column, count) {\n if (column.columns) {\n for (var i = 0; i < column.columns.length; i++) {\n count = this.getCellCount(column.columns[parseInt(i.toString(), 10)], count);\n }\n }\n else {\n if (column.visible || this.hideColumnInclude) {\n count++;\n }\n }\n return count;\n };\n ExportHelper.prototype.checkAndExport = function (gridPool, globalResolve) {\n var bool = Object.keys(gridPool).some(function (key) {\n return !gridPool[\"\" + key];\n });\n if (!bool) {\n globalResolve();\n }\n };\n ExportHelper.prototype.failureHandler = function (gridPool, childGridObj, resolve) {\n var _this = this;\n return function () {\n gridPool[childGridObj.id] = true;\n _this.checkAndExport(gridPool, resolve);\n };\n };\n ExportHelper.prototype.createChildGrid = function (gObj, row, exportType, gridPool) {\n var childGridObj = new Grid(this.parent.detailRowModule.getGridModel(gObj, row, exportType));\n gObj.isPrinting = false;\n var parent = 'parentDetails';\n childGridObj[\"\" + parent] = {\n parentID: gObj.element.id,\n parentPrimaryKeys: gObj.getPrimaryKeyFieldNames(),\n parentKeyField: gObj.childGrid.queryString,\n parentKeyFieldValue: getValue(childGridObj.queryString, row.data),\n parentRowData: row.data\n };\n var exportId = getUid('child-grid');\n var element = createElement('div', {\n id: exportId, styles: 'display: none'\n });\n document.body.appendChild(element);\n childGridObj.id = exportId;\n gridPool[\"\" + exportId] = false;\n childGridObj.isExportGrid = true;\n return { childGrid: childGridObj, element: element };\n };\n ExportHelper.prototype.getGridExportColumns = function (columns) {\n var actualGridColumns = [];\n for (var i = 0, gridColumns = columns; i < gridColumns.length; i++) {\n if (gridColumns[parseInt(i.toString(), 10)].type !== 'checkbox') {\n actualGridColumns.push(gridColumns[parseInt(i.toString(), 10)]);\n }\n }\n return actualGridColumns;\n };\n /**\n * Gets the foreignkey data.\n *\n * @returns {ForeignKeyFormat} returns the foreignkey data\n * @hidden\n */\n ExportHelper.prototype.getForeignKeyData = function () {\n return this.foreignKeyData;\n };\n return ExportHelper;\n}());\nexport { ExportHelper };\n/**\n * @hidden\n * `ExportValueFormatter` for `PdfExport` & `ExcelExport`\n */\nvar ExportValueFormatter = /** @class */ (function () {\n function ExportValueFormatter(culture) {\n this.valueFormatter = new ValueFormatter(culture);\n this.internationalization = new Internationalization(culture);\n }\n ExportValueFormatter.prototype.returnFormattedValue = function (args, customFormat) {\n if (!isNullOrUndefined(args.value) && args.value) {\n return this.valueFormatter.getFormatFunction(customFormat)(args.value);\n }\n else {\n return '';\n }\n };\n /**\n * Used to format the exporting cell value\n *\n * @param {ExportHelperArgs} args - Specifies cell details.\n * @returns {string} returns formated value\n * @hidden\n */\n ExportValueFormatter.prototype.formatCellValue = function (args) {\n if (args.isForeignKey) {\n args.value = getValue(args.column.foreignKeyValue, getForeignData(args.column, {}, args.value)[0]);\n }\n if (args.column.type === 'number' && args.column.format !== undefined && args.column.format !== '') {\n if (typeof args.column.format === 'string') {\n args.column.format = { format: args.column.format };\n }\n return args.value || args.value === 0 ?\n this.internationalization.getNumberFormat(args.column.format)(args.value) : '';\n }\n else if (args.column.type === 'boolean' && args.value !== '') {\n return args.value ? 'true' : 'false';\n /* tslint:disable-next-line:max-line-length */\n }\n else if ((args.column.type === 'date' || args.column.type === 'dateonly' || args.column.type === 'datetime' || args.column.type === 'time') && args.column.format !== undefined) {\n if (typeof args.value === 'string') {\n args.value = new Date(args.value);\n }\n if (typeof args.column.format === 'string') {\n var format = void 0;\n var cFormat = args.column.format;\n if (args.column.type === 'date' || args.column.type === 'dateonly') {\n format = { type: 'date', skeleton: cFormat };\n }\n else if (args.column.type === 'time') {\n format = { type: 'time', skeleton: cFormat };\n }\n else {\n format = { type: 'dateTime', skeleton: cFormat };\n }\n return this.returnFormattedValue(args, format);\n }\n else {\n if (args.column.format instanceof Object && args.column.format.type === undefined) {\n return (args.value.toString());\n }\n else {\n var customFormat = void 0;\n if (args.column.type === 'date' || args.column.type === 'dateonly') {\n customFormat = {\n type: args.column.format.type,\n format: args.column.format.format, skeleton: args.column.format.skeleton\n };\n }\n else if (args.column.type === 'time') {\n customFormat = { type: 'time', format: args.column.format.format, skeleton: args.column.format.skeleton };\n }\n else {\n customFormat = { type: 'dateTime', format: args.column.format.format, skeleton: args.column.format.skeleton };\n }\n return this.returnFormattedValue(args, customFormat);\n }\n }\n }\n else {\n if ((!isNullOrUndefined(args.column.type) && !isNullOrUndefined(args.value)) || !isNullOrUndefined(args.value)) {\n return (args.value).toString();\n }\n else {\n return '';\n }\n }\n };\n return ExportValueFormatter;\n}());\nexport { ExportValueFormatter };\n","import * as events from '../base/constant';\nimport { PdfDocument, PdfGrid, PdfBorders, PdfPen, PdfPaddings, PdfGridLayoutFormat, PdfLayoutType, PdfLayoutBreakType } from '@syncfusion/ej2-pdf-export';\nimport { PdfStandardFont, PdfFontFamily, PdfFontStyle, PdfBitmap } from '@syncfusion/ej2-pdf-export';\nimport { PdfStringFormat, PdfTextAlignment, PdfColor, PdfSolidBrush, PdfTextWebLink } from '@syncfusion/ej2-pdf-export';\nimport { PdfVerticalAlignment, RectangleF, PdfPageTemplateElement } from '@syncfusion/ej2-pdf-export';\nimport { PointF, PdfPageNumberField, PdfCompositeField } from '@syncfusion/ej2-pdf-export';\nimport { PdfPageCountField, SizeF, PdfPageSettings, PdfPageOrientation } from '@syncfusion/ej2-pdf-export';\nimport { PdfTrueTypeFont } from '@syncfusion/ej2-pdf-export';\nimport { ExportHelper, ExportValueFormatter } from './export-helper';\nimport { Data } from '../actions/data';\nimport { SummaryModelGenerator, GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { compile, getEnumValue, isNullOrUndefined, detach } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { getValue } from '@syncfusion/ej2-base';\nimport { getUid, getPrintGridModel, measureColumnDepth, isExportColumns, updateColumnTypeForExportColumns, prepareColumns } from '../base/util';\n/**\n * `PDF Export` module is used to handle the exportToPDF action.\n *\n * @hidden\n */\nvar PdfExport = /** @class */ (function () {\n /**\n * Constructor for the Grid PDF Export module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function PdfExport(parent) {\n this.hideColumnInclude = false;\n this.currentViewData = false;\n this.customDataSource = false;\n this.isGrouping = false;\n this.headerOnPages = [];\n this.drawPosition = { xPosition: 0, yPosition: 0 };\n this.parent = parent;\n this.helper = new ExportHelper(parent);\n this.gridPool = {};\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n */\n PdfExport.prototype.getModuleName = function () {\n return 'PdfExport';\n };\n PdfExport.prototype.init = function (parent) {\n this.exportValueFormatter = new ExportValueFormatter(parent.locale);\n this.pdfDocument = undefined;\n this.hideColumnInclude = false;\n this.currentViewData = false;\n this.parent = parent;\n this.isGrouping = false;\n this.isExporting = true;\n parent.id = getUid('main-grid');\n this.gridPool[parent.id] = false;\n this.pdfPageSettings = new PdfPageSettings();\n };\n PdfExport.prototype.exportWithData = function (parent, pdfDoc, resolve, returnType, pdfExportProperties, isMultipleExport, reject) {\n var _this = this;\n this.init(parent);\n if (!isNullOrUndefined(pdfDoc)) {\n this.pdfDocument = pdfDoc;\n }\n else {\n this.pdfDocument = new PdfDocument();\n }\n this.processExport(parent, returnType, pdfExportProperties, isMultipleExport).then(function () {\n _this.isExporting = false;\n parent.trigger(events.pdfExportComplete, _this.isBlob ? { promise: _this.blobPromise } : { gridInstance: _this.parent });\n _this.parent.log('exporting_complete', _this.getModuleName());\n resolve(_this.pdfDocument);\n }).catch(function (e) {\n reject(_this.pdfDocument);\n _this.parent.trigger(events.actionFailure, e);\n });\n };\n /**\n * Used to map the input data\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {PdfExportProperties} pdfExportProperties - specifies the PdfExportProperties\n * @param {boolean} isMultipleExport - specifies the isMultipleExport\n * @param {Object} pdfDoc - specifies the pdfDoc\n * @param {boolean} isBlob - speciies whether it is Blob or not\n * @returns {void}\n */\n PdfExport.prototype.Map = function (parent, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n var _this = this;\n this.data = new Data(this.parent);\n this.isBlob = isBlob;\n this.gridPool = {};\n var query = pdfExportProperties && pdfExportProperties.query ? pdfExportProperties.query : new Query();\n if ((parent.childGrid || parent.detailTemplate) && !(!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.hierarchyExportMode === 'None')) {\n parent.expandedRows = getPrintGridModel(parent).expandedRows;\n }\n var args = {\n requestType: 'beforePdfExport', cancel: false,\n headerPageNumbers: [], gridDrawPosition: { xPosition: 0, yPosition: 0 }, generateQuery: false\n };\n var gridObject = 'gridObject';\n args[\"\" + gridObject] = parent;\n var can = 'cancel';\n var generateQuery = 'generateQuery';\n var header = 'headerPageNumbers';\n var drawPos = 'gridDrawPosition';\n parent.trigger(events.beforePdfExport, args);\n if (args[\"\" + can] === true) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n return resolve();\n });\n }\n if (isExportColumns(pdfExportProperties)) {\n updateColumnTypeForExportColumns(pdfExportProperties, parent);\n }\n if (args[\"\" + generateQuery]) {\n query = ExportHelper.getQuery(parent, this.data);\n }\n this.headerOnPages = args[\"\" + header];\n this.drawPosition = args[\"\" + drawPos];\n this.parent.log('exporting_begin', this.getModuleName());\n if (!isNullOrUndefined(pdfExportProperties) && !isNullOrUndefined(pdfExportProperties.dataSource)) {\n pdfExportProperties.dataSource = pdfExportProperties.dataSource instanceof DataManager ?\n pdfExportProperties.dataSource : new DataManager(pdfExportProperties.dataSource);\n if (isNullOrUndefined(query.isCountRequired) || parent.aggregates) {\n query.isCountRequired = true;\n }\n return new Promise(function (resolve, reject) {\n pdfExportProperties.dataSource.executeQuery(query).then(function (returnType) {\n _this.exportWithData(parent, pdfDoc, resolve, returnType, pdfExportProperties, isMultipleExport, reject);\n });\n });\n }\n else if (!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.exportType === 'CurrentPage') {\n return new Promise(function (resolve, reject) {\n _this.exportWithData(parent, pdfDoc, resolve, _this.parent.getCurrentViewRecords(), pdfExportProperties, isMultipleExport, reject);\n });\n }\n else {\n var allPromise_1 = [];\n allPromise_1.push(this.data.getData({}, ExportHelper.getQuery(parent, this.data)));\n allPromise_1.push(this.helper.getColumnData(parent));\n return new Promise(function (resolve, reject) {\n Promise.all(allPromise_1).then(function (e) {\n _this.init(parent);\n if (!isNullOrUndefined(pdfDoc)) {\n _this.pdfDocument = pdfDoc['document'];\n }\n else {\n _this.pdfDocument = new PdfDocument();\n }\n _this.processExport(parent, e[0], pdfExportProperties, isMultipleExport, pdfDoc).then(function (results) {\n _this.isExporting = false;\n parent.trigger(events.pdfExportComplete, _this.isBlob ? { promise: _this.blobPromise }\n : { gridInstance: _this.parent });\n _this.parent.log('exporting_complete', _this.getModuleName());\n if (pdfExportProperties && pdfExportProperties.multipleExport && pdfExportProperties.multipleExport.type === 'AppendToPage') {\n resolve(results);\n }\n else {\n resolve(_this.pdfDocument);\n }\n }).catch(function (e) {\n reject(_this.pdfDocument);\n _this.parent.trigger(events.actionFailure, e);\n });\n });\n });\n }\n };\n PdfExport.prototype.processExport = function (gObj, returnType, pdfExportProperties, isMultipleExport, pdfDoc) {\n var _this = this;\n var section = !(pdfDoc && pdfExportProperties && pdfExportProperties.multipleExport &&\n pdfExportProperties.multipleExport.type === 'AppendToPage') ? this.pdfDocument.sections.add() : null;\n var pdfGrid;\n this.processSectionExportProperties(section, pdfExportProperties);\n var pdfPage = pdfDoc && pdfExportProperties && pdfExportProperties.multipleExport &&\n pdfExportProperties.multipleExport.type === 'AppendToPage' ? pdfDoc['result'].page : section.pages.add();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n pdfGrid = _this.processGridExport(gObj, returnType, pdfExportProperties);\n _this.globalResolve = resolve;\n _this.gridPool[gObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n }).then(function () {\n // draw the grid\n var xPosition = _this.drawPosition['xPosition'];\n var yPosition;\n if (pdfDoc && pdfExportProperties && pdfExportProperties.multipleExport && pdfExportProperties.multipleExport.type === 'AppendToPage') {\n yPosition = pdfDoc['result'].bounds.y + pdfDoc['result'].bounds.height;\n if (pdfExportProperties.multipleExport.blankSpace) {\n yPosition = pdfDoc['result'].bounds.y + pdfDoc['result'].bounds.height + pdfExportProperties.multipleExport.blankSpace;\n }\n }\n else {\n yPosition = _this.drawPosition['yPosition'];\n }\n var layoutFormat = new PdfGridLayoutFormat();\n layoutFormat.layout = PdfLayoutType.Paginate;\n layoutFormat.break = PdfLayoutBreakType.FitPage;\n //Set pagination bounds of PDF grid\n layoutFormat.paginateBounds = new RectangleF(0, 0, pdfPage.getClientSize().width, pdfPage.getClientSize().height);\n var result = pdfGrid.draw(pdfPage, xPosition, yPosition, layoutFormat);\n _this.drawHeader(pdfExportProperties);\n if (!isMultipleExport) {\n // save the PDF\n if (!_this.isBlob) {\n if (!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.fileName) {\n _this.pdfDocument.save(pdfExportProperties.fileName);\n }\n else {\n _this.pdfDocument.save('Export.pdf');\n }\n }\n else {\n _this.blobPromise = _this.pdfDocument.save();\n }\n _this.pdfDocument.destroy();\n delete gObj.expandedRows;\n }\n if (pdfExportProperties && pdfExportProperties.multipleExport && pdfExportProperties.multipleExport.type === 'AppendToPage') {\n return { document: _this.pdfDocument, result: result };\n }\n else {\n return _this.pdfDocument;\n }\n });\n };\n PdfExport.prototype.processSectionExportProperties = function (section, pdfExportProperties) {\n if (!isNullOrUndefined(pdfExportProperties) && (!isNullOrUndefined(pdfExportProperties.pageOrientation)\n || !isNullOrUndefined(pdfExportProperties.pageSize))) {\n this.pdfPageSettings.orientation = (pdfExportProperties.pageOrientation === 'Landscape') ?\n PdfPageOrientation.Landscape : PdfPageOrientation.Portrait;\n this.pdfPageSettings.size = this.getPageSize(pdfExportProperties.pageSize);\n section.setPageSettings(this.pdfPageSettings);\n }\n return section;\n };\n PdfExport.prototype.processGridExport = function (gObj, returnType, pdfExportProperties) {\n var allowHorizontalOverflow = true;\n if (!isNullOrUndefined(pdfExportProperties)) {\n this.gridTheme = pdfExportProperties.theme;\n allowHorizontalOverflow = isNullOrUndefined(pdfExportProperties.allowHorizontalOverflow) ?\n true : pdfExportProperties.allowHorizontalOverflow;\n }\n var helper = new ExportHelper(gObj, this.helper.getForeignKeyData());\n var dataSource = this.processExportProperties(pdfExportProperties, returnType.result);\n var columns = isExportColumns(pdfExportProperties) ?\n prepareColumns(pdfExportProperties.columns, gObj.enableColumnVirtualization) :\n helper.getGridExportColumns(gObj.columns);\n columns = columns.filter(function (columns) { return isNullOrUndefined(columns.commands); });\n var isGrouping = false;\n if (gObj.groupSettings.columns.length) {\n isGrouping = true;\n }\n if ((gObj.childGrid || gObj.detailTemplate) && !isNullOrUndefined(pdfExportProperties)) {\n gObj.hierarchyPrintMode = pdfExportProperties.hierarchyExportMode || 'Expanded';\n }\n // create a grid\n var pdfGrid = new PdfGrid();\n // get header theme style\n var headerThemeStyle = this.getHeaderThemeStyle();\n var border = headerThemeStyle.border;\n var headerFont = headerThemeStyle.font;\n var headerBrush = headerThemeStyle.brush;\n var returnValue = helper.getHeaders(columns, this.hideColumnInclude);\n // Column collection with respect to the records in the grid\n var gridColumns = returnValue.columns;\n // process grid header content\n pdfGrid = this.processGridHeaders(gObj.groupSettings.columns.length, pdfGrid, returnValue.rows, gridColumns, border, headerFont, headerBrush, gObj, allowHorizontalOverflow, columns);\n // set alignment, width and type of the values of the column\n this.setColumnProperties(gridColumns, pdfGrid, helper, gObj, allowHorizontalOverflow);\n var captionThemeStyle = this.getSummaryCaptionThemeStyle();\n if (!isNullOrUndefined(dataSource) && dataSource.length) {\n if (isGrouping) {\n if (!isNullOrUndefined(captionThemeStyle.border)) {\n border = captionThemeStyle.border;\n }\n this.processGroupedRecords(pdfGrid, dataSource, gridColumns, gObj, border, 0, captionThemeStyle.font, captionThemeStyle.\n brush, captionThemeStyle.backgroundBrush, returnType, pdfExportProperties, helper, 0);\n }\n else {\n this.processRecord(border, gridColumns, gObj, dataSource, pdfGrid, 0, pdfExportProperties, helper, 0);\n }\n if (!isNullOrUndefined(returnType.aggregates)) {\n var summaryModel = new SummaryModelGenerator(gObj);\n var sRows = void 0;\n var column = summaryModel.getColumns();\n column = column.filter(function (col) { return isNullOrUndefined(col.commands) && col.type !== 'checkbox'; });\n if (gObj.aggregates.length && this.parent !== gObj) {\n gObj.aggregateModule.prepareSummaryInfo();\n }\n if (this.customDataSource) {\n sRows = summaryModel.generateRows(dataSource, returnType.aggregates, null, null, column);\n }\n else if (this.currentViewData) {\n sRows = summaryModel.generateRows(this.parent.getCurrentViewRecords(), returnType.aggregates);\n }\n else if (isGrouping) {\n sRows = summaryModel.generateRows(dataSource.records, returnType.aggregates);\n }\n else {\n sRows = summaryModel.generateRows(returnType.result, returnType.aggregates, null, null, column);\n }\n this.processAggregates(sRows, pdfGrid, border, captionThemeStyle.font, captionThemeStyle.brush, captionThemeStyle.backgroundBrush, false, null, null, null, isGrouping ? false : true);\n }\n }\n else {\n var row = pdfGrid.rows.addRow();\n row.style.setBorder(border);\n }\n return pdfGrid;\n };\n PdfExport.prototype.getSummaryCaptionThemeStyle = function () {\n if (!isNullOrUndefined(this.gridTheme) && !isNullOrUndefined(this.gridTheme.caption)) {\n var fontSize = !isNullOrUndefined(this.gridTheme.caption.fontSize) ? this.gridTheme.caption.fontSize : 9.75;\n var fontFamily = !isNullOrUndefined(this.gridTheme.caption.fontName) ?\n this.getFontFamily(this.gridTheme.caption.fontName) : PdfFontFamily.Helvetica;\n var fontStyle = this.getFontStyle(this.gridTheme.caption);\n var pdfColor = new PdfColor(0, 0, 0);\n if (!isNullOrUndefined(this.gridTheme.caption.fontColor)) {\n var penBrushColor = this.hexToRgb(this.gridTheme.caption.fontColor);\n pdfColor = new PdfColor(penBrushColor.r, penBrushColor.g, penBrushColor.b);\n }\n var borderCaption = this.gridTheme.caption.border ? this.getBorderStyle(this.gridTheme.caption.border) : null;\n var font = new PdfStandardFont(fontFamily, fontSize, fontStyle);\n if (!isNullOrUndefined(this.gridTheme.caption.font)) {\n font = this.gridTheme.caption.font;\n }\n return { font: font, brush: new PdfSolidBrush(pdfColor), backgroundBrush: new PdfSolidBrush(new PdfColor(246, 246, 246)),\n border: borderCaption };\n }\n else {\n //Material theme\n return { font: new PdfStandardFont(PdfFontFamily.Helvetica, 9.75), brush: new PdfSolidBrush(new PdfColor(0, 0, 0)),\n backgroundBrush: new PdfSolidBrush(new PdfColor(246, 246, 246)) };\n }\n };\n PdfExport.prototype.getGridPdfFont = function (args) {\n var fontFamily = 'fontFamily';\n var fontSize = 'fontSize';\n var fontStyle = 'fontStyle';\n var isTrueType = 'isTrueType';\n var style = 0;\n if (args.header && args.header.font) {\n var headerFont = args.header.font[\"\" + fontFamily];\n var headerSize = args.header.font[\"\" + fontSize];\n var headerStyle = args.header.font[\"\" + fontStyle];\n style = (isNullOrUndefined(PdfFontStyle[\"\" + headerStyle]) ? 0 : PdfFontStyle[\"\" + headerStyle]);\n if (args.header.font[\"\" + isTrueType]) {\n args.header.font = new PdfTrueTypeFont(headerFont, headerSize, style);\n }\n else {\n var fontFamily_1 = !isNullOrUndefined(headerFont) ?\n this.getFontFamily(headerFont) : PdfFontFamily.Helvetica;\n args.header.font = new PdfStandardFont(fontFamily_1, headerSize, style);\n }\n }\n if (args.caption && args.caption.font) {\n var captionFont = args.caption.font[\"\" + fontFamily];\n var captionSize = args.caption.font[\"\" + fontSize];\n var captionStyle = args.caption.font[\"\" + fontStyle];\n style = (isNullOrUndefined(PdfFontStyle[\"\" + captionStyle]) ? 0 : PdfFontStyle[\"\" + captionStyle]);\n if (args.caption.font[\"\" + isTrueType]) {\n args.caption.font = new PdfTrueTypeFont(captionFont, captionSize, style);\n }\n else {\n var fontFamily_2 = !isNullOrUndefined(captionFont) ?\n this.getFontFamily(captionFont) : PdfFontFamily.Helvetica;\n args.caption.font = new PdfStandardFont(fontFamily_2, captionSize, style);\n }\n }\n if (args.record && args.record.font) {\n var recordFont = args.record.font[\"\" + fontFamily];\n var recordSize = args.record.font[\"\" + fontSize];\n var recordStyle = args.record.font[\"\" + fontStyle];\n style = (isNullOrUndefined(PdfFontStyle[\"\" + recordStyle]) ? 0 : PdfFontStyle[\"\" + recordStyle]);\n if (args.record.font[\"\" + isTrueType]) {\n args.record.font = new PdfTrueTypeFont(recordFont, recordSize, style);\n }\n else {\n var fontFamily_3 = !isNullOrUndefined(recordFont) ?\n this.getFontFamily(recordFont) : PdfFontFamily.Helvetica;\n args.record.font = new PdfStandardFont(fontFamily_3, recordSize, style);\n }\n }\n };\n PdfExport.prototype.getHeaderThemeStyle = function () {\n var border = new PdfBorders();\n if (!isNullOrUndefined(this.gridTheme) && !isNullOrUndefined(this.gridTheme.header)) {\n var fontFamily = !isNullOrUndefined(this.gridTheme.header.fontName) ?\n this.getFontFamily(this.gridTheme.header.fontName) : PdfFontFamily.Helvetica;\n var fontStyle = this.getFontStyle(this.gridTheme.header);\n var fontSize = !isNullOrUndefined(this.gridTheme.header.fontSize) ? this.gridTheme.header.fontSize : 10.5;\n var pdfColor = new PdfColor();\n if (!isNullOrUndefined(this.gridTheme.header.fontColor)) {\n var penBrushColor = this.hexToRgb(this.gridTheme.header.fontColor);\n pdfColor = new PdfColor(penBrushColor.r, penBrushColor.g, penBrushColor.b);\n }\n var font = new PdfStandardFont(fontFamily, fontSize, fontStyle);\n if (!isNullOrUndefined(this.gridTheme.header.font)) {\n font = this.gridTheme.header.font;\n }\n return { border: this.getBorderStyle(this.gridTheme.header.border), font: font, brush: new PdfSolidBrush(pdfColor) };\n }\n else {\n //Material theme\n border.all = new PdfPen(new PdfColor(234, 234, 234));\n return { border: border, font: new PdfStandardFont(PdfFontFamily.Helvetica, 10.5),\n brush: new PdfSolidBrush(new PdfColor(102, 102, 102)) };\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.processGroupedRecords = function (pdfGrid, dataSource, gridColumns, gObj, border, level, font, brush, backgroundBrush, returnType, pdfExportProperties, helper, index) {\n var _this = this;\n var groupIndex = level;\n var _loop_1 = function (dataSourceItems) {\n var row = pdfGrid.rows.addRow();\n var col = gObj.getColumnByField(dataSourceItems.field);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var args = {\n value: dataSourceItems.key,\n column: col,\n style: undefined,\n isForeignKey: col.isForeignColumn()\n };\n var value = gObj.getColumnByField(dataSourceItems.field).headerText + ': ' + (!col.enableGroupByFormat ? this_1.exportValueFormatter.formatCellValue(args) : dataSourceItems.key) + ' - ' + dataSourceItems.count + (dataSource.count > 1 ? ' items' : ' item');\n var cArgs = { captionText: value, type: 'PDF', data: dataSourceItems, style: undefined };\n this_1.parent.trigger(events.exportGroupCaption, cArgs, function (cArgs) {\n row.cells.getCell(groupIndex).value = cArgs.captionText;\n row.cells.getCell(groupIndex).style.stringFormat = new PdfStringFormat(PdfTextAlignment.Left);\n row.style.setBorder(border);\n row.style.setFont(font);\n row.style.setTextBrush(brush);\n row.style.setBackgroundBrush(backgroundBrush);\n if (!isNullOrUndefined(cArgs.style)) {\n _this.processCellStyle(row.cells.getCell(groupIndex), cArgs);\n }\n var sRows;\n var captionSummaryModel = new CaptionSummaryModelGenerator(gObj);\n if (!isNullOrUndefined(dataSourceItems.items.records)) {\n sRows = captionSummaryModel.generateRows(dataSourceItems.items.records, dataSourceItems);\n }\n else {\n sRows = captionSummaryModel.generateRows(dataSourceItems.items, dataSourceItems);\n }\n if (!isNullOrUndefined(sRows) && sRows.length === 0) {\n row.cells.getCell(groupIndex + 1).columnSpan = pdfGrid.columns.count - (groupIndex + 1);\n }\n if (!isNullOrUndefined(dataSource.childLevels) && dataSource.childLevels > 0) {\n _this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, true, row, groupIndex, null, null, gObj);\n _this.processGroupedRecords(pdfGrid, dataSourceItems.items, gridColumns, gObj, border, (groupIndex + 1), font, brush, backgroundBrush, returnType, pdfExportProperties, helper, index);\n index = _this.rowIndex;\n var groupSummaryModel = new GroupSummaryModelGenerator(gObj);\n sRows = groupSummaryModel.generateRows(dataSourceItems.items.records, dataSourceItems);\n _this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, false);\n }\n else {\n _this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, true, row, groupIndex, null, null, gObj);\n index = _this.processRecord(border, gridColumns, gObj, dataSourceItems.items, pdfGrid, (groupIndex + 1), pdfExportProperties, helper, index);\n var groupSummaryModel = new GroupSummaryModelGenerator(gObj);\n sRows = groupSummaryModel.generateRows(dataSourceItems.items, dataSourceItems);\n var isGroupedFooter = true;\n _this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, false, null, null, isGroupedFooter, null, gObj);\n }\n });\n };\n var this_1 = this;\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var dataSourceItems = dataSource_1[_i];\n _loop_1(dataSourceItems);\n }\n };\n PdfExport.prototype.processGridHeaders = function (childLevels, pdfGrid, rows, gridColumn, border, headerFont, headerBrush, grid, allowHorizontalOverflow, eCols) {\n var _this = this;\n var columnCount = gridColumn.length + childLevels;\n var depth = measureColumnDepth(eCols);\n var cols = eCols;\n var index = 0;\n var rowNumber = [];\n for (var i = 0; i < rows.length; i++) {\n rowNumber[parseInt(i.toString(), 10)] = 0;\n }\n if (grid.groupSettings.columns.length) {\n index = grid.groupSettings.columns.length - 1;\n columnCount = columnCount - 1;\n }\n pdfGrid.columns.add(columnCount);\n pdfGrid.headers.add(rows.length);\n var applyTextAndSpan = function (rowIdx, colIdx, col, rowSpan, colSpan) {\n var gridHeader = pdfGrid.headers.getHeader(rowIdx);\n var pdfCell = gridHeader.cells.getCell(colIdx);\n var cell = rows[parseInt(rowIdx.toString(), 10)].cells[grid.groupSettings.columns.length ?\n colIdx : rowNumber[parseInt(rowIdx.toString(), 10)]];\n rowNumber[parseInt(rowIdx.toString(), 10)] = rowNumber[parseInt(rowIdx.toString(), 10)] + 1;\n if (!isNullOrUndefined(col.headerTextAlign)) {\n pdfCell.style.stringFormat = _this.getHorizontalAlignment(col.headerTextAlign);\n }\n if (rowSpan > 0) {\n pdfCell.rowSpan = rowSpan;\n pdfCell.style.stringFormat = _this.getVerticalAlignment('Bottom', pdfCell.style.stringFormat, col.textAlign);\n }\n if (colSpan > 0) {\n pdfCell.columnSpan = colSpan;\n }\n gridHeader.style.setBorder(border);\n gridHeader.style.setFont(headerFont);\n gridHeader.style.setTextBrush(headerBrush);\n pdfCell.value = col.headerText;\n if (!isNullOrUndefined(cell) && (cell.cellType === CellType.HeaderIndent || cell.cellType === CellType.DetailHeader)) {\n pdfCell.value = '';\n pdfCell.width = 20;\n }\n var args = {\n cell: pdfCell,\n gridCell: cell,\n style: pdfCell.style\n };\n _this.parent.trigger(events.pdfHeaderQueryCellInfo, args);\n var evtArgs = args;\n var setCellBorder = args.style.borders;\n var setCellFont = args.style.font;\n var setHeaderBrush = args.style.textBrush;\n if (!isNullOrUndefined(setCellBorder)) {\n gridHeader.style.setBorder(setCellBorder);\n }\n if (!isNullOrUndefined(setCellFont)) {\n gridHeader.style.setFont(setCellFont);\n }\n if (!isNullOrUndefined(setHeaderBrush)) {\n gridHeader.style.setTextBrush(setHeaderBrush);\n }\n if (!isNullOrUndefined(evtArgs.style.verticalAlignment)) {\n pdfCell.style.stringFormat = _this.getVerticalAlignment(evtArgs.style.verticalAlignment, pdfCell.style.stringFormat);\n }\n if (!isNullOrUndefined(evtArgs.image)) {\n pdfCell.value = new PdfBitmap(evtArgs.image.base64);\n }\n if (!isNullOrUndefined(evtArgs.hyperLink)) {\n pdfCell.value = _this.setHyperLink(evtArgs);\n }\n };\n var recuHeader = function (cols, depth, spanCnt, colIndex, rowIndex, isRoot) {\n var cidx = 0;\n for (var i = 0; i < cols.length; i++) {\n if (isRoot) {\n cidx = cidx + spanCnt + (i === 0 ? 0 : -1);\n colIndex = cidx;\n spanCnt = 0;\n }\n if (!isRoot && !cols[parseInt(i.toString(), 10)].visible) {\n colIndex = colIndex - 1;\n }\n if (cols[parseInt(i.toString(), 10)].columns && cols[parseInt(i.toString(), 10)].columns.length) {\n var newSpanCnt = recuHeader(cols[parseInt(i.toString(), 10)]\n .columns, depth - 1, 0, i + colIndex, rowIndex + 1, false);\n applyTextAndSpan(rowIndex, i + colIndex + index, cols[parseInt(i.toString(), 10)], 0, newSpanCnt);\n spanCnt = spanCnt + newSpanCnt;\n colIndex = colIndex + newSpanCnt - 1;\n }\n else if (cols[parseInt(i.toString(), 10)].visible || _this.hideColumnInclude) {\n spanCnt++;\n applyTextAndSpan(rowIndex, i + colIndex + index, cols[parseInt(i.toString(), 10)], depth, 0);\n }\n }\n return spanCnt;\n };\n recuHeader(cols, depth, 0, 0, 0, true);\n if (pdfGrid.columns.count >= 6 && allowHorizontalOverflow) {\n pdfGrid.style.allowHorizontalOverflow = true;\n }\n return pdfGrid;\n };\n PdfExport.prototype.processExportProperties = function (pdfExportProperties, dataSource) {\n if (!isNullOrUndefined(pdfExportProperties)) {\n if (!isNullOrUndefined(pdfExportProperties.theme)) {\n this.gridTheme = pdfExportProperties.theme;\n }\n var clientSize = this.pdfPageSettings.size;\n this.drawHeader(pdfExportProperties);\n if (!isNullOrUndefined(pdfExportProperties.footer)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var footer = pdfExportProperties.footer;\n var position = new PointF(0, ((clientSize.width - 80) - (footer.fromBottom * 0.75)));\n var size = new SizeF((clientSize.width - 80), (footer.height * 0.75));\n var bounds = new RectangleF(position, size);\n this.pdfDocument.template.bottom = this.drawPageTemplate(new PdfPageTemplateElement(bounds), footer);\n }\n if (!isNullOrUndefined(pdfExportProperties.includeHiddenColumn) && !this.isGrouping) {\n this.hideColumnInclude = pdfExportProperties.includeHiddenColumn;\n }\n if (!isNullOrUndefined(pdfExportProperties.dataSource)) {\n this.customDataSource = true;\n this.currentViewData = false;\n }\n else if (!isNullOrUndefined(pdfExportProperties.exportType)) {\n if (pdfExportProperties.exportType === 'CurrentPage') {\n dataSource = this.parent.currentViewData;\n this.currentViewData = true;\n this.customDataSource = false;\n }\n else {\n this.currentViewData = false;\n this.customDataSource = false;\n }\n }\n else {\n this.currentViewData = false;\n this.customDataSource = false;\n }\n }\n else {\n this.currentViewData = false;\n this.customDataSource = false;\n }\n return dataSource;\n };\n PdfExport.prototype.drawHeader = function (pdfExportProperties) {\n var _this = this;\n var clientSize = this.pdfPageSettings.size;\n if (!isNullOrUndefined(pdfExportProperties) && !isNullOrUndefined(pdfExportProperties.header)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var header = pdfExportProperties.header;\n var position = new PointF(0, header.fromTop);\n var size = new SizeF((clientSize.width - 80), (header.height * 0.75));\n var bounds = new RectangleF(position, size);\n if (!this.headerOnPages.length) {\n this.pdfDocument.template.top = this.drawPageTemplate(new PdfPageTemplateElement(bounds), header);\n }\n else {\n var headerTemplate_1 = this.drawPageTemplate(new PdfPageTemplateElement(bounds), header);\n this.headerOnPages.filter(function (index) {\n if (index - 1 >= 0 && index - 1 <= _this.pdfDocument.pages.count - 1) {\n _this.pdfDocument.pages.getPageByIndex(index - 1).graphics\n .drawPdfTemplate(headerTemplate_1.template, new PointF(0, 0));\n }\n });\n }\n }\n };\n PdfExport.prototype.drawPageTemplate = function (template, element) {\n for (var _i = 0, _a = element.contents; _i < _a.length; _i++) {\n var content = _a[_i];\n this.processContentValidation(content);\n switch (content.type) {\n case 'Text':\n if (content.value === '' || content.value === undefined || content.value === null || typeof content.value !== 'string') {\n throw new Error('please enter the valid input value in text content...');\n }\n this.drawText(template, content);\n break;\n case 'PageNumber':\n this.drawPageNumber(template, content);\n break;\n case 'Image':\n if (content.src === undefined || content.src === null || content.src === '') {\n throw new Error('please enter the valid base64 string in image content...');\n }\n this.drawImage(template, content);\n break;\n case 'Line':\n this.drawLine(template, content);\n break;\n default:\n throw new Error('Please set valid content type...');\n }\n }\n return template;\n };\n PdfExport.prototype.processContentValidation = function (content) {\n if (content.type === undefined || content.type === null) {\n throw new Error('please set valid content type...');\n }\n else {\n if (content.type === 'Line') {\n if (content.points === undefined || content.points === null) {\n throw new Error('please enter valid points in ' + content.type + ' content...');\n }\n else {\n if (content.points.x1 === undefined || content.points.x1 === null || typeof content.points.x1 !== 'number') {\n throw new Error('please enter valid x1 co-ordinate in ' + content.type + ' points...');\n }\n if (content.points.y1 === undefined || content.points.y1 === null || typeof content.points.y1 !== 'number') {\n throw new Error('please enter valid y1 co-ordinate in ' + content.type + ' points...');\n }\n if (content.points.x2 === undefined || content.points.x2 === null || typeof content.points.x2 !== 'number') {\n throw new Error('please enter valid x2 co-ordinate in ' + content.type + ' points...');\n }\n if (content.points.y2 === undefined || content.points.y2 === null || typeof content.points.y2 !== 'number') {\n throw new Error('please enter valid y2 co-ordinate in ' + content.type + ' points...');\n }\n }\n }\n else {\n if (content.position === undefined || content.position === null) {\n throw new Error('please enter valid position in ' + content.type + ' content...');\n }\n else {\n if (content.position.x === undefined || content.position.x === null || typeof content.position.x !== 'number') {\n throw new Error('please enter valid x co-ordinate in ' + content.type + ' position...');\n }\n if (content.position.y === undefined || content.position.y === null || typeof content.position.y !== 'number') {\n throw new Error('please enter valid y co-ordinate in ' + content.type + ' position...');\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.drawText = function (pageTemplate, content) {\n var font = this.getFont(content);\n var brush = this.getBrushFromContent(content);\n var pen = null;\n if (!isNullOrUndefined(content.style.textPenColor)) {\n var penColor = this.hexToRgb(content.style.textPenColor);\n pen = new PdfPen(new PdfColor(penColor.r, penColor.g, penColor.b));\n }\n if (brush == null && pen == null) {\n brush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n }\n var value = content.value.toString();\n var x = content.position.x * 0.75;\n var y = content.position.y * 0.75;\n var format = new PdfStringFormat();\n if (!isNullOrUndefined(content.style.stringFormat)) {\n format.alignment = content.style.stringFormat.alignment;\n }\n var result = this.setContentFormat(content, format);\n if (result !== null && !isNullOrUndefined(result.format) && !isNullOrUndefined(result.size)) {\n pageTemplate.graphics.drawString(value, font, pen, brush, x, y, result.size.width, result.size.height, result.format);\n }\n else {\n pageTemplate.graphics.drawString(value, font, pen, brush, x, y, format);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.drawPageNumber = function (documentHeader, content) {\n var font = this.getFont(content);\n var brush = null;\n if (!isNullOrUndefined(content.style.textBrushColor)) {\n var brushColor = this.hexToRgb(content.style.textBrushColor);\n brush = new PdfSolidBrush(new PdfColor(brushColor.r, brushColor.g, brushColor.b));\n }\n else {\n brush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n }\n var pageNumber = new PdfPageNumberField(font, brush);\n pageNumber.numberStyle = this.getPageNumberStyle(content.pageNumberType);\n var compositeField;\n var format;\n if (!isNullOrUndefined(content.format)) {\n var total = '$total';\n var current = '$current';\n if (content.format.indexOf(total) !== -1 && content.format.indexOf(current) !== -1) {\n var pageCount = new PdfPageCountField(font);\n pageCount.numberStyle = this.getPageNumberStyle(content.pageNumberType);\n if (content.format.indexOf(total) > content.format.indexOf(current)) {\n format = content.format.replace(current, '0');\n format = format.replace(total, '1');\n }\n else {\n format = content.format.replace(current, '1');\n format = format.replace(total, '0');\n }\n compositeField = new PdfCompositeField(font, brush, format, pageNumber, pageCount);\n }\n else if (content.format.indexOf(current) !== -1 && content.format.indexOf(total) === -1) {\n format = content.format.replace(current, '0');\n compositeField = new PdfCompositeField(font, brush, format, pageNumber);\n }\n else {\n var pageCount = new PdfPageCountField(font);\n format = content.format.replace(total, '0');\n compositeField = new PdfCompositeField(font, brush, format, pageCount);\n }\n }\n else {\n format = '{0}';\n compositeField = new PdfCompositeField(font, brush, format, pageNumber);\n }\n var x = content.position.x * 0.75;\n var y = content.position.y * 0.75;\n var result = this.setContentFormat(content, compositeField.stringFormat);\n if (result !== null && !isNullOrUndefined(result.format) && !isNullOrUndefined(result.size)) {\n compositeField.stringFormat = result.format;\n compositeField.bounds = new RectangleF(x, y, result.size.width, result.size.height);\n }\n compositeField.draw(documentHeader.graphics, x, y);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.drawImage = function (documentHeader, content) {\n var x = content.position.x * 0.75;\n var y = content.position.y * 0.75;\n var width = (!isNullOrUndefined(content.size)) ? (content.size.width * 0.75) : undefined;\n var height = (!isNullOrUndefined(content.size)) ? (content.size.height * 0.75) : undefined;\n var image = new PdfBitmap(content.src);\n if (!isNullOrUndefined(width)) {\n documentHeader.graphics.drawImage(image, x, y, width, height);\n }\n else {\n documentHeader.graphics.drawImage(image, x, y);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.drawLine = function (documentHeader, content) {\n var x1 = content.points.x1 * 0.75;\n var y1 = content.points.y1 * 0.75;\n var x2 = content.points.x2 * 0.75;\n var y2 = content.points.y2 * 0.75;\n var pen = this.getPenFromContent(content);\n if (!isNullOrUndefined(content.style) && content.style !== null) {\n if (!isNullOrUndefined(content.style.penSize) && content.style.penSize !== null && typeof content.style.penSize === 'number') {\n pen.width = content.style.penSize * 0.75;\n }\n pen.dashStyle = this.getDashStyle(content.style.dashStyle);\n }\n documentHeader.graphics.drawLine(pen, x1, y1, x2, y2);\n };\n PdfExport.prototype.processAggregates = function (sRows, pdfGrid, border, font, brush, backgroundBrush, isCaption, captionRow, groupIndex, isGroupedFooter, isAggregate, gObj) {\n for (var _i = 0, sRows_1 = sRows; _i < sRows_1.length; _i++) {\n var row = sRows_1[_i];\n var leastCaptionSummaryIndex = -1;\n var index = 0;\n var isEmpty = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value = [];\n var aggIdx = isAggregate ? 0 : 1;\n var gridRow = void 0;\n if (isNullOrUndefined(captionRow)) {\n gridRow = pdfGrid.rows.addRow();\n gridRow.style.setBorder(border);\n gridRow.style.setFont(font);\n gridRow.style.setTextBrush(brush);\n gridRow.style.setBackgroundBrush(backgroundBrush);\n }\n for (var i = 0; i < pdfGrid.columns.count + aggIdx; i++) {\n var cell = row.cells[parseInt(index.toString(), 10)];\n if (cell.cellType === CellType.DetailFooterIntent) {\n i--;\n index++;\n continue;\n }\n if (!this.hideColumnInclude) {\n while (cell.visible === undefined) {\n if (cell.cellType === CellType.DetailFooterIntent) {\n continue;\n }\n if (!isNullOrUndefined(captionRow)) {\n if (!isNullOrUndefined(captionRow.cells.getCell(i).value)) {\n value.push(captionRow.cells.getCell(i).value);\n isEmpty = false;\n if (!isCaption) {\n i += 1;\n }\n }\n else {\n value.push('');\n }\n }\n else {\n value.push('');\n }\n i += 1;\n index = index + 1;\n cell = row.cells[parseInt(index.toString(), 10)];\n }\n while (!isNullOrUndefined(cell.visible) && !cell.visible) {\n index = index + 1;\n cell = row.cells[parseInt(index.toString(), 10)];\n }\n }\n if (cell.isDataCell) {\n var templateFn = {};\n var footerTemplate = !isNullOrUndefined(cell.column.footerTemplate);\n var groupFooterTemplate = !isNullOrUndefined(cell.column.groupFooterTemplate);\n var groupCaptionTemplate = !isNullOrUndefined(cell.column.groupCaptionTemplate);\n if (footerTemplate || groupCaptionTemplate || groupFooterTemplate) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var result = this.getTemplateFunction(templateFn, i, leastCaptionSummaryIndex, cell);\n templateFn = result.templateFunction;\n leastCaptionSummaryIndex = result.leastCaptionSummaryIndex;\n var txt = void 0;\n var data = row.data[cell.column.field ? cell.column.field : cell.column.columnName];\n if ((this.parent.isReact || this.parent.isVue || this.parent.isVue3 || this.parent.isAngular) &&\n !(typeof cell.column.footerTemplate === 'string' || typeof cell.column.groupFooterTemplate === 'string' || typeof cell.column.groupCaptionTemplate === 'string')) {\n txt = data[(cell.column.type)];\n txt = !isNullOrUndefined(txt) ? txt : '';\n }\n else {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data, this.parent));\n txt = !isNullOrUndefined(txt[0]) ? txt[0].textContent : '';\n }\n isEmpty = false;\n var args = {\n row: row,\n type: footerTemplate ? 'Footer' : groupFooterTemplate ? 'GroupFooter' : 'GroupCaption',\n style: isNullOrUndefined(captionRow) ? gridRow.cells : captionRow.cells,\n cell: cell,\n value: txt\n };\n this.parent.trigger(events.pdfAggregateQueryCellInfo, args);\n value.push(args.value);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var result = this.getSummaryWithoutTemplate(row.data[cell.column.field]);\n if (!isNullOrUndefined(result)) {\n value.push(result);\n }\n }\n }\n else {\n value.push('');\n }\n if (isEmpty && value[parseInt(i.toString(), 10)] !== '' && !isNullOrUndefined(value[parseInt(i.toString(), 10)]) && value[parseInt(i.toString(), 10)] !== null) {\n isEmpty = false;\n }\n index += 1;\n }\n if (!isAggregate) {\n if (!isCaption) {\n value.splice(0, 1);\n }\n else {\n for (var i = gObj.groupSettings.columns.length; i < value.length - 1; i++) {\n value[parseInt(i.toString(), 10)] = value[i + 1];\n value[i + 1] = value[i + 2] ? value[i + 2] : '';\n }\n }\n }\n if (!isEmpty) {\n if (!isCaption) {\n for (var i = 0; i < pdfGrid.columns.count; i++) {\n gridRow.cells.getCell(i).value = value[parseInt(i.toString(), 10)].toString();\n }\n }\n else {\n for (var i = 0; i < pdfGrid.columns.count; i++) {\n captionRow.cells.getCell(i).value = value[parseInt(i.toString(), 10)].toString();\n if (i === groupIndex && leastCaptionSummaryIndex !== -1 && leastCaptionSummaryIndex !== 1) {\n captionRow.cells.getCell(i).columnSpan = (leastCaptionSummaryIndex - 1) - groupIndex;\n }\n else if (i === groupIndex && leastCaptionSummaryIndex === -1) {\n captionRow.cells.getCell(i).columnSpan = pdfGrid.columns.count - groupIndex;\n }\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.getTemplateFunction = function (templateFn, index, leastCaptionSummaryIndex, cell) {\n if (!isNullOrUndefined(cell.column.footerTemplate) && cell.cellType === CellType.Summary) {\n templateFn[getEnumValue(CellType, CellType.Summary)] = compile(cell.column.footerTemplate);\n }\n else if (!isNullOrUndefined(cell.column.groupCaptionTemplate)) {\n if (leastCaptionSummaryIndex === -1) {\n leastCaptionSummaryIndex = index;\n }\n templateFn[getEnumValue(CellType, CellType.CaptionSummary)] = compile(cell.column.groupCaptionTemplate);\n }\n else {\n templateFn[getEnumValue(CellType, CellType.GroupSummary)] = compile(cell.column.groupFooterTemplate);\n }\n return { templateFunction: templateFn, leastCaptionSummaryIndex: leastCaptionSummaryIndex };\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.getSummaryWithoutTemplate = function (data) {\n if (!isNullOrUndefined(data.Sum)) {\n return data.Sum;\n }\n else if (!isNullOrUndefined(data.Average)) {\n return data.Average;\n }\n else if (!isNullOrUndefined(data.Max)) {\n return data.Max;\n }\n else if (!isNullOrUndefined(data.Min)) {\n return data.Min;\n }\n else if (!isNullOrUndefined(data.Count)) {\n return data.Count;\n }\n else if (!isNullOrUndefined(data.TrueCount)) {\n return data.TrueCount;\n }\n else if (!isNullOrUndefined(data.FalseCount)) {\n return data.FalseCount;\n }\n else if (!isNullOrUndefined(data.Custom)) {\n return data.Custom;\n }\n };\n /**\n * Set alignment, width and type of the values of the column\n *\n * @param {Column[]} gridColumns - specifies the grid column\n * @param {PdfGrid} pdfGrid - specifies the pdfGrid\n * @param {ExportHelper} helper - specifies the helper\n * @param {IGrid} gObj - specifies the IGrid\n * @param {boolean} allowHorizontalOverflow - specifies the allowHorizontalOverflow\n * @returns {void}\n */\n PdfExport.prototype.setColumnProperties = function (gridColumns, pdfGrid, helper, gObj, allowHorizontalOverflow) {\n var startIndex = gObj.groupSettings.columns.length ? gObj.groupSettings.columns.length - 1 : 0;\n for (var i = 0; i < startIndex; i++) {\n pdfGrid.columns.getColumn(i).width = 20;\n }\n for (var i = 0; i < gridColumns.length; i++) {\n if (!isNullOrUndefined(gridColumns[parseInt(i.toString(), 10)].textAlign)) {\n pdfGrid.columns.getColumn(i + startIndex).format = this\n .getHorizontalAlignment(gridColumns[parseInt(i.toString(), 10)].textAlign);\n }\n // Need to add width consideration with % value\n if (pdfGrid.style.allowHorizontalOverflow && !isNullOrUndefined(gridColumns[parseInt(i.toString(), 10)].width)\n && allowHorizontalOverflow) {\n pdfGrid.columns.getColumn(i + startIndex).width = typeof gridColumns[parseInt(i.toString(), 10)].width === 'number' ?\n gridColumns[parseInt(i.toString(), 10)].width * 0.75 :\n helper.getConvertedWidth(gridColumns[parseInt(i.toString(), 10)].width) * 0.75;\n }\n }\n };\n /**\n * set default style properties of each rows in exporting grid\n *\n * @param {PdfGridRow} row - specifies the PdfGridRow\n * @param {PdfBorders} border - specifies the PdfBorders\n * @returns {PdfGrid} returns the pdfgrid\n * @private\n */\n PdfExport.prototype.setRecordThemeStyle = function (row, border) {\n if (!isNullOrUndefined(this.gridTheme) && !isNullOrUndefined(this.gridTheme.record)) {\n var fontFamily = !isNullOrUndefined(this.gridTheme.record.fontName) ?\n this.getFontFamily(this.gridTheme.record.fontName) : PdfFontFamily.Helvetica;\n var fontSize = !isNullOrUndefined(this.gridTheme.record.fontSize) ? this.gridTheme.record.fontSize : 9.75;\n var fontStyle = this.getFontStyle(this.gridTheme.record);\n var font = new PdfStandardFont(fontFamily, fontSize, fontStyle);\n if (!isNullOrUndefined(this.gridTheme.record.font)) {\n font = this.gridTheme.record.font;\n }\n row.style.setFont(font);\n var pdfColor = new PdfColor();\n if (!isNullOrUndefined(this.gridTheme.record.fontColor)) {\n var penBrushColor = this.hexToRgb(this.gridTheme.record.fontColor);\n pdfColor = new PdfColor(penBrushColor.r, penBrushColor.g, penBrushColor.b);\n }\n row.style.setTextBrush(new PdfSolidBrush(pdfColor));\n }\n else {\n row.style.setTextBrush(new PdfSolidBrush(new PdfColor(0, 0, 0)));\n }\n var borderRecord = this.gridTheme && this.gridTheme.record &&\n this.gridTheme.record.border ? this.getBorderStyle(this.gridTheme.record.border) : border;\n row.style.setBorder(borderRecord);\n return row;\n };\n /**\n * generate the formatted cell values\n *\n * @param {PdfBorders} border - specifies the border\n * @param {Column[]} columns - specifies the columns\n * @param {IGrid} gObj - specifies the IGrid\n * @param {Object[]} dataSource - specifies the datasource\n * @param {PdfGrid} pdfGrid - specifies the pdfGrid\n * @param {number} startIndex - specifies the startindex\n * @param {PdfExportProperties} pdfExportProperties - specifies the pdfExportProperties\n * @param {ExportHelper} helper - specifies the helper\n * @param {number} rowIndex - specifies the rowIndex\n * @returns {number} returns the number of records\n * @private\n */\n PdfExport.prototype.processRecord = function (border, columns, gObj, dataSource, pdfGrid, startIndex, pdfExportProperties, helper, rowIndex) {\n var rows = helper.getGridRowModel(columns, dataSource, gObj, rowIndex);\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n rowIndex++;\n this.rowIndex = rowIndex;\n // create a new row and set default style properties\n var gridRow = this.setRecordThemeStyle(pdfGrid.rows.addRow(), border);\n var cellLength = row.cells.length;\n for (var j = 0; j < cellLength; j++) {\n var gridCell = row.cells[parseInt(j.toString(), 10)];\n if (gridCell.cellType !== CellType.Data) {\n continue;\n }\n var column = gridCell.column;\n var field = column.field;\n var cellValue = !isNullOrUndefined(field) ? column.valueAccessor(field, row.data, column) : '';\n var value = !isNullOrUndefined(cellValue) ? cellValue : '';\n var foreignKeyData = void 0;\n if (column.isForeignColumn && column.isForeignColumn()) {\n foreignKeyData = helper.getFData(value, column);\n value = getValue(column.foreignKeyValue, foreignKeyData);\n }\n var data = row.data;\n var cell = gridRow.cells.getCell(j);\n var args = {\n data: data,\n value: value,\n column: column,\n style: undefined,\n colSpan: 1,\n cell: cell\n };\n args.value = args.column.type === 'boolean' && typeof args.value === 'string' ? args.value :\n this.exportValueFormatter.formatCellValue(args);\n this.parent.trigger(events.pdfQueryCellInfo, args);\n if (!isNullOrUndefined(args.image)) {\n args.value = new PdfBitmap(args.image.base64);\n args.value.height = args.image.height || args.value.height;\n args.value.width = args.image.width || args.value.width;\n }\n cell.value = args.value;\n if (!isNullOrUndefined(args.hyperLink)) {\n cell.value = this.setHyperLink(args);\n }\n if (!isNullOrUndefined(args.style)) {\n this.processCellStyle(cell, args);\n }\n if (args.colSpan > 1) {\n if ((j + 1 + args.colSpan) > gridRow.cells.count) {\n args.colSpan = gridRow.cells.count - (j + 1);\n }\n cell.columnSpan = args.colSpan;\n for (var i = 1; i < cell.columnSpan; i++) {\n var spanCell = gridRow.cells.getCell(j + i);\n spanCell.value = '';\n }\n j += (args.colSpan - 1);\n }\n }\n if (row.isExpand) {\n var gridRow_1 = this.setRecordThemeStyle(pdfGrid.rows.addRow(), border);\n var startIndexVal = (this.parent.childGrid || this.parent.detailTemplate) ? 0 : startIndex;\n var cell = gridRow_1.cells.getCell(startIndexVal);\n cell.columnSpan = gridRow_1.cells.count - (startIndexVal);\n cell.style.cellPadding = new PdfPaddings(10, 10, 10, 10);\n if (this.parent.childGrid) {\n gObj.isPrinting = true;\n var exportType = (!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.exportType) ?\n pdfExportProperties.exportType : 'AllPages';\n var returnValue = this.helper.createChildGrid(gObj, row, exportType, this.gridPool);\n var childGridObj = returnValue.childGrid;\n var element = returnValue.element;\n childGridObj.actionFailure =\n helper.failureHandler(this.gridPool, childGridObj, this.globalResolve);\n var args = {\n childGrid: childGridObj, row: row, cell: cell, exportProperties: pdfExportProperties\n };\n this.parent.trigger(events.exportDetailDataBound, args);\n childGridObj.beforeDataBound = this.childGridCell(cell, childGridObj, pdfExportProperties);\n childGridObj.appendTo(element);\n }\n else if (this.parent.detailTemplate) {\n var args = { parentRow: row, row: gridRow_1, value: {}, action: 'pdfexport', gridInstance: gObj };\n this.parent.trigger(events.exportDetailTemplate, args);\n cell.value = this.processDetailTemplate(args);\n }\n }\n this.parent.notify(events.exportRowDataBound, { type: 'pdf', rowObj: row });\n }\n return rowIndex;\n };\n PdfExport.prototype.processDetailTemplate = function (templateData) {\n var _this = this;\n if (templateData.value.columnHeader || templateData.value.rows) {\n // create a grid\n var pdfGrid = new PdfGrid();\n // get header theme style\n var headerThemeStyle = this.getHeaderThemeStyle();\n var border_1 = headerThemeStyle.border;\n var headerFont_1 = headerThemeStyle.font;\n var headerBrush_1 = headerThemeStyle.brush;\n var processRow = function (row, gridRow, isHeader) {\n if (isHeader) {\n gridRow.style.setBorder(border_1);\n gridRow.style.setFont(headerFont_1);\n gridRow.style.setTextBrush(headerBrush_1);\n }\n for (var j = 0; j < row.cells.length; j++) {\n var currentCell = row.cells[parseInt(j.toString(), 10)];\n var pdfCell = gridRow.cells.getCell(currentCell.index ? currentCell.index : j);\n if (currentCell.rowSpan > 0) {\n pdfCell.rowSpan = currentCell.rowSpan;\n }\n if (currentCell.colSpan > 0) {\n pdfCell.columnSpan = currentCell.colSpan;\n }\n pdfCell.value = currentCell.value;\n if (!isNullOrUndefined(currentCell.image)) {\n pdfCell.value = new PdfBitmap(currentCell.image.base64);\n pdfCell.value.height = currentCell.image.height;\n pdfCell.value.width = currentCell.image.width;\n }\n if (!isNullOrUndefined(currentCell.hyperLink)) {\n pdfCell.value = _this.setHyperLink(currentCell);\n }\n if (!isNullOrUndefined(currentCell.style)) {\n var cellStyle = {\n style: {\n backgroundColor: currentCell.style.backColor,\n textAlignment: currentCell.style.pdfTextAlignment,\n verticalAlignment: currentCell.style.pdfVerticalAlignment,\n textBrushColor: currentCell.style.fontColor,\n textPenColor: currentCell.style.pdfTextPenColor,\n fontFamily: currentCell.style.pdfFontFamily,\n fontSize: currentCell.style.fontSize,\n bold: currentCell.style.bold,\n italic: currentCell.style.italic,\n underline: currentCell.style.underline,\n strikeout: currentCell.style.strikeThrough,\n border: currentCell.style.pdfBorder,\n paragraphIndent: currentCell.style.pdfParagraphIndent,\n cellPadding: currentCell.style.pdfCellPadding\n }\n };\n _this.processCellStyle(pdfCell, cellStyle);\n }\n }\n };\n if (templateData.value.columnCount) {\n pdfGrid.columns.add(templateData.value.columnCount);\n }\n else {\n if (templateData.value.columnHeader && templateData.value.columnHeader.length) {\n pdfGrid.columns.add(templateData.value.columnHeader[0].cells.length);\n }\n else if (templateData.value.rows && templateData.value.rows.length) {\n pdfGrid.columns.add(templateData.value.rows[0].cells.length);\n }\n }\n if (templateData.value.columnHeader) {\n pdfGrid.headers.add(templateData.value.columnHeader.length);\n for (var i = 0; i < templateData.value.columnHeader.length; i++) {\n var gridHeader = pdfGrid.headers.getHeader(parseInt(i.toString(), 10));\n processRow(templateData.value.columnHeader[parseInt(i.toString(), 10)], gridHeader, true);\n }\n }\n if (templateData.value.rows) {\n for (var _i = 0, _a = templateData.value.rows; _i < _a.length; _i++) {\n var row = _a[_i];\n // create a new row and set default style properties\n var gridRow = this.setRecordThemeStyle(pdfGrid.rows.addRow(), border_1);\n processRow(row, gridRow, false);\n }\n }\n return pdfGrid;\n }\n else if (templateData.value.image) {\n return new PdfBitmap(templateData.value.image.base64);\n }\n else if (templateData.value.text) {\n return templateData.value.text;\n }\n else if (templateData.value.hyperLink) {\n return this.setHyperLink(templateData.value);\n }\n return '';\n };\n PdfExport.prototype.setHyperLink = function (args) {\n // create the Text Web Link\n var textLink = new PdfTextWebLink();\n // set the hyperlink\n textLink.url = args.hyperLink.target;\n // set the link text\n textLink.text = args.hyperLink.displayText || args.hyperLink.target;\n // set the font\n textLink.font = new PdfStandardFont(PdfFontFamily.Helvetica, 9.75);\n // set the brush and pen for the text color\n textLink.brush = new PdfSolidBrush(new PdfColor(51, 102, 187));\n return textLink;\n };\n PdfExport.prototype.childGridCell = function (cell, childGridObj, pdfExportProperties) {\n var _this = this;\n return function (result) {\n childGridObj.beforeDataBound = null;\n result.cancel = true;\n cell.value = _this.processGridExport(childGridObj, result, pdfExportProperties);\n childGridObj.destroy();\n detach(childGridObj.element);\n _this.gridPool[childGridObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n return cell;\n };\n };\n PdfExport.prototype.processCellStyle = function (cell, args) {\n if (!isNullOrUndefined(args.style.backgroundColor)) {\n var backColor = this.hexToRgb(args.style.backgroundColor);\n cell.style.backgroundBrush = new PdfSolidBrush(new PdfColor(backColor.r, backColor.g, backColor.b));\n }\n if (!isNullOrUndefined(args.style.textAlignment)) {\n cell.style.stringFormat = this.getHorizontalAlignment(args.style.textAlignment);\n }\n if (!isNullOrUndefined(args.style.cellPadding)) {\n cell.style.cellPadding = args.style.cellPadding;\n }\n if (!isNullOrUndefined(args.style.verticalAlignment)) {\n cell.style.stringFormat = this.getVerticalAlignment(args.style.verticalAlignment, cell.style.stringFormat);\n }\n if (!isNullOrUndefined(args.style.textBrushColor)) {\n var textBrushColor = this.hexToRgb(args.style.textBrushColor);\n cell.style.textBrush = new PdfSolidBrush(new PdfColor(textBrushColor.r, textBrushColor.g, textBrushColor.b));\n }\n if (!isNullOrUndefined(args.style.textPenColor)) {\n var textPenColor = this.hexToRgb(args.style.textPenColor);\n cell.style.textPen = new PdfPen(new PdfColor(textPenColor.r, textPenColor.g, textPenColor.b));\n }\n if (!isNullOrUndefined(args.style.fontFamily) || !isNullOrUndefined(args.style.fontSize) || !isNullOrUndefined(args.style.bold) ||\n !isNullOrUndefined(args.style.italic) || !isNullOrUndefined(args.style.underline) || !isNullOrUndefined(args.style.strikeout)) {\n cell.style.font = this.getFont(args);\n }\n if (!isNullOrUndefined(args.style.border)) {\n var border = new PdfBorders();\n var borderWidth = args.style.border.width;\n // set border width\n var width = (!isNullOrUndefined(borderWidth) && typeof borderWidth === 'number') ? (borderWidth * 0.75) : (undefined);\n // set border color\n var color = new PdfColor(196, 196, 196);\n if (!isNullOrUndefined(args.style.border.color)) {\n var borderColor = this.hexToRgb(args.style.border.color);\n color = new PdfColor(borderColor.r, borderColor.g, borderColor.b);\n }\n var pen = new PdfPen(color, width);\n // set border dashStyle 'Solid , Dash, Dot, DashDot, DashDotDot'\n if (!isNullOrUndefined(args.style.border.dashStyle)) {\n pen.dashStyle = this.getDashStyle(args.style.border.dashStyle);\n }\n border.all = pen;\n cell.style.borders = border;\n }\n if (!isNullOrUndefined(args.style.paragraphIndent)) {\n cell.style.stringFormat = new PdfStringFormat();\n cell.style.stringFormat.paragraphIndent = args.style.paragraphIndent;\n }\n };\n /**\n * set text alignment of each columns in exporting grid\n *\n * @param {string} textAlign - specifies the textAlign\n * @param {PdfStringFormat} format - specifies the PdfStringFormat\n * @returns {PdfStringFormat} returns the PdfStringFormat\n * @private\n */\n PdfExport.prototype.getHorizontalAlignment = function (textAlign, format) {\n if (format === undefined) {\n format = new PdfStringFormat();\n }\n switch (textAlign) {\n case 'Right':\n format.alignment = PdfTextAlignment.Right;\n break;\n case 'Center':\n format.alignment = PdfTextAlignment.Center;\n break;\n case 'Justify':\n format.alignment = PdfTextAlignment.Justify;\n break;\n case 'Left':\n format.alignment = PdfTextAlignment.Left;\n break;\n }\n return format;\n };\n /**\n * set vertical alignment of each columns in exporting grid\n *\n * @param {string} verticalAlign - specifies the verticalAlign\n * @param {PdfStringFormat} format - specifies the PdfStringFormat\n * @param {string} textAlign - specifies the text align\n * @returns {PdfStringFormat} returns the PdfStringFormat\n * @private\n */\n PdfExport.prototype.getVerticalAlignment = function (verticalAlign, format, textAlign) {\n if (format === undefined) {\n format = new PdfStringFormat();\n format = this.getHorizontalAlignment(textAlign, format);\n }\n switch (verticalAlign) {\n case 'Bottom':\n format.lineAlignment = PdfVerticalAlignment.Bottom;\n break;\n case 'Middle':\n format.lineAlignment = PdfVerticalAlignment.Middle;\n break;\n case 'Top':\n format.lineAlignment = PdfVerticalAlignment.Top;\n break;\n }\n return format;\n };\n PdfExport.prototype.getFontFamily = function (fontFamily) {\n switch (fontFamily) {\n case 'TimesRoman':\n return 2;\n case 'Courier':\n return 1;\n case 'Symbol':\n return 3;\n case 'ZapfDingbats':\n return 4;\n default:\n return 0;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.getFont = function (content) {\n if (content.font) {\n return content.font;\n }\n var fontSize = (!isNullOrUndefined(content.style.fontSize)) ? (content.style.fontSize * 0.75) : 9.75;\n var fontFamily = (!isNullOrUndefined(content.style.fontFamily)) ?\n (this.getFontFamily(content.style.fontFamily)) : PdfFontFamily.TimesRoman;\n var fontStyle = PdfFontStyle.Regular;\n if (!isNullOrUndefined(content.style.bold) && content.style.bold) {\n fontStyle |= PdfFontStyle.Bold;\n }\n if (!isNullOrUndefined(content.style.italic) && content.style.italic) {\n fontStyle |= PdfFontStyle.Italic;\n }\n if (!isNullOrUndefined(content.style.underline) && content.style.underline) {\n fontStyle |= PdfFontStyle.Underline;\n }\n if (!isNullOrUndefined(content.style.strikeout) && content.style.strikeout) {\n fontStyle |= PdfFontStyle.Strikeout;\n }\n return new PdfStandardFont(fontFamily, fontSize, fontStyle);\n };\n PdfExport.prototype.getPageNumberStyle = function (pageNumberType) {\n switch (pageNumberType) {\n case 'LowerLatin':\n return 2;\n case 'LowerRoman':\n return 3;\n case 'UpperLatin':\n return 4;\n case 'UpperRoman':\n return 5;\n default:\n return 1;\n }\n };\n PdfExport.prototype.setContentFormat = function (content, format) {\n if (!isNullOrUndefined(content.size)) {\n var width = content.size.width * 0.75;\n var height = content.size.height * 0.75;\n format = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle);\n if (!isNullOrUndefined(content.style.hAlign)) {\n switch (content.style.hAlign) {\n case 'Right':\n format.alignment = PdfTextAlignment.Right;\n break;\n case 'Center':\n format.alignment = PdfTextAlignment.Center;\n break;\n case 'Justify':\n format.alignment = PdfTextAlignment.Justify;\n break;\n default:\n format.alignment = PdfTextAlignment.Left;\n }\n }\n if (!isNullOrUndefined(content.style.vAlign)) {\n format = this.getVerticalAlignment(content.style.vAlign, format);\n }\n return { format: format, size: new SizeF(width, height) };\n }\n return null;\n };\n PdfExport.prototype.getPageSize = function (pageSize) {\n switch (pageSize) {\n case 'Letter':\n return new SizeF(612, 792);\n case 'Note':\n return new SizeF(540, 720);\n case 'Legal':\n return new SizeF(612, 1008);\n case 'A0':\n return new SizeF(2380, 3368);\n case 'A1':\n return new SizeF(1684, 2380);\n case 'A2':\n return new SizeF(1190, 1684);\n case 'A3':\n return new SizeF(842, 1190);\n case 'A5':\n return new SizeF(421, 595);\n case 'A6':\n return new SizeF(297, 421);\n case 'A7':\n return new SizeF(210, 297);\n case 'A8':\n return new SizeF(148, 210);\n case 'A9':\n return new SizeF(105, 148);\n // case 'A10':\n // return new SizeF(74, 105);\n case 'B0':\n return new SizeF(2836, 4008);\n case 'B1':\n return new SizeF(2004, 2836);\n case 'B2':\n return new SizeF(1418, 2004);\n case 'B3':\n return new SizeF(1002, 1418);\n case 'B4':\n return new SizeF(709, 1002);\n case 'B5':\n return new SizeF(501, 709);\n case 'Archa':\n return new SizeF(648, 864);\n case 'Archb':\n return new SizeF(864, 1296);\n case 'Archc':\n return new SizeF(1296, 1728);\n case 'Archd':\n return new SizeF(1728, 2592);\n case 'Arche':\n return new SizeF(2592, 3456);\n case 'Flsa':\n return new SizeF(612, 936);\n case 'HalfLetter':\n return new SizeF(396, 612);\n case 'Letter11x17':\n return new SizeF(792, 1224);\n case 'Ledger':\n return new SizeF(1224, 792);\n default:\n return new SizeF(595, 842);\n }\n };\n PdfExport.prototype.getDashStyle = function (dashStyle) {\n switch (dashStyle) {\n case 'Dash':\n return 1;\n case 'Dot':\n return 2;\n case 'DashDot':\n return 3;\n case 'DashDotDot':\n return 4;\n default:\n return 0;\n }\n };\n PdfExport.prototype.getPenFromContent = function (content) {\n var pen = new PdfPen(new PdfColor(0, 0, 0));\n if (!isNullOrUndefined(content.style) && content.style !== null && !isNullOrUndefined(content.style.penColor)) {\n var penColor = this.hexToRgb(content.style.penColor);\n pen = new PdfPen(new PdfColor(penColor.r, penColor.g, penColor.b));\n }\n return pen;\n };\n PdfExport.prototype.getBrushFromContent = function (content) {\n var brush = null;\n if (!isNullOrUndefined(content.style.textBrushColor)) {\n /* tslint:disable-next-line:max-line-length */\n var brushColor = this.hexToRgb(content.style.textBrushColor);\n brush = new PdfSolidBrush(new PdfColor(brushColor.r, brushColor.g, brushColor.b));\n }\n return brush;\n };\n PdfExport.prototype.hexToRgb = function (hex) {\n if (hex === null || hex === '' || hex.length !== 7) {\n throw new Error('please set valid hex value for color...');\n }\n hex = hex.substring(1);\n var bigint = parseInt(hex, 16);\n var r = (bigint >> 16) & 255;\n var g = (bigint >> 8) & 255;\n var b = bigint & 255;\n return { r: r, g: g, b: b };\n };\n PdfExport.prototype.getFontStyle = function (theme) {\n var fontStyle = PdfFontStyle.Regular;\n if (!isNullOrUndefined(theme) && theme.bold) {\n fontStyle |= PdfFontStyle.Bold;\n }\n if (!isNullOrUndefined(theme) && theme.italic) {\n fontStyle |= PdfFontStyle.Italic;\n }\n if (!isNullOrUndefined(theme) && theme.underline) {\n fontStyle |= PdfFontStyle.Underline;\n }\n if (!isNullOrUndefined(theme) && theme.strikeout) {\n fontStyle |= PdfFontStyle.Strikeout;\n }\n return fontStyle;\n };\n PdfExport.prototype.getBorderStyle = function (border) {\n var borders = new PdfBorders();\n if (!isNullOrUndefined(border)) {\n var borderWidth = border.width;\n // set border width\n var width = (!isNullOrUndefined(borderWidth) && typeof borderWidth === 'number') ? borderWidth * 0.75 : undefined;\n // set border color\n var color = new PdfColor(196, 196, 196);\n if (!isNullOrUndefined(border.color)) {\n var borderColor = this.hexToRgb(border.color);\n color = new PdfColor(borderColor.r, borderColor.g, borderColor.b);\n }\n var pen = new PdfPen(color, width);\n // set border dashStyle 'Solid , Dash, Dot, DashDot, DashDotDot'\n if (!isNullOrUndefined(border.dashStyle)) {\n pen.dashStyle = this.getDashStyle(border.dashStyle);\n }\n borders.all = pen;\n }\n else {\n borders.all = new PdfPen(new PdfColor(234, 234, 234));\n }\n return borders;\n };\n PdfExport.prototype.destroy = function () {\n //destroy for exporting\n };\n return PdfExport;\n}());\nexport { PdfExport };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Worksheets class\n * @private\n */\nvar Worksheets = /** @class */ (function (_super) {\n __extends(Worksheets, _super);\n function Worksheets() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Worksheets;\n}(Array));\nexport { Worksheets };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Worksheet class\n * @private\n */\nvar Worksheet = /** @class */ (function () {\n function Worksheet() {\n this.isSummaryRowBelow = true;\n this.showGridLines = true;\n this.enableRtl = false;\n }\n return Worksheet;\n}());\nexport { Worksheet };\n/**\n * Hyperlink class\n * @private\n */\nvar HyperLink = /** @class */ (function () {\n function HyperLink() {\n }\n return HyperLink;\n}());\nexport { HyperLink };\n/**\n * Grouping class\n * @private\n */\nvar Grouping = /** @class */ (function () {\n function Grouping() {\n }\n return Grouping;\n}());\nexport { Grouping };\n/**\n * FreezePane class\n * @private\n */\nvar FreezePane = /** @class */ (function () {\n function FreezePane() {\n }\n return FreezePane;\n}());\nexport { FreezePane };\n/**\n * MergeCell\n * @private\n */\nvar MergeCell = /** @class */ (function () {\n function MergeCell() {\n }\n return MergeCell;\n}());\nexport { MergeCell };\n/**\n * MergeCells class\n * @private\n */\nvar MergeCells = /** @class */ (function (_super) {\n __extends(MergeCells, _super);\n function MergeCells() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (mergeCell) {\n var inserted = false;\n var count = 0;\n for (var _i = 0, _a = _this; _i < _a.length; _i++) {\n var mCell = _a[_i];\n if (MergeCells.isIntersecting(mCell, mergeCell)) {\n var intersectingCell = new MergeCell();\n intersectingCell.x = Math.min(mCell.x, mergeCell.x);\n intersectingCell.y = Math.min(mCell.Y, mergeCell.y);\n intersectingCell.width = Math.max(mCell.Width + mCell.X, mergeCell.width + mergeCell.x);\n intersectingCell.height = Math.max(mCell.Height + mCell.Y, mergeCell.height + mergeCell.y);\n intersectingCell.ref = (_this[count].ref.split(':')[0]) + ':' + (mergeCell.ref.split(':')[1]);\n _this[count] = intersectingCell;\n mergeCell = intersectingCell;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n _this.push(mergeCell);\n }\n return mergeCell;\n };\n return _this;\n }\n MergeCells.isIntersecting = function (base, compare) {\n return (base.x <= compare.x + compare.width)\n && (compare.x <= base.x + base.width)\n && (base.y <= compare.y + compare.height)\n && (compare.y <= base.y + base.height);\n };\n return MergeCells;\n}(Array));\nexport { MergeCells };\n","/**\n * CellStyle class\n * @private\n */\nvar CellStyle = /** @class */ (function () {\n function CellStyle() {\n this.numFmtId = 0;\n this.backColor = 'none';\n this.fontName = 'Calibri';\n this.fontSize = 10.5;\n this.fontColor = '#000000';\n this.italic = false;\n this.bold = false;\n this.underline = false;\n this.strikeThrough = false;\n this.wrapText = false;\n this.hAlign = 'general';\n this.vAlign = 'bottom';\n this.indent = 0;\n this.rotation = 0;\n this.numberFormat = 'GENERAL';\n this.type = 'datetime';\n this.borders = new Borders();\n this.isGlobalStyle = false;\n }\n return CellStyle;\n}());\nexport { CellStyle };\n/**\n * Font Class\n * @private\n */\nvar Font = /** @class */ (function () {\n function Font() {\n this.sz = 10.5;\n this.name = 'Calibri';\n this.u = false;\n this.b = false;\n this.i = false;\n this.color = 'FF000000';\n this.strike = false;\n }\n return Font;\n}());\nexport { Font };\n/**\n * CellXfs class\n * @private\n */\nvar CellXfs = /** @class */ (function () {\n function CellXfs() {\n }\n return CellXfs;\n}());\nexport { CellXfs };\n/**\n * Alignment class\n * @private\n */\nvar Alignment = /** @class */ (function () {\n function Alignment() {\n }\n return Alignment;\n}());\nexport { Alignment };\n/**\n * CellStyleXfs class\n * @private\n */\nvar CellStyleXfs = /** @class */ (function () {\n function CellStyleXfs() {\n }\n return CellStyleXfs;\n}());\nexport { CellStyleXfs };\n/**\n * CellStyles class\n * @private\n */\nvar CellStyles = /** @class */ (function () {\n function CellStyles() {\n this.name = 'Normal';\n this.xfId = 0;\n }\n return CellStyles;\n}());\nexport { CellStyles };\n/**\n * NumFmt class\n * @private\n */\nvar NumFmt = /** @class */ (function () {\n function NumFmt(id, code) {\n this.numFmtId = id;\n this.formatCode = code;\n }\n return NumFmt;\n}());\nexport { NumFmt };\n/**\n * Border class\n * @private\n */\nvar Border = /** @class */ (function () {\n function Border(mLine, mColor) {\n this.lineStyle = mLine;\n this.color = mColor;\n }\n return Border;\n}());\nexport { Border };\n/**\n * Borders class\n * @private\n */\nvar Borders = /** @class */ (function () {\n function Borders() {\n this.left = new Border('none', '#FFFFFF');\n this.right = new Border('none', '#FFFFFF');\n this.top = new Border('none', '#FFFFFF');\n this.bottom = new Border('none', '#FFFFFF');\n this.all = new Border('none', '#FFFFFF');\n }\n return Borders;\n}());\nexport { Borders };\n","/**\n * Column class\n * @private\n */\nvar Column = /** @class */ (function () {\n function Column() {\n }\n return Column;\n}());\nexport { Column };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Row class\n * @private\n */\nvar Row = /** @class */ (function () {\n function Row() {\n }\n return Row;\n}());\nexport { Row };\n/**\n * Rows class\n * @private\n */\nvar Rows = /** @class */ (function (_super) {\n __extends(Rows, _super);\n function Rows() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (row) {\n _this.push(row);\n };\n return _this;\n }\n return Rows;\n}(Array));\nexport { Rows };\n","/**\n * Image class\n * @private\n */\nvar Image = /** @class */ (function () {\n function Image() {\n }\n return Image;\n}());\nexport { Image };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Worksheet class\n * @private\n */\nvar Cell = /** @class */ (function () {\n function Cell() {\n }\n return Cell;\n}());\nexport { Cell };\n/**\n * Cells class\n * @private\n */\nvar Cells = /** @class */ (function (_super) {\n __extends(Cells, _super);\n function Cells() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (cell) {\n var inserted = false;\n var count = 0;\n for (var _i = 0, _a = _this; _i < _a.length; _i++) {\n var c = _a[_i];\n if (c.index === cell.index) {\n _this[count] = cell;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n _this.push(cell);\n }\n };\n return _this;\n }\n return Cells;\n}(Array));\nexport { Cells };\n","/* eslint-disable */\nvar Utils = /** @class */ (function () {\n function Utils() {\n }\n Utils.bitReverse = function (value) {\n return (Utils.reverseBits[value & 15] << 12\n | Utils.reverseBits[(value >> 4) & 15] << 8\n | Utils.reverseBits[(value >> 8) & 15] << 4\n | Utils.reverseBits[value >> 12]);\n };\n Utils.bitConverterToInt32 = function (value, index) {\n return value[index] | value[index + 1] << 8 | value[index + 2] << 16 | value[index + 3] << 24;\n };\n Utils.bitConverterToInt16 = function (value, index) {\n return value[index] | value[index + 1] << 8;\n };\n Utils.bitConverterToUInt32 = function (value) {\n var uint = new Uint32Array(1);\n uint[0] = value;\n return uint[0];\n };\n Utils.bitConverterToUInt16 = function (value, index) {\n var uint = new Uint16Array(1);\n uint[0] = (value[index] | value[index + 1] << 8);\n return uint[0];\n };\n Utils.bitConverterUintToInt32 = function (value) {\n var uint = new Int32Array(1);\n uint[0] = value;\n return uint[0];\n };\n Utils.bitConverterInt32ToUint = function (value) {\n var uint = new Uint32Array(1);\n uint[0] = value;\n return uint[0];\n };\n Utils.bitConverterInt32ToInt16 = function (value) {\n var uint = new Int16Array(1);\n uint[0] = value;\n return uint[0];\n };\n Utils.byteToString = function (value) {\n var str = '';\n for (var i = 0; i < value.length; i++) {\n str += String.fromCharCode(value[i]);\n }\n return str;\n };\n Utils.byteIntToString = function (value) {\n var str = '';\n for (var i = 0; i < value.length; i++) {\n str += String.fromCharCode(value[i]);\n }\n return str;\n };\n Utils.arrayCopy = function (source, sourceIndex, destination, destinationIndex, dataToCopy) {\n var temp = new Uint8Array(source.buffer, sourceIndex);\n var data = temp.subarray(0, dataToCopy);\n destination.set(data, destinationIndex);\n };\n Utils.mergeArray = function (arrayOne, arrayTwo) {\n var mergedArray = new Uint8Array(arrayOne.length + arrayTwo.length);\n mergedArray.set(arrayOne);\n mergedArray.set(arrayTwo, arrayOne.length);\n return mergedArray;\n };\n /**\n * @private\n */\n Utils.encodedString = function (input) {\n var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var chr1;\n var chr2;\n var chr3;\n var encode1;\n var encode2;\n var encode3;\n var encode4;\n var count = 0;\n var resultIndex = 0;\n /*let dataUrlPrefix: string = 'data:';*/\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n var totalLength = input.length * 3 / 4;\n if (input.charAt(input.length - 1) === keyStr.charAt(64)) {\n totalLength--;\n }\n if (input.charAt(input.length - 2) === keyStr.charAt(64)) {\n totalLength--;\n }\n if (totalLength % 1 !== 0) {\n // totalLength is not an integer, the length does not match a valid\n // base64 content. That can happen if:\n // - the input is not a base64 content\n // - the input is *almost* a base64 content, with a extra chars at the\n // beginning or at the end\n // - the input uses a base64 variant (base64url for example)\n throw new Error('Invalid base64 input, bad content length.');\n }\n var output = new Uint8Array(totalLength | 0);\n while (count < input.length) {\n encode1 = keyStr.indexOf(input.charAt(count++));\n encode2 = keyStr.indexOf(input.charAt(count++));\n encode3 = keyStr.indexOf(input.charAt(count++));\n encode4 = keyStr.indexOf(input.charAt(count++));\n chr1 = (encode1 << 2) | (encode2 >> 4);\n chr2 = ((encode2 & 15) << 4) | (encode3 >> 2);\n chr3 = ((encode3 & 3) << 6) | encode4;\n output[resultIndex++] = chr1;\n if (encode3 !== 64) {\n output[resultIndex++] = chr2;\n }\n if (encode4 !== 64) {\n output[resultIndex++] = chr3;\n }\n }\n return output;\n };\n Utils.reverseBits = [0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15];\n Utils.huffCodeLengthOrders = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n return Utils;\n}());\nexport { Utils };\n/* eslint-enable */ \n","/* eslint-disable */\nimport { Utils } from './index';\nvar DecompressorHuffmanTree = /** @class */ (function () {\n function DecompressorHuffmanTree(lengths) {\n this.buildTree(lengths);\n }\n DecompressorHuffmanTree.init = function () {\n var lengths;\n var index;\n // Generate huffman tree for lengths.\n lengths = new Uint8Array(288);\n index = 0;\n while (index < 144) {\n lengths[index++] = 8;\n }\n while (index < 256) {\n lengths[index++] = 9;\n }\n while (index < 280) {\n lengths[index++] = 7;\n }\n while (index < 288) {\n lengths[index++] = 8;\n }\n DecompressorHuffmanTree.m_LengthTree = new DecompressorHuffmanTree(lengths);\n // Generate huffman tree for distances.\n lengths = new Uint8Array(32);\n index = 0;\n while (index < 32) {\n lengths[index++] = 5;\n }\n DecompressorHuffmanTree.m_DistanceTree = new DecompressorHuffmanTree(lengths);\n };\n /// \n /// Prepares data for generating huffman tree.\n /// \n /// Array of counts of each code length.\n /// Numerical values of the smallest code for each code length.\n /// Array of code lengths.\n /// Calculated tree size.\n /// Code.\n DecompressorHuffmanTree.prototype.prepareData = function (blCount, nextCode, lengths) {\n var code = 0;\n var treeSize = 512;\n // Count number of codes for each code length.\n for (var i = 0; i < lengths.length; i++) {\n var length_1 = lengths[i];\n if (length_1 > 0) {\n blCount[length_1]++;\n }\n }\n for (var bits = 1; bits <= DecompressorHuffmanTree.MAX_BITLEN; bits++) {\n nextCode[bits] = code;\n code += blCount[bits] << (16 - bits);\n if (bits >= 10) {\n var start = nextCode[bits] & 0x1ff80;\n var end = code & 0x1ff80;\n treeSize += (end - start) >> (16 - bits);\n }\n }\n /* if( code != 65536 )\n throw new ZipException( \"Code lengths don't add up properly.\" );*/\n return { 'code': code, 'treeSize': treeSize };\n };\n /// \n /// Generates huffman tree.\n /// \n /// Array of counts of each code length.\n /// Numerical values of the smallest code for each code length.\n /// Precalculated code.\n /// Array of code lengths.\n /// Calculated size of the tree.\n /// Generated tree.\n DecompressorHuffmanTree.prototype.treeFromData = function (blCount, nextCode, lengths, code, treeSize) {\n var tree = new Int16Array(treeSize);\n var pointer = 512;\n var increment = 1 << 7;\n for (var bits = DecompressorHuffmanTree.MAX_BITLEN; bits >= 10; bits--) {\n var end = code & 0x1ff80;\n code -= blCount[bits] << (16 - bits);\n var start = code & 0x1ff80;\n for (var i = start; i < end; i += increment) {\n tree[Utils.bitReverse(i)] = Utils.bitConverterInt32ToInt16((-pointer << 4) | bits);\n pointer += 1 << (bits - 9);\n }\n }\n for (var i = 0; i < lengths.length; i++) {\n var bits = lengths[i];\n if (bits == 0) {\n continue;\n }\n code = nextCode[bits];\n var revcode = Utils.bitReverse(code);\n if (bits <= 9) {\n do {\n tree[revcode] = Utils.bitConverterInt32ToInt16((i << 4) | bits);\n revcode += 1 << bits;\n } while (revcode < 512);\n }\n else {\n var subTree = tree[revcode & 511];\n var treeLen = 1 << (subTree & 15);\n subTree = -(subTree >> 4);\n do {\n tree[subTree | (revcode >> 9)] = Utils.bitConverterInt32ToInt16((i << 4) | bits);\n revcode += 1 << bits;\n } while (revcode < treeLen);\n }\n nextCode[bits] = code + (1 << (16 - bits));\n }\n return tree;\n };\n /// \n /// Builds huffman tree from array of code lengths.\n /// \n /// Array of code lengths.\n DecompressorHuffmanTree.prototype.buildTree = function (lengths) {\n // Count of codes for each code length.\n var blCount = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n // Numerical value of the smallest code for each code length.\n var nextCode = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n var prepareData = this.prepareData(blCount, nextCode, lengths);\n this.m_Tree = this.treeFromData(blCount, nextCode, lengths, prepareData.code, prepareData.treeSize);\n };\n /// \n /// Reads and decompresses one symbol.\n /// \n /// \n /// \n DecompressorHuffmanTree.prototype.unpackSymbol = function (input) {\n var lookahead;\n var symbol;\n if ((lookahead = input.peekBits(9)) >= 0) {\n if ((symbol = this.m_Tree[lookahead]) >= 0) {\n input.skipBits((symbol & 15));\n return symbol >> 4;\n }\n var subtree = -(symbol >> 4);\n var bitlen = symbol & 15;\n if ((lookahead = input.peekBits(bitlen)) >= 0) {\n symbol = this.m_Tree[subtree | (lookahead >> 9)];\n input.skipBits((symbol & 15));\n return symbol >> 4;\n }\n else {\n var bits = input.availableBits;\n lookahead = input.peekBits(bits);\n symbol = this.m_Tree[subtree | (lookahead >> 9)];\n if ((symbol & 15) <= bits) {\n input.skipBits((symbol & 15));\n return symbol >> 4;\n }\n else {\n return -1;\n }\n }\n }\n else {\n var bits = input.availableBits;\n lookahead = input.peekBits(bits);\n symbol = this.m_Tree[lookahead];\n if (symbol >= 0 && (symbol & 15) <= bits) {\n input.skipBits((symbol & 15));\n return symbol >> 4;\n }\n else {\n return -1;\n }\n }\n };\n Object.defineProperty(DecompressorHuffmanTree, \"lengthTree\", {\n /// \n /// GET huffman tree for encoding and decoding lengths.\n /// \n get: function () {\n return this.m_LengthTree;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DecompressorHuffmanTree, \"distanceTree\", {\n /// \n /// GET huffman tree for encoding and decoding distances.\n /// \n get: function () {\n return this.m_DistanceTree;\n },\n enumerable: true,\n configurable: true\n });\n /// \n /// Maximum count of bits.\n /// \n DecompressorHuffmanTree.MAX_BITLEN = 15;\n return DecompressorHuffmanTree;\n}());\nexport { DecompressorHuffmanTree };\n/* eslint-enable */ \n","/* eslint-disable */\n/// \n/// Checksum calculator, based on Adler32 algorithm.\n/// \nvar ChecksumCalculator = /** @class */ (function () {\n function ChecksumCalculator() {\n }\n /// \n /// Updates checksum by calculating checksum of the\n /// given buffer and adding it to current value.\n /// \n /// Current checksum.\n /// Data byte array.\n /// Offset in the buffer.\n /// Length of data to be used from the stream.\n ChecksumCalculator.ChecksumUpdate = function (checksum, buffer, offset, length) {\n var checkSumUInt = checksum;\n var s1 = checkSumUInt & 65535;\n var s2 = checkSumUInt >> this.DEF_CHECKSUM_BIT_OFFSET;\n while (length > 0) {\n var steps = Math.min(length, this.DEF_CHECKSUM_ITERATIONSCOUNT);\n length -= steps;\n while (--steps >= 0) {\n s1 = s1 + (buffer[offset++] & 255);\n s2 = s2 + s1;\n }\n s1 %= this.DEF_CHECKSUM_BASE;\n s2 %= this.DEF_CHECKSUM_BASE;\n }\n checkSumUInt = (s2 << this.DEF_CHECKSUM_BIT_OFFSET) | s1;\n checksum = checkSumUInt;\n };\n /// \n /// Generates checksum by calculating checksum of the\n /// given buffer.\n /// \n /// Data byte array.\n /// Offset in the buffer.\n /// Length of data to be used from the stream.\n ChecksumCalculator.ChecksumGenerate = function (buffer, offset, length) {\n var result = 1;\n ChecksumCalculator.ChecksumUpdate(result, buffer, offset, length);\n return result;\n };\n /// \n /// Bits offset, used in adler checksum calculation.\n /// \n ChecksumCalculator.DEF_CHECKSUM_BIT_OFFSET = 16;\n /// \n /// Lagrest prime, less than 65535\n /// \n ChecksumCalculator.DEF_CHECKSUM_BASE = 65521;\n /// \n /// Count of iteration used in calculated of the adler checksumm.\n /// \n ChecksumCalculator.DEF_CHECKSUM_ITERATIONSCOUNT = 3800;\n return ChecksumCalculator;\n}());\nexport { ChecksumCalculator };\n/* eslint-enable */ \n","/* eslint-disable */\nimport { DecompressorHuffmanTree } from './decompressor-huffman-tree';\nimport { Utils } from './utils';\nimport { ChecksumCalculator } from './checksum-calculator';\nvar CompressedStreamReader = /** @class */ (function () {\n function CompressedStreamReader(stream, bNoWrap) {\n /// \n /// Code lengths for the code length alphabet.\n /// \n this.defaultHuffmanDynamicTree = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n /// \n /// Mask for compression method to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_METHOD_MASK = 15 << 8;\n /// \n /// Mask for compression info to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_INFO_MASK = 240 << 8;\n /// \n /// Mask for check bits to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_FLAGS_FCHECK = 31;\n /// \n /// Mask for dictionary presence to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_FLAGS_FDICT = 32;\n /// \n /// Mask for compression level to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_FLAGS_FLEVEL = 192;\n /// \n /// Maximum size of the data window.\n /// \n this.DEF_MAX_WINDOW_SIZE = 65535;\n /// \n /// Maximum length of the repeatable block.\n /// \n this.DEF_HUFFMAN_REPEATE_MAX = 258;\n /// \n /// End of the block sign.\n /// \n this.DEF_HUFFMAN_END_BLOCK = 256;\n /// \n /// Minimal length code.\n /// \n this.DEF_HUFFMAN_LENGTH_MINIMUMCODE = 257;\n /// \n /// Maximal length code.\n /// \n this.DEF_HUFFMAN_LENGTH_MAXIMUMCODE = 285;\n /// \n /// Maximal distance code.\n /// \n this.DEF_HUFFMAN_DISTANCE_MAXIMUMCODE = 29;\n /// \n /// Currently calculated checksum,\n /// based on Adler32 algorithm.\n /// \n this.mCheckSum = 1;\n /// \n /// Currently read 4 bytes.\n /// \n this.tBuffer = 0;\n /// \n /// Count of bits that are in buffer.\n /// \n this.mBufferedBits = 0;\n /// \n /// Temporary buffer.\n /// \n this.mTempBuffer = new Uint8Array(4);\n /// \n /// 32k buffer for unpacked data.\n /// \n this.mBlockBuffer = new Uint8Array(this.DEF_MAX_WINDOW_SIZE);\n /// \n /// No wrap mode.\n /// \n this.mbNoWrap = false;\n /// \n /// Window size, can not be larger than 32k.\n /// \n this.mWindowSize = 0;\n /// \n /// Current position in output stream.\n /// Current in-block position can be extracted by applying Int16.MaxValue mask.\n /// \n this.mCurrentPosition = 0;\n /// \n /// Data length.\n /// Current in-block position can be extracted by applying Int16.MaxValue mask.\n /// \n this.mDataLength = 0;\n /// \n /// Specifies wheather next block can to be read.\n /// Reading can be denied because the header of the last block have been read.\n /// \n this.mbCanReadNextBlock = true;\n /// \n /// Specifies wheather user can read more data from stream.\n /// \n this.mbCanReadMoreData = true;\n /// \n /// Specifies wheather checksum has been read.\n /// \n this.mbCheckSumRead = false;\n if (stream == null) {\n throw new DOMException('stream');\n }\n if (stream.length === 0) {\n throw new DOMException('stream - string can not be empty');\n }\n DecompressorHuffmanTree.init();\n this.mInputStream = new Stream(stream);\n this.mbNoWrap = bNoWrap;\n if (!this.mbNoWrap) {\n this.readZLibHeader();\n }\n this.decodeBlockHeader();\n }\n Object.defineProperty(CompressedStreamReader.prototype, \"mBuffer\", {\n get: function () {\n return this.tBuffer;\n },\n set: function (value) {\n this.tBuffer = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Initializes compressor and writes ZLib header if needed.\n * @param {boolean} noWrap - optional if true, ZLib header and checksum will not be written.\n */\n /// \n /// Reads specified count of bits without adjusting position.\n /// \n /// Count of bits to be read.\n /// Read value.\n CompressedStreamReader.prototype.peekBits = function (count) {\n if (count < 0) {\n throw new DOMException('count', 'Bits count can not be less than zero.');\n }\n if (count > 32) {\n throw new DOMException('count', 'Count of bits is too large.');\n }\n // If buffered data is not enough to give result,\n // fill buffer.\n if (this.mBufferedBits < count) {\n this.fillBuffer();\n }\n // If you want to read 4 bytes and there is partial data in\n // buffer, than you will fail.\n if (this.mBufferedBits < count) {\n return -1;\n }\n // Create bitmask for reading of count bits\n var bitMask = ~(4294967295 << count);\n var result = Utils.bitConverterUintToInt32(this.mBuffer & bitMask);\n //Debug.WriteLine( /*new string( ' ', 32 - mBufferedBits + (int)( ( 32 - mBufferedBits ) / 8 ) ) + BitsToString( (int)mBuffer, mBufferedBits ) + \" \" + BitsToString( result, count ) +*/ \" \" + result.ToString() );\n return result;\n };\n CompressedStreamReader.prototype.fillBuffer = function () {\n var length = 4 - (this.mBufferedBits >> 3) -\n (((this.mBufferedBits & 7) !== 0) ? 1 : 0);\n if (length === 0) {\n return;\n }\n //TODO: fix this\n var bytesRead = this.mInputStream.read(this.mTempBuffer, 0, length);\n for (var i = 0; i < bytesRead; i++) {\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer |\n (Utils.bitConverterInt32ToUint(this.mTempBuffer[i] << this.mBufferedBits)));\n this.mBufferedBits += 8;\n }\n //TODO: fix this\n };\n /// \n /// Skips specified count of bits.\n /// \n /// Count of bits to be skipped.\n CompressedStreamReader.prototype.skipBits = function (count) {\n if (count < 0) {\n throw new DOMException('count', 'Bits count can not be less than zero.');\n }\n if (count === 0) {\n return;\n }\n if (count >= this.mBufferedBits) {\n count -= this.mBufferedBits;\n this.mBufferedBits = 0;\n this.mBuffer = 0;\n // if something left, skip it.\n if (count > 0) {\n // Skip entire bytes.\n this.mInputStream.position += (count >> 3); //TODO: fix this\n count &= 7;\n // Skip bits.\n if (count > 0) {\n this.fillBuffer();\n this.mBufferedBits -= count;\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> count);\n }\n }\n }\n else {\n this.mBufferedBits -= count;\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> count);\n }\n };\n Object.defineProperty(CompressedStreamReader.prototype, \"availableBits\", {\n get: function () {\n return this.mBufferedBits;\n },\n enumerable: true,\n configurable: true\n });\n /// \n /// Reads ZLib header with compression method and flags.\n /// \n CompressedStreamReader.prototype.readZLibHeader = function () {\n // first 8 bits - compression Method and flags\n // 8 other - flags\n var header = this.readInt16();\n //Debug.WriteLine( BitsToString( header ) );\n if (header === -1) {\n throw new DOMException('Header of the stream can not be read.');\n }\n if (header % 31 !== 0) {\n throw new DOMException('Header checksum illegal');\n }\n if ((header & this.DEF_HEADER_METHOD_MASK) !== (8 << 8)) {\n throw new DOMException('Unsupported compression method.');\n }\n this.mWindowSize = Math.pow(2, ((header & this.DEF_HEADER_INFO_MASK) >> 12) + 8);\n if (this.mWindowSize > 65535) {\n throw new DOMException('Unsupported window size for deflate compression method.');\n }\n if ((header & this.DEF_HEADER_FLAGS_FDICT) >> 5 === 1) {\n // Get dictionary.\n throw new DOMException('Custom dictionary is not supported at the moment.');\n }\n };\n /// \n /// TODO: place correct comment here\n /// \n /// \n /// TODO: place correct comment here\n /// \n CompressedStreamReader.prototype.readInt16 = function () {\n var result = (this.readBits(8) << 8);\n result |= this.readBits(8);\n return result;\n };\n /// \n /// Reads specified count of bits from stream.\n /// \n /// Count of bits to be read.\n /// \n /// TODO: place correct comment here\n /// \n CompressedStreamReader.prototype.readBits = function (count) {\n var result = this.peekBits(count);\n if (result === -1) {\n return -1;\n }\n this.mBufferedBits -= count;\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> count);\n return result;\n };\n /// \n /// Reads and decodes block of data.\n /// \n /// True if buffer was empty and new data was read, otherwise - False.\n CompressedStreamReader.prototype.decodeBlockHeader = function () {\n if (!this.mbCanReadNextBlock) {\n return false;\n }\n var bFinalBlock = this.readBits(1);\n if (bFinalBlock === -1) {\n return false;\n }\n var blockType = this.readBits(2);\n if (blockType === -1) {\n return false;\n }\n this.mbCanReadNextBlock = (bFinalBlock === 0);\n // ChecksumReset();\n switch (blockType) {\n case 0:\n // Uncompressed data\n this.mbReadingUncompressed = true;\n this.skipToBoundary();\n var length_1 = this.readInt16Inverted();\n var lengthComplement = this.readInt16Inverted();\n if (length_1 !== (lengthComplement ^ 0xffff)) {\n throw new DOMException('Wrong block length.');\n }\n if (length_1 > 65535) {\n throw new DOMException('Uncompressed block length can not be more than 65535.');\n }\n this.mUncompressedDataLength = length_1;\n this.mCurrentLengthTree = null;\n this.mCurrentDistanceTree = null;\n break;\n case 1:\n // Compressed data with fixed huffman codes.\n this.mbReadingUncompressed = false;\n this.mUncompressedDataLength = -1;\n this.mCurrentLengthTree = DecompressorHuffmanTree.lengthTree;\n this.mCurrentDistanceTree = DecompressorHuffmanTree.distanceTree;\n break;\n case 2:\n // Compressed data with dynamic huffman codes.\n this.mbReadingUncompressed = false;\n this.mUncompressedDataLength = -1;\n var trees = this.decodeDynamicHeader(this.mCurrentLengthTree, this.mCurrentDistanceTree);\n this.mCurrentLengthTree = trees.lengthTree;\n this.mCurrentDistanceTree = trees.distanceTree;\n break;\n default:\n throw new DOMException('Wrong block type.');\n }\n return true;\n };\n /// \n /// Discards left-most partially used byte.\n /// \n CompressedStreamReader.prototype.skipToBoundary = function () {\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> (this.mBufferedBits & 7));\n this.mBufferedBits &= ~7;\n };\n /// \n /// TODO: place correct comment here\n /// \n /// \n /// TODO: place correct comment here\n /// \n CompressedStreamReader.prototype.readInt16Inverted = function () {\n var result = (this.readBits(8));\n result |= this.readBits(8) << 8;\n return result;\n };\n /// \n /// Reades dynamic huffman codes from block header.\n /// \n /// Literals/Lengths tree.\n /// Distances tree.\n CompressedStreamReader.prototype.decodeDynamicHeader = function (lengthTree, distanceTree) {\n var bLastSymbol = 0;\n var iLengthsCount = this.readBits(5);\n var iDistancesCount = this.readBits(5);\n var iCodeLengthsCount = this.readBits(4);\n if (iLengthsCount < 0 || iDistancesCount < 0 || iCodeLengthsCount < 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n iLengthsCount += 257;\n iDistancesCount += 1;\n var iResultingCodeLengthsCount = iLengthsCount + iDistancesCount;\n var arrResultingCodeLengths = new Uint8Array(iResultingCodeLengthsCount);\n var arrDecoderCodeLengths = new Uint8Array(19);\n iCodeLengthsCount += 4;\n var iCurrentCode = 0;\n while (iCurrentCode < iCodeLengthsCount) {\n var len = this.readBits(3);\n if (len < 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n arrDecoderCodeLengths[this.defaultHuffmanDynamicTree[iCurrentCode++]] = len;\n }\n var treeInternalDecoder = new DecompressorHuffmanTree(arrDecoderCodeLengths);\n iCurrentCode = 0;\n for (;;) {\n var symbol = void 0;\n var bNeedBreak = false;\n symbol = treeInternalDecoder.unpackSymbol(this);\n while ((symbol & ~15) === 0) {\n arrResultingCodeLengths[iCurrentCode++] = bLastSymbol = symbol;\n if (iCurrentCode === iResultingCodeLengthsCount) {\n bNeedBreak = true;\n break;\n }\n symbol = treeInternalDecoder.unpackSymbol(this);\n }\n if (bNeedBreak) {\n break;\n }\n if (symbol < 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n if (symbol >= 17) {\n bLastSymbol = 0;\n }\n else if (iCurrentCode === 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n var miRepSymbol = symbol - 16;\n var bits = CompressedStreamReader.DEF_HUFFMAN_DYNTREE_REPEAT_BITS[miRepSymbol];\n var count = this.readBits(bits);\n if (count < 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n count += CompressedStreamReader.DEF_HUFFMAN_DYNTREE_REPEAT_MINIMUMS[miRepSymbol];\n if (iCurrentCode + count > iResultingCodeLengthsCount) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n while (count-- > 0) {\n arrResultingCodeLengths[iCurrentCode++] = bLastSymbol;\n }\n if (iCurrentCode === iResultingCodeLengthsCount) {\n break;\n }\n }\n var tempArray = new Uint8Array(iLengthsCount);\n tempArray.set(arrResultingCodeLengths.subarray(0, iLengthsCount), 0);\n //sourceArray, sourceIndex, destinationArray, destinationIndex, length\n //Array.copy( arrResultingCodeLengths, 0, tempArray, 0, iLengthsCount );\n lengthTree = new DecompressorHuffmanTree(tempArray);\n tempArray = arrResultingCodeLengths.slice(iLengthsCount, iLengthsCount + iDistancesCount);\n //Array.copy( arrResultingCodeLengths, iLengthsCount, tempArray, 0, iDistancesCount );\n distanceTree = new DecompressorHuffmanTree(tempArray);\n return { 'lengthTree': lengthTree, 'distanceTree': distanceTree };\n };\n /// \n /// Decodes huffman codes.\n /// \n /// True if some data was read.\n CompressedStreamReader.prototype.readHuffman = function () {\n var free = this.DEF_MAX_WINDOW_SIZE - (this.mDataLength - this.mCurrentPosition);\n var dataRead = false;\n //long maxdistance = DEF_MAX_WINDOW_SIZE >> 1;\n var readdata = {};\n // DEF_HUFFMAN_REPEATE_MAX - longest repeatable block, we should always reserve space for it because\n // if we should not, we will have buffer overrun.\n while (free >= this.DEF_HUFFMAN_REPEATE_MAX) {\n var symbol = void 0;\n symbol = this.mCurrentLengthTree.unpackSymbol(this);\n // Only codes 0..255 are valid independent symbols.\n while (((symbol) & ~0xff) === 0) {\n readdata[(this.mDataLength + 1) % this.DEF_MAX_WINDOW_SIZE] = symbol;\n this.mBlockBuffer[this.mDataLength++ % this.DEF_MAX_WINDOW_SIZE] = symbol;\n dataRead = true;\n if (--free < this.DEF_HUFFMAN_REPEATE_MAX) {\n return true;\n }\n //if( (mDataLength - mCurrentPosition ) < maxdistance ) return true;\n symbol = this.mCurrentLengthTree.unpackSymbol(this);\n }\n if (symbol < this.DEF_HUFFMAN_LENGTH_MINIMUMCODE) {\n if (symbol < this.DEF_HUFFMAN_END_BLOCK) {\n throw new DOMException('Illegal code.');\n }\n var numDataRead = dataRead ? 1 : 0;\n this.mbCanReadMoreData = this.decodeBlockHeader();\n var numReadMore = (this.mbCanReadMoreData) ? 1 : 0;\n return (numDataRead | numReadMore) ? true : false;\n }\n if (symbol > this.DEF_HUFFMAN_LENGTH_MAXIMUMCODE) {\n throw new DOMException('Illegal repeat code length.');\n }\n var iRepeatLength = CompressedStreamReader.DEF_HUFFMAN_REPEAT_LENGTH_BASE[symbol -\n this.DEF_HUFFMAN_LENGTH_MINIMUMCODE];\n var iRepeatExtraBits = CompressedStreamReader.DEF_HUFFMAN_REPEAT_LENGTH_EXTENSION[symbol -\n this.DEF_HUFFMAN_LENGTH_MINIMUMCODE];\n if (iRepeatExtraBits > 0) {\n var extra = this.readBits(iRepeatExtraBits);\n if (extra < 0) {\n throw new DOMException('Wrong data.');\n }\n iRepeatLength += extra;\n }\n // Unpack repeat distance.\n symbol = this.mCurrentDistanceTree.unpackSymbol(this);\n if (symbol < 0 || symbol > CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_BASE.length) {\n throw new DOMException('Wrong distance code.');\n }\n var iRepeatDistance = CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_BASE[symbol];\n iRepeatExtraBits = CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_EXTENSION[symbol];\n if (iRepeatExtraBits > 0) {\n var extra = this.readBits(iRepeatExtraBits);\n if (extra < 0) {\n throw new DOMException('Wrong data.');\n }\n iRepeatDistance += extra;\n }\n // Copy data in slow repeat mode\n for (var i = 0; i < iRepeatLength; i++) {\n this.mBlockBuffer[this.mDataLength % this.DEF_MAX_WINDOW_SIZE] =\n this.mBlockBuffer[(this.mDataLength - iRepeatDistance) % this.DEF_MAX_WINDOW_SIZE];\n this.mDataLength++;\n free--;\n }\n dataRead = true;\n }\n return dataRead;\n };\n /// \n /// Reads data to buffer.\n /// \n /// Output buffer for data.\n /// Offset in output data.\n /// Length of the data to be read.\n /// Count of bytes actually read.\n CompressedStreamReader.prototype.read = function (buffer, offset, length) {\n if (buffer == null) {\n throw new DOMException('buffer');\n }\n if (offset < 0 || offset > buffer.length - 1) {\n throw new DOMException('offset', 'Offset does not belong to specified buffer.');\n }\n if (length < 0 || length > buffer.length - offset) {\n throw new DOMException('length', 'Length is illegal.');\n }\n var initialLength = length;\n while (length > 0) {\n // Read from internal buffer.\n if (this.mCurrentPosition < this.mDataLength) {\n // Position in buffer array.\n var inBlockPosition = (this.mCurrentPosition % this.DEF_MAX_WINDOW_SIZE);\n // We can not read more than we have in buffer at once,\n // and we not read more than till the array end.\n var dataToCopy = Math.min(this.DEF_MAX_WINDOW_SIZE - inBlockPosition, (this.mDataLength - this.mCurrentPosition));\n // Reading not more, than the rest of the buffer.\n dataToCopy = Math.min(dataToCopy, length);\n //sourceArray, sourceIndex, destinationArray, destinationIndex, length\n // Copy data.\n //Array.Copy( mBlockBuffer, inBlockPosition, buffer, offset, dataToCopy );\n //buffer.set(this.mBlockBuffer.slice(inBlockPosition, dataToCopy), offset);\n Utils.arrayCopy(this.mBlockBuffer, inBlockPosition, buffer, offset, dataToCopy);\n // Correct position, length,\n this.mCurrentPosition += dataToCopy;\n offset += dataToCopy;\n length -= dataToCopy;\n }\n else {\n if (!this.mbCanReadMoreData) {\n break;\n }\n var oldDataLength = this.mDataLength;\n if (!this.mbReadingUncompressed) {\n if (!this.readHuffman()) {\n break;\n }\n }\n else {\n if (this.mUncompressedDataLength === 0) {\n // If there is no more data in stream, just exit.\n this.mbCanReadMoreData = this.decodeBlockHeader();\n if (!(this.mbCanReadMoreData)) {\n break;\n }\n }\n else {\n // Position of the data end in block buffer.\n var inBlockPosition = (this.mDataLength % this.DEF_MAX_WINDOW_SIZE);\n var dataToRead = Math.min(this.mUncompressedDataLength, this.DEF_MAX_WINDOW_SIZE - inBlockPosition);\n var dataRead = this.readPackedBytes(this.mBlockBuffer, inBlockPosition, dataToRead);\n if (dataToRead !== dataRead) {\n throw new DOMException('Not enough data in stream.');\n }\n this.mUncompressedDataLength -= dataRead;\n this.mDataLength += dataRead;\n }\n }\n if (oldDataLength < this.mDataLength) {\n var start = (oldDataLength % this.DEF_MAX_WINDOW_SIZE);\n var end = (this.mDataLength % this.DEF_MAX_WINDOW_SIZE);\n if (start < end) {\n this.checksumUpdate(this.mBlockBuffer, start, end - start);\n }\n else {\n this.checksumUpdate(this.mBlockBuffer, start, this.DEF_MAX_WINDOW_SIZE - start);\n if (end > 0) {\n this.checksumUpdate(this.mBlockBuffer, 0, end);\n }\n }\n }\n }\n }\n if (!this.mbCanReadMoreData && !this.mbCheckSumRead && !this.mbNoWrap) {\n this.skipToBoundary();\n var checkSum = this.readInt32();\n //Debug.Assert( checkSum == mCheckSum, \"\" );\n if (checkSum !== this.mCheckSum) {\n throw new DOMException('Checksum check failed.');\n }\n this.mbCheckSumRead = true;\n }\n return initialLength - length;\n };\n /// \n /// Reads array of bytes.\n /// \n /// Output buffer.\n /// Offset in output buffer.\n /// Length of the data to be read.\n /// Count of bytes actually read to the buffer.\n CompressedStreamReader.prototype.readPackedBytes = function (buffer, offset, length) {\n if (buffer == null) {\n throw new DOMException('buffer');\n }\n if (offset < 0 || offset > buffer.length - 1) {\n throw new DOMException('offset\", \"Offset can not be less than zero or greater than buffer length - 1.');\n }\n if (length < 0) {\n throw new DOMException('length\", \"Length can not be less than zero.');\n }\n if (length > buffer.length - offset) {\n throw new DOMException('length\", \"Length is too large.');\n }\n if ((this.mBufferedBits & 7) !== 0) {\n throw new DOMException('Reading of unalligned data is not supported.');\n }\n if (length === 0) {\n return 0;\n }\n var result = 0;\n while (this.mBufferedBits > 0 && length > 0) {\n buffer[offset++] = (this.mBuffer);\n this.mBufferedBits -= 8;\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> 8);\n length--;\n result++;\n }\n if (length > 0) {\n //TODO: Fix this.\n result += this.mInputStream.read(buffer, offset, length);\n }\n return result;\n };\n /// \n /// TODO: place correct comment here\n /// \n /// \n /// TODO: place correct comment here\n /// \n CompressedStreamReader.prototype.readInt32 = function () {\n var result = this.readBits(8) << 24;\n result |= this.readBits(8) << 16;\n result |= this.readBits(8) << 8;\n result |= this.readBits(8);\n return result;\n };\n /// \n /// Updates checksum by calculating checksum of the\n /// given buffer and adding it to current value.\n /// \n /// Data byte array.\n /// Offset in the buffer.\n /// Length of data to be used from the stream.\n CompressedStreamReader.prototype.checksumUpdate = function (buffer, offset, length) {\n ChecksumCalculator.ChecksumUpdate(this.mCheckSum, buffer, offset, length);\n };\n CompressedStreamReader.DEF_REVERSE_BITS = new Uint8Array([0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15]);\n /// \n /// Minimum count of repetions.\n /// \n CompressedStreamReader.DEF_HUFFMAN_DYNTREE_REPEAT_MINIMUMS = [3, 3, 11];\n /// \n /// Bits, that responds for different repetion modes.\n /// \n CompressedStreamReader.DEF_HUFFMAN_DYNTREE_REPEAT_BITS = [2, 3, 7];\n /// \n /// Length bases.\n /// \n CompressedStreamReader.DEF_HUFFMAN_REPEAT_LENGTH_BASE = [\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258\n ];\n /// \n /// Length extended bits count.\n /// \n CompressedStreamReader.DEF_HUFFMAN_REPEAT_LENGTH_EXTENSION = [\n 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2,\n 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0\n ];\n /// \n /// Distance bases.\n /// \n CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_BASE = [\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577\n ];\n /// \n /// Distance extanded bits count.\n /// \n CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_EXTENSION = [\n 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,\n 7, 7, 8, 8, 9, 9, 10, 10, 11, 11,\n 12, 12, 13, 13\n ];\n return CompressedStreamReader;\n}());\nexport { CompressedStreamReader };\nvar Stream = /** @class */ (function () {\n function Stream(input) {\n this.position = 0;\n this.inputStream = new Uint8Array(input.buffer);\n }\n Object.defineProperty(Stream.prototype, \"length\", {\n get: function () {\n return this.inputStream.buffer.byteLength;\n },\n enumerable: true,\n configurable: true\n });\n Stream.prototype.read = function (buffer, start, length) {\n var temp = new Uint8Array(this.inputStream.buffer, this.position + start);\n var data = temp.subarray(0, length);\n buffer.set(data, 0);\n this.position += data.byteLength;\n return data.byteLength;\n };\n Stream.prototype.readByte = function () {\n return this.inputStream[this.position++];\n };\n Stream.prototype.write = function (inputBuffer, offset, count) {\n Utils.arrayCopy(inputBuffer, 0, this.inputStream, this.position + offset, count);\n // this.inputStream = new Uint8Array(this.inputStream.buffer, this.position + offset);\n // this.inputStream.set(inputBuffer, offset);\n this.position += count;\n };\n Stream.prototype.toByteArray = function () {\n return new Uint8Array(this.inputStream.buffer);\n };\n return Stream;\n}());\nexport { Stream };\n/* eslint-enable */ \n","/* eslint-disable */\nimport { CompressedStreamWriter, Stream, CompressedStreamReader } from './index';\nimport { Save } from '@syncfusion/ej2-file-utils';\nimport { Utils } from './utils';\nvar CRC32TABLE = [];\n/// \n/// Size of the int value in bytes.\n/// \nvar INT_SIZE = 4;\n/// \n/// Size of the short value in bytes.\n/// \nvar SHORT_SIZE = 2;\n/// \n/// End of central directory signature.\n/// \nvar CentralDirectoryEndSignature = 0x06054b50;\n/// \n/// Offset to the size field in the End of central directory record.\n/// \nvar CentralDirSizeOffset = 12;\n/// \n/// Central header signature.\n/// \nvar CentralHeaderSignature = 0x02014b50;\n/// \n/// Buffer size.\n/// \nvar BufferSize = 4096;\n/**\n * class provide compression library\n * ```typescript\n * let archive = new ZipArchive();\n * archive.compressionLevel = 'Normal';\n * let archiveItem = new ZipArchiveItem(archive, 'directoryName\\fileName.txt');\n * archive.addItem(archiveItem);\n * archive.save(fileName.zip);\n * ```\n */\nvar ZipArchive = /** @class */ (function () {\n /**\n * constructor for creating ZipArchive instance\n */\n function ZipArchive() {\n if (CRC32TABLE.length === 0) {\n ZipArchive.initCrc32Table();\n }\n this.files = [];\n this.level = 'Normal';\n Save.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n }\n Object.defineProperty(ZipArchive.prototype, \"items\", {\n get: function () {\n return this.files;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZipArchive.prototype, \"compressionLevel\", {\n /**\n * gets compression level\n */\n get: function () {\n return this.level;\n },\n /**\n * sets compression level\n */\n set: function (level) {\n this.level = level;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZipArchive.prototype, \"length\", {\n /**\n * gets items count\n */\n get: function () {\n if (this.files === undefined) {\n return 0;\n }\n return this.files.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * add new item to archive\n * @param {ZipArchiveItem} item - item to be added\n * @returns {void}\n */\n ZipArchive.prototype.addItem = function (item) {\n if (item === null || item === undefined) {\n throw new Error('ArgumentException: item cannot be null or undefined');\n }\n for (var i = 0; i < this.files.length; i++) {\n var file = this.files[i];\n if (file instanceof ZipArchiveItem) {\n if (file.name === item.name) {\n throw new Error('item with same name already exist');\n }\n }\n }\n this.files.push(item);\n };\n /**\n * add new directory to archive\n * @param directoryName directoryName to be created\n * @returns {void}\n */\n ZipArchive.prototype.addDirectory = function (directoryName) {\n if (directoryName === null || directoryName === undefined) {\n throw new Error('ArgumentException: string cannot be null or undefined');\n }\n if (directoryName.length === 0) {\n throw new Error('ArgumentException: string cannot be empty');\n }\n if (directoryName.slice(-1) !== '/') {\n directoryName += '/';\n }\n if (this.files.indexOf(directoryName) !== -1) {\n throw new Error('item with same name already exist');\n }\n this.files.push(directoryName);\n };\n /**\n * gets item at specified index\n * @param {number} index - item index\n * @returns {ZipArchiveItem}\n */\n ZipArchive.prototype.getItem = function (index) {\n if (index >= 0 && index < this.files.length) {\n return this.files[index];\n }\n return undefined;\n };\n /**\n * determines whether an element is in the collection\n * @param {string | ZipArchiveItem} item - item to search\n * @returns {boolean}\n */\n ZipArchive.prototype.contains = function (item) {\n return this.files.indexOf(item) !== -1 ? true : false;\n };\n ZipArchive.prototype.open = function (base64String) {\n //return promise = new Promise((resolve: Function, reject: Function) => {\n var zipArchive = this;\n var zipByteArray = Utils.encodedString(base64String);\n if (zipByteArray.length == 0)\n throw new DOMException(\"stream\");\n var stream = new Stream(zipByteArray);\n //let lCentralDirEndPosition = this.findValueFromEnd( arrBuffer, Constants.CentralDirectoryEndSignature, 65557 );\n var lCentralDirEndPosition = ZipArchive.findValueFromEnd(stream, CentralDirectoryEndSignature, 65557);\n if (lCentralDirEndPosition < 0)\n throw new DOMException(\"Can't locate end of central directory record. Possible wrong file format or archive is corrupt.\");\n // Step2. Locate central directory and iterate through all items\n stream.position = lCentralDirEndPosition + CentralDirSizeOffset;\n var iCentralDirSize = ZipArchive.ReadInt32(stream);\n var lCentralDirPosition = lCentralDirEndPosition - iCentralDirSize;\n // verify that this is really central directory\n stream.position = lCentralDirPosition;\n this.readCentralDirectoryDataAndExtractItems(stream);\n //});\n // let zipArchive: ZipArchive = this;\n //let promise: Promise;\n // return promise = new Promise((resolve: Function, reject: Function) => {\n // let reader: FileReader = new FileReader();\n // reader.onload = (e: Event) => {\n // let data: Uint8Array = new Uint8Array((e.target as any).result);\n // let zipReader: ZipReader = new ZipReader(data);\n // zipReader.readEntries().then((entries: ZipEntry[]) => {\n // for (let i: number = 0; i < entries.length; i++) {\n // let entry: ZipEntry = entries[i];\n // let item: ZipArchiveItem = new ZipArchiveItem(zipArchive, entry.fileName);\n // item.data = entry.data;\n // item.compressionMethod = entry.compressionMethod;\n // item.crc = entry.crc;\n // item.lastModified = entry.lastModified;\n // item.lastModifiedDate = entry.lastModifiedDate;\n // item.size = entry.size;\n // item.uncompressedSize = entry.uncompressedSize;\n // zipArchive.addItem(item);\n // }\n // resolve(zipArchive);\n // });\n // };\n // reader.readAsArrayBuffer(fileName);\n // });\n };\n /// \n /// Read central directory record from the stream.\n /// \n /// Stream to read from.\n ZipArchive.prototype.readCentralDirectoryDataAndExtractItems = function (stream) {\n if (stream == null)\n throw new DOMException(\"stream\");\n var itemHelper;\n while (ZipArchive.ReadInt32(stream) == CentralHeaderSignature) {\n itemHelper = new ZipArchiveItemHelper();\n itemHelper.readCentralDirectoryData(stream);\n itemHelper;\n // let item: ZipArchiveItem = new ZipArchiveItem(this);\n // item.ReadCentralDirectoryData(stream);\n // m_arrItems.Add(item);\n }\n itemHelper.readData(stream, itemHelper.checkCrc);\n itemHelper.decompressData();\n this.files.push(new ZipArchiveItem(itemHelper.unCompressedStream.buffer, itemHelper.name));\n };\n /**\n * save archive with specified file name\n * @param {string} fileName save archive with specified file name\n * @returns {Promise}\n */\n ZipArchive.prototype.save = function (fileName) {\n if (fileName === null || fileName === undefined || fileName.length === 0) {\n throw new Error('ArgumentException: fileName cannot be null or undefined');\n }\n if (this.files.length === 0) {\n throw new Error('InvalidOperation');\n }\n var zipArchive = this;\n var promise;\n return promise = new Promise(function (resolve, reject) {\n zipArchive.saveInternal(fileName, false).then(function () {\n resolve(zipArchive);\n });\n });\n };\n /**\n * Save archive as blob\n * @return {Promise}\n */\n ZipArchive.prototype.saveAsBlob = function () {\n var zipArchive = this;\n var promise;\n return promise = new Promise(function (resolve, reject) {\n zipArchive.saveInternal('', true).then(function (blob) {\n resolve(blob);\n });\n });\n };\n ZipArchive.prototype.saveInternal = function (fileName, skipFileSave) {\n var _this = this;\n var zipArchive = this;\n var promise;\n return promise = new Promise(function (resolve, reject) {\n var zipData = [];\n var dirLength = 0;\n for (var i = 0; i < zipArchive.files.length; i++) {\n var compressedObject = _this.getCompressedData(_this.files[i]);\n compressedObject.then(function (data) {\n dirLength = zipArchive.constructZippedObject(zipData, data, dirLength, data.isDirectory);\n if (zipData.length === zipArchive.files.length) {\n var blob = zipArchive.writeZippedContent(fileName, zipData, dirLength, skipFileSave);\n resolve(blob);\n }\n });\n }\n });\n };\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n ZipArchive.prototype.destroy = function () {\n if (this.files !== undefined && this.files.length > 0) {\n for (var i = 0; i < this.files.length; i++) {\n var file = this.files[i];\n if (file instanceof ZipArchiveItem) {\n file.destroy();\n }\n file = undefined;\n }\n this.files = [];\n }\n this.files = undefined;\n this.level = undefined;\n };\n ZipArchive.prototype.getCompressedData = function (item) {\n var zipArchive = this;\n var promise = new Promise(function (resolve, reject) {\n if (item instanceof ZipArchiveItem) {\n var reader_1 = new FileReader();\n reader_1.onload = function () {\n var input = new Uint8Array(reader_1.result);\n var data = {\n fileName: item.name, crc32Value: 0, compressedData: [],\n compressedSize: undefined, uncompressedDataSize: input.length, compressionType: undefined,\n isDirectory: false\n };\n if (zipArchive.level === 'Normal') {\n zipArchive.compressData(input, data, CRC32TABLE);\n var length_1 = 0;\n for (var i = 0; i < data.compressedData.length; i++) {\n length_1 += data.compressedData[i].length;\n }\n data.compressedSize = length_1;\n data.compressionType = '\\x08\\x00'; //Deflated = 8\n }\n else {\n data.compressedSize = input.length;\n data.crc32Value = zipArchive.calculateCrc32Value(0, input, CRC32TABLE);\n data.compressionType = '\\x00\\x00'; // Stored = 0\n data.compressedData.push(input);\n }\n resolve(data);\n };\n reader_1.readAsArrayBuffer(item.data);\n }\n else {\n var data = {\n fileName: item, crc32Value: 0, compressedData: '', compressedSize: 0, uncompressedDataSize: 0,\n compressionType: '\\x00\\x00', isDirectory: true\n };\n resolve(data);\n }\n });\n return promise;\n };\n ZipArchive.prototype.compressData = function (input, data, crc32Table) {\n var compressor = new CompressedStreamWriter(true);\n var currentIndex = 0;\n var nextIndex = 0;\n do {\n if (currentIndex >= input.length) {\n compressor.close();\n break;\n }\n nextIndex = Math.min(input.length, currentIndex + 16384);\n var subArray = input.subarray(currentIndex, nextIndex);\n data.crc32Value = this.calculateCrc32Value(data.crc32Value, subArray, crc32Table);\n compressor.write(subArray, 0, nextIndex - currentIndex);\n currentIndex = nextIndex;\n } while (currentIndex <= input.length);\n data.compressedData = compressor.compressedData;\n compressor.destroy();\n };\n ZipArchive.prototype.constructZippedObject = function (zipParts, data, dirLength, isDirectory) {\n var extFileAttr = 0;\n var date = new Date();\n if (isDirectory) {\n extFileAttr = extFileAttr | 0x00010; // directory flag\n }\n extFileAttr = extFileAttr | (0 & 0x3F);\n var header = this.writeHeader(data, date);\n var localHeader = 'PK\\x03\\x04' + header + data.fileName;\n var centralDir = this.writeCentralDirectory(data, header, dirLength, extFileAttr);\n zipParts.push({ localHeader: localHeader, centralDir: centralDir, compressedData: data });\n return dirLength + localHeader.length + data.compressedSize;\n };\n ZipArchive.prototype.writeHeader = function (data, date) {\n var zipHeader = '';\n zipHeader += '\\x0A\\x00' + '\\x00\\x00'; // version needed to extract & general purpose bit flag\n zipHeader += data.compressionType; // compression method Deflate=8,Stored=0\n zipHeader += this.getBytes(this.getModifiedTime(date), 2); // last modified Time\n zipHeader += this.getBytes(this.getModifiedDate(date), 2); // last modified date\n zipHeader += this.getBytes(data.crc32Value, 4); // crc-32 value\n zipHeader += this.getBytes(data.compressedSize, 4); // compressed file size\n zipHeader += this.getBytes(data.uncompressedDataSize, 4); // uncompressed file size\n zipHeader += this.getBytes(data.fileName.length, 2); // file name length\n zipHeader += this.getBytes(0, 2); // extra field length\n return zipHeader;\n };\n ZipArchive.prototype.writeZippedContent = function (fileName, zipData, localDirLen, skipFileSave) {\n var cenDirLen = 0;\n var buffer = [];\n for (var i = 0; i < zipData.length; i++) {\n var item = zipData[i];\n cenDirLen += item.centralDir.length;\n buffer.push(this.getArrayBuffer(item.localHeader));\n while (item.compressedData.compressedData.length) {\n buffer.push(item.compressedData.compressedData.shift().buffer);\n }\n }\n for (var i = 0; i < zipData.length; i++) {\n buffer.push(this.getArrayBuffer(zipData[i].centralDir));\n }\n buffer.push(this.getArrayBuffer(this.writeFooter(zipData, cenDirLen, localDirLen)));\n var blob = new Blob(buffer, { type: 'application/zip' });\n if (!skipFileSave) {\n Save.save(fileName, blob);\n }\n return blob;\n };\n ZipArchive.prototype.writeCentralDirectory = function (data, localHeader, offset, externalFileAttribute) {\n var directoryHeader = 'PK\\x01\\x02' +\n this.getBytes(0x0014, 2) + localHeader + // inherit from file header\n this.getBytes(0, 2) + // comment length\n '\\x00\\x00' + '\\x00\\x00' + // internal file attributes \n this.getBytes(externalFileAttribute, 4) + // external file attributes\n this.getBytes(offset, 4) + // local fileHeader relative offset\n data.fileName;\n return directoryHeader;\n };\n ZipArchive.prototype.writeFooter = function (zipData, centralLength, localLength) {\n var dirEnd = 'PK\\x05\\x06' + '\\x00\\x00' + '\\x00\\x00' +\n this.getBytes(zipData.length, 2) + this.getBytes(zipData.length, 2) +\n this.getBytes(centralLength, 4) + this.getBytes(localLength, 4) +\n this.getBytes(0, 2);\n return dirEnd;\n };\n ZipArchive.prototype.getArrayBuffer = function (input) {\n var a = new Uint8Array(input.length);\n for (var j = 0; j < input.length; ++j) {\n a[j] = input.charCodeAt(j) & 0xFF;\n }\n return a.buffer;\n };\n ZipArchive.prototype.getBytes = function (value, offset) {\n var bytes = '';\n for (var i = 0; i < offset; i++) {\n bytes += String.fromCharCode(value & 0xff);\n value = value >>> 8;\n }\n return bytes;\n };\n ZipArchive.prototype.getModifiedTime = function (date) {\n var modTime = date.getHours();\n modTime = modTime << 6;\n modTime = modTime | date.getMinutes();\n modTime = modTime << 5;\n return modTime = modTime | date.getSeconds() / 2;\n };\n ZipArchive.prototype.getModifiedDate = function (date) {\n var modiDate = date.getFullYear() - 1980;\n modiDate = modiDate << 4;\n modiDate = modiDate | (date.getMonth() + 1);\n modiDate = modiDate << 5;\n return modiDate = modiDate | date.getDate();\n };\n ZipArchive.prototype.calculateCrc32Value = function (crc32Value, input, crc32Table) {\n crc32Value ^= -1;\n for (var i = 0; i < input.length; i++) {\n crc32Value = (crc32Value >>> 8) ^ crc32Table[(crc32Value ^ input[i]) & 0xFF];\n }\n return (crc32Value ^ (-1));\n };\n /**\n * construct cyclic redundancy code table\n * @private\n */\n ZipArchive.initCrc32Table = function () {\n var i;\n for (var j = 0; j < 256; j++) {\n i = j;\n for (var k = 0; k < 8; k++) {\n i = ((i & 1) ? (0xEDB88320 ^ (i >>> 1)) : (i >>> 1));\n }\n CRC32TABLE[j] = i;\n }\n };\n ZipArchive.findValueFromEnd = function (stream, value, maxCount) {\n if (stream == null)\n throw new DOMException(\"stream\");\n // if( !stream.CanSeek || !stream.CanRead )\n // throw new ArgumentOutOfRangeException( \"We need to have seekable and readable stream.\" );\n // read last 4 bytes and compare with required value\n var lStreamSize = stream.inputStream.buffer.byteLength;\n if (lStreamSize < 4)\n return -1;\n var arrBuffer = new Uint8Array(4);\n var lLastPos = Math.max(0, lStreamSize - maxCount);\n var lCurrentPosition = lStreamSize - 1 - INT_SIZE;\n stream.position = lCurrentPosition;\n stream.read(arrBuffer, 0, INT_SIZE);\n var uiCurValue = arrBuffer[0];\n var bFound = (uiCurValue == value);\n if (!bFound) {\n while (lCurrentPosition > lLastPos) {\n // remove unnecessary byte and replace it with new value.\n uiCurValue <<= 8;\n lCurrentPosition--;\n stream.position = lCurrentPosition;\n uiCurValue += stream.readByte();\n if (uiCurValue == value) {\n bFound = true;\n break;\n }\n }\n }\n return bFound ? lCurrentPosition : -1;\n };\n /// \n /// Extracts Int32 value from the stream.\n /// \n /// Stream to read data from.\n /// Extracted value.\n ZipArchive.ReadInt32 = function (stream) {\n var buffer = new Uint8Array(INT_SIZE);\n if (stream.read(buffer, 0, INT_SIZE) != INT_SIZE) {\n throw new DOMException(\"Unable to read value at the specified position - end of stream was reached.\");\n }\n return Utils.bitConverterToInt32(buffer, 0);\n };\n /// \n /// Extracts Int16 value from the stream.\n /// \n /// Stream to read data from.\n /// Extracted value.\n ZipArchive.ReadInt16 = function (stream) {\n var buffer = new Uint8Array(SHORT_SIZE);\n if (stream.read(buffer, 0, SHORT_SIZE) != SHORT_SIZE) {\n throw new DOMException(\"Unable to read value at the specified position - end of stream was reached.\");\n }\n return Utils.bitConverterToInt16(buffer, 0);\n };\n /// \n /// Extracts unsigned Int16 value from the stream.\n /// \n /// Stream to read data from.\n /// Extracted value.\n ZipArchive.ReadUInt16 = function (stream) {\n {\n var buffer = new Uint8Array(SHORT_SIZE);\n if (stream.read(buffer, 0, SHORT_SIZE) != SHORT_SIZE) {\n throw new DOMException(\"Unable to read value at the specified position - end of stream was reached.\");\n }\n return Utils.bitConverterToInt16(buffer, 0);\n }\n };\n return ZipArchive;\n}());\nexport { ZipArchive };\nvar ZipArchiveItemHelper = /** @class */ (function () {\n function ZipArchiveItemHelper() {\n /// \n /// Zip header signature.\n /// \n this.headerSignature = 0x04034b50;\n /// \n /// Indicates whether we should check Crc value when reading item's data. Check\n /// is performed when user gets access to decompressed data for the first time.\n /// \n this.checkCrc = true;\n /// \n /// Crc.\n /// \n this.crc32 = 0;\n }\n /// \n /// Read data from the stream based on the central directory.\n /// \n /// Stream to read data from, stream.Position must point at just after correct file header.\n ZipArchiveItemHelper.prototype.readCentralDirectoryData = function (stream) {\n // on the current moment we ignore \"version made by\" and \"version needed to extract\" fields.\n stream.position += 4;\n this.options = ZipArchive.ReadInt16(stream);\n this.compressionMethod = ZipArchive.ReadInt16(stream);\n this.checkCrc = (this.compressionMethod != 99); //COmpression.Defalte != SecurityConstants.AES\n //m_bCompressed = true;\n // on the current moment we ignore \"last mod file time\" and \"last mod file date\" fields.\n var lastModified = ZipArchive.ReadInt32(stream);\n //LastModified = ConvertToDateTime(lastModified);\n this.crc32 = Utils.bitConverterToUInt32(ZipArchive.ReadInt32(stream));\n this.compressedSize = ZipArchive.ReadInt32(stream);\n this.originalSize = ZipArchive.ReadInt32(stream);\n var iFileNameLength = ZipArchive.ReadInt16(stream);\n var iExtraFieldLenth = ZipArchive.ReadInt16(stream);\n var iCommentLength = ZipArchive.ReadInt16(stream);\n // on the current moment we ignore and \"disk number start\" (2 bytes),\n // \"internal file attributes\" (2 bytes).\n stream.position += 4;\n this.externalAttributes = ZipArchive.ReadInt32(stream);\n this.localHeaderOffset = ZipArchive.ReadInt32(stream);\n var arrBuffer = new Uint8Array(iFileNameLength);\n stream.read(arrBuffer, 0, iFileNameLength);\n var m_strItemName = Utils.byteToString(arrBuffer);\n m_strItemName = m_strItemName.replace(\"\\\\\", \"/\");\n this.name = m_strItemName;\n stream.position += iExtraFieldLenth + iCommentLength;\n if (this.options != 0)\n this.options = 0;\n };\n /// \n /// Reads zipped data from the stream.\n /// \n /// Stream to read data from.\n /// Indicates whether we should check crc value after data decompression.\n ZipArchiveItemHelper.prototype.readData = function (stream, checkCrc) {\n if (stream.length == 0)\n throw new DOMException(\"stream\");\n stream.position = this.localHeaderOffset;\n this.checkCrc = checkCrc;\n this.readLocalHeader(stream);\n this.readCompressedData(stream);\n };\n ZipArchiveItemHelper.prototype.decompressData = function () {\n if (this.compressionMethod == 8) {\n if (this.originalSize > 0) {\n this.decompressDataOld();\n }\n }\n };\n ZipArchiveItemHelper.prototype.decompressDataOld = function () {\n var reader = new CompressedStreamReader(this.compressedStream, true);\n var decompressedData;\n if (this.originalSize > 0)\n decompressedData = new Stream(new Uint8Array(this.originalSize));\n var arrBuffer = new Uint8Array(BufferSize);\n var iReadBytes;\n var past = new Uint8Array(0);\n while ((iReadBytes = reader.read(arrBuffer, 0, BufferSize)) > 0) {\n // past = new Uint8Array(decompressedData.length);\n // let currentBlock: Uint8Array = arrBuffer.subarray(0, iReadBytes);\n decompressedData.write(arrBuffer.subarray(0, iReadBytes), 0, iReadBytes);\n }\n this.unCompressedStream = decompressedData.toByteArray();\n // this.originalSize = decompressedData.Length;\n // m_bControlStream = true;\n // m_streamData = decompressedData;\n // decompressedData.SetLength( m_lOriginalSize );\n // decompressedData.Capacity = ( int )m_lOriginalSize;\n if (this.checkCrc) {\n //TODO: fix this\n //CheckCrc(decompressedData.ToArray());\n }\n //m_streamData.Position = 0;\n };\n /// \n /// Extracts local header from the stream.\n /// \n /// Stream to read data from.\n ZipArchiveItemHelper.prototype.readLocalHeader = function (stream) {\n if (stream.length == 0)\n throw new DOMException(\"stream\");\n if (ZipArchive.ReadInt32(stream) != this.headerSignature)\n throw new DOMException(\"Can't find local header signature - wrong file format or file is corrupt.\");\n // TODO: it is good to verify data read from the central directory record,\n // but on the current moment we simply skip it.\n stream.position += 22;\n var iNameLength = ZipArchive.ReadInt16(stream);\n var iExtraLength = ZipArchive.ReadUInt16(stream);\n if (this.compressionMethod == 99) //SecurityConstants.AES\n {\n // stream.Position += iNameLength + 8;\n // m_archive.EncryptionAlgorithm = (EncryptionAlgorithm)stream.ReadByte();\n // m_actualCompression = new byte[2];\n // stream.Read(m_actualCompression, 0, 2);\n }\n else if (iExtraLength > 2) {\n stream.position += iNameLength;\n var headerVal = ZipArchive.ReadInt16(stream);\n if (headerVal == 0x0017) //PKZipEncryptionHeader\n throw new DOMException(\"UnSupported\");\n else\n stream.position += iExtraLength - 2;\n }\n else\n stream.position += iNameLength + iExtraLength;\n };\n /// \n /// Extracts compressed data from the stream.\n /// \n /// Stream to read data from.\n ZipArchiveItemHelper.prototype.readCompressedData = function (stream) {\n var dataStream;\n if (this.compressedSize > 0) {\n var iBytesLeft = this.compressedSize;\n dataStream = new Stream(new Uint8Array(iBytesLeft));\n var arrBuffer = new Uint8Array(BufferSize);\n while (iBytesLeft > 0) {\n var iBytesToRead = Math.min(iBytesLeft, BufferSize);\n if (stream.read(arrBuffer, 0, iBytesToRead) != iBytesToRead)\n throw new DOMException(\"End of file reached - wrong file format or file is corrupt.\");\n dataStream.write(arrBuffer.subarray(0, iBytesToRead), 0, iBytesToRead);\n iBytesLeft -= iBytesToRead;\n }\n // if(m_archive.Password != null)\n // {\n // byte[] dataBuffer = new byte[dataStream.Length];\n // dataBuffer = dataStream.ToArray();\n // dataStream=new MemoryStream( Decrypt(dataBuffer));\n // }\n this.compressedStream = new Uint8Array(dataStream.inputStream);\n // m_bControlStream = true;\n }\n else if (this.compressedSize < 0) //If compression size is negative, then read until the next header signature reached.\n {\n // MemoryStream dataStream = new MemoryStream();\n // int bt = 0;\n // bool proceed=true;\n // while (proceed)\n // {\n // if ((bt = stream.ReadByte()) == Constants.HeaderSignatureStartByteValue)\n // {\n // stream.Position -= 1;\n // int headerSignature = ZipArchive.ReadInt32(stream);\n // if (headerSignature==Constants.CentralHeaderSignature || headerSignature==Constants.CentralHeaderSignature)\n // {\n // proceed = false;\n // }\n // stream.Position -= 3;\n // }\n // if (proceed)\n // dataStream.WriteByte((byte)bt);\n // }\n // m_streamData = dataStream;\n // m_lCompressedSize = m_streamData.Length;\n // m_bControlStream = true;\n }\n else if (this.compressedSize == 0) {\n // m_streamData = new MemoryStream();\n }\n };\n return ZipArchiveItemHelper;\n}());\nexport { ZipArchiveItemHelper };\n/**\n * Class represent unique ZipArchive item\n * ```typescript\n * let archiveItem = new ZipArchiveItem(archive, 'directoryName\\fileName.txt');\n * ```\n */\nvar ZipArchiveItem = /** @class */ (function () {\n /**\n * constructor for creating {ZipArchiveItem} instance\n * @param {Blob|ArrayBuffer} data file data\n * @param {itemName} itemName absolute file path\n */\n function ZipArchiveItem(data, itemName) {\n if (data === null || data === undefined) {\n throw new Error('ArgumentException: data cannot be null or undefined');\n }\n if (itemName === null || itemName === undefined) {\n throw new Error('ArgumentException: string cannot be null or undefined');\n }\n if (itemName.length === 0) {\n throw new Error('string cannot be empty');\n }\n this.data = data;\n this.name = itemName;\n }\n Object.defineProperty(ZipArchiveItem.prototype, \"dataStream\", {\n get: function () {\n return this.decompressedStream;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZipArchiveItem.prototype, \"name\", {\n /**\n * Get the name of archive item\n * @returns string\n */\n get: function () {\n return this.fileName;\n },\n /**\n * Set the name of archive item\n * @param {string} value\n */\n set: function (value) {\n this.fileName = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n ZipArchiveItem.prototype.destroy = function () {\n this.fileName = undefined;\n this.data = undefined;\n };\n return ZipArchiveItem;\n}());\nexport { ZipArchiveItem };\n/* eslint-enable */ \n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Internationalization } from '@syncfusion/ej2-base';\n// import { IValueFormatter } from '../base/interface';\n/**\n * ValueFormatter class to globalize the value.\n * @private\n */\nvar ValueFormatter = /** @class */ (function () {\n function ValueFormatter(cultureName) {\n this.intl = new Internationalization();\n // if (!isNullOrUndefined(cultureName)) {\n // this.intl.culture = cultureName;\n // }\n }\n ValueFormatter.prototype.getFormatFunction = function (format, isServerRendered) {\n if (format.type) {\n if (isServerRendered) {\n format.isServerRendered = true;\n }\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n // public getParserFunction(format: NumberFormatOptions | DateFormatOptions): Function {\n // if ((format).type) {\n // return this.intl.getDateParser(format);\n // } else {\n // return this.intl.getNumberParser(format);\n // }\n // }\n // public fromView(value: string, format: Function, type?: string): string | number | Date {\n // if (type === 'date' || type === 'datetime' || type === 'number') {\n // return format(value);\n // } else {\n // return value;\n // }\n // }\n ValueFormatter.prototype.toView = function (value, format) {\n var result = value;\n if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) {\n result = format(value);\n }\n return result;\n };\n // public setCulture(cultureName: string): void {\n // if (!isNullOrUndefined(cultureName)) {\n // setCulture(cultureName);\n // }\n // }\n /* tslint:disable:no-any */\n ValueFormatter.prototype.displayText = function (value, format, isServerRendered) {\n return this.toView(value, this.getFormatFunction(format, isServerRendered));\n };\n return ValueFormatter;\n}());\nexport { ValueFormatter };\n","import { ValueFormatter } from './value-formatter';\nimport { Encoding } from '@syncfusion/ej2-file-utils';\n/**\n * CsvHelper class\n * @private\n */\nvar CsvHelper = /** @class */ (function () {\n /* tslint:disable:no-any */\n function CsvHelper(json, separator) {\n this.csvStr = '';\n if (separator === null || separator === undefined) {\n this.separator = ',';\n }\n else {\n this.separator = separator;\n }\n this.formatter = new ValueFormatter();\n this.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n if (json.isServerRendered !== null && json.isServerRendered !== undefined) {\n this.isServerRendered = json.isServerRendered;\n }\n if (json.styles !== null && json.styles !== undefined) {\n this.globalStyles = new Map();\n for (var i = 0; i < json.styles.length; i++) {\n if (json.styles[i].name !== undefined && json.styles[i].numberFormat !== undefined) {\n this.globalStyles.set(json.styles[i].name, json.styles[i].numberFormat);\n }\n }\n }\n // Parses Worksheets data to DOM. \n if (json.worksheets !== null && json.worksheets !== undefined) {\n this.parseWorksheet(json.worksheets[0]);\n }\n //this.csvStr = 'a1,a2,a3\\nb1,b2,b3';\n }\n CsvHelper.prototype.parseWorksheet = function (json) {\n //Rows\n if (json.rows !== null && json.rows !== undefined) {\n this.parseRows(json.rows);\n }\n };\n /* tslint:disable:no-any */\n CsvHelper.prototype.parseRows = function (rows) {\n var count = 1;\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n //Row index\n if (row.index !== null && row.index !== undefined) {\n while (count < row.index) {\n this.csvStr += '\\r\\n';\n count++;\n }\n this.parseRow(row);\n }\n else {\n throw Error('Row index is missing.');\n }\n }\n this.csvStr += '\\r\\n';\n };\n /* tslint:disable:no-any */\n CsvHelper.prototype.parseRow = function (row) {\n if (row.cells !== null && row.cells !== undefined) {\n var count = 1;\n for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n //cell index\n if (cell.index !== null && cell.index !== undefined) {\n while (count < cell.index) {\n this.csvStr += this.separator;\n count++;\n }\n this.parseCell(cell);\n }\n else {\n throw Error('Cell index is missing.');\n }\n }\n }\n };\n /* tslint:disable:no-any */\n CsvHelper.prototype.parseCell = function (cell) {\n var csv = this.csvStr;\n if (cell.value !== undefined) {\n if (cell.value instanceof Date) {\n if (cell.style !== undefined && cell.style.numberFormat !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n try {\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', skeleton: cell.style.numberFormat }, this.isServerRendered));\n }\n catch (error) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', format: cell.style.numberFormat }, this.isServerRendered));\n }\n }\n else if (cell.style !== undefined && cell.style.name !== undefined && this.globalStyles.has(cell.style.name)) {\n /* tslint:disable-next-line:max-line-length */\n try {\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', skeleton: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n catch (error) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', format: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n }\n else {\n csv += cell.value;\n }\n }\n else if (typeof (cell.value) === 'boolean') {\n csv += cell.value ? 'TRUE' : 'FALSE';\n }\n else if (typeof (cell.value) === 'number') {\n if (cell.style !== undefined && cell.style.numberFormat !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { format: cell.style.numberFormat }, this.isServerRendered));\n }\n else if (cell.style !== undefined && cell.style.name !== undefined && this.globalStyles.has(cell.style.name)) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { format: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n else {\n csv += cell.value;\n }\n }\n else {\n csv += this.parseCellValue(cell.value);\n }\n }\n this.csvStr = csv;\n };\n CsvHelper.prototype.parseCellValue = function (value) {\n var val = '';\n var length = value.length;\n for (var start = 0; start < length; start++) {\n if (value[start] === '\\\"') {\n val += value[start].replace('\\\"', '\\\"\\\"');\n }\n else {\n val += value[start];\n }\n }\n value = val;\n if (value.indexOf(this.separator) !== -1 || value.indexOf('\\n') !== -1 || value.indexOf('\\\"') !== -1) {\n return value = '\\\"' + value + '\\\"';\n }\n else {\n return value;\n }\n };\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName- file name to save.\n * @param {Blob} buffer- the content to write in file\n */\n CsvHelper.prototype.save = function (fileName) {\n this.buffer = new Blob(['\\ufeff' + this.csvStr], { type: 'text/csv;charset=UTF-8' });\n if (this.isMicrosoftBrowser) {\n navigator.msSaveBlob(this.buffer, fileName);\n }\n else {\n var dataUrl_1 = window.URL.createObjectURL(this.buffer);\n var dwlLink = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');\n dwlLink.download = fileName;\n dwlLink.href = dataUrl_1;\n var event_1 = document.createEvent('MouseEvent');\n event_1.initEvent('click', true, true);\n dwlLink.dispatchEvent(event_1);\n setTimeout(function () {\n window.URL.revokeObjectURL(dataUrl_1);\n });\n }\n };\n /**\n * Returns a Blob object containing CSV data with optional encoding.\n * @param {string} [encodingType] - The supported encoding types are \"ansi\", \"unicode\" and \"utf8\".\n */\n /* tslint:disable:no-any */\n CsvHelper.prototype.saveAsBlob = function (encodingType) {\n if (encodingType != undefined) {\n var encoding = new Encoding();\n var encodeString = 'UTF-8';\n if (encodingType.toUpperCase() == \"ANSI\") {\n encoding.type = 'Ansi';\n encodeString = 'ANSI';\n }\n else if (encodingType.toUpperCase() == \"UNICODE\") {\n encoding.type = 'Unicode';\n encodeString = 'UNICODE';\n }\n else {\n encoding.type = 'Utf8';\n encodeString = 'UTF-8';\n }\n var buffer = encoding.getBytes(this.csvStr, 0, this.csvStr.length);\n return new Blob([buffer], { type: 'text/csv;charset=' + encodeString });\n }\n else\n return new Blob(['\\ufeff' + this.csvStr], { type: 'text/csv;charset=UTF-8' });\n };\n return CsvHelper;\n}());\nexport { CsvHelper };\n","/**\n * BlobHelper class\n * @private\n */\nvar BlobHelper = /** @class */ (function () {\n function BlobHelper() {\n /* tslint:disable:no-any */\n this.parts = [];\n }\n /* tslint:disable:no-any */\n BlobHelper.prototype.append = function (part) {\n this.parts.push(part);\n this.blob = undefined; // Invalidate the blob\n };\n BlobHelper.prototype.getBlob = function () {\n return new Blob(this.parts, { type: 'text/plain' });\n };\n return BlobHelper;\n}());\nexport { BlobHelper };\n","/**\n * AutoFilters class\n * @private\n */\nvar AutoFilters = /** @class */ (function () {\n function AutoFilters() {\n }\n return AutoFilters;\n}());\nexport { AutoFilters };\n","import { Worksheets } from './worksheets';\nimport { Worksheet, FreezePane, MergeCell, MergeCells, HyperLink, Grouping } from './worksheet';\nimport { CellStyle, Font, Borders, CellXfs, Alignment, NumFmt, CellStyleXfs, CellStyles } from './cell-style';\nimport { Column } from './column';\nimport { Row, Rows } from './row';\nimport { Image } from './image';\nimport { Cell, Cells } from './cell';\nimport { ZipArchive, ZipArchiveItem } from '@syncfusion/ej2-compression';\nimport { CsvHelper } from './csv-helper';\nimport { Internationalization, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { BlobHelper } from './blob-helper';\nimport { AutoFilters } from './auto-filters';\n/**\n * Workbook class\n */\nvar Workbook = /** @class */ (function () {\n /* tslint:disable:no-any */\n function Workbook(json, saveType, culture, currencyString, separator) {\n this.sharedStringCount = 0;\n this.unitsProportions = [\n 96 / 75.0,\n 96 / 300.0,\n 96,\n 96 / 25.4,\n 96 / 2.54,\n 1,\n 96 / 72.0,\n 96 / 72.0 / 12700,\n ];\n /* tslint:disable:no-any */\n this.hyperlinkStyle = { fontColor: '#0000FF', underline: true };\n if (culture !== undefined) {\n this.culture = culture;\n }\n else {\n this.culture = 'en-US';\n }\n if (currencyString !== undefined) {\n this.currency = currencyString;\n }\n else {\n this.currency = 'USD';\n }\n this.intl = new Internationalization(this.culture);\n this.mSaveType = saveType;\n if (saveType === 'xlsx') {\n this.mArchive = new ZipArchive();\n this.sharedString = [];\n this.mFonts = [];\n this.mBorders = [];\n this.mStyles = [];\n this.printTitles = new Map();\n this.cellStyles = new Map();\n this.mNumFmt = new Map();\n this.mFills = new Map();\n this.mStyles.push(new CellStyle());\n this.mFonts.push(new Font());\n /* tslint:disable */\n this.cellStyles.set('Normal', new CellStyles());\n /* tslint:enable */\n this.mCellXfs = [];\n this.mCellStyleXfs = [];\n this.drawingCount = 0;\n this.imageCount = 0;\n if (json.styles !== null && json.styles !== undefined) {\n /* tslint:disable-next-line:no-any */\n this.globalStyles = new Map();\n for (var i = 0; i < json.styles.length; i++) {\n if (json.styles[i].name !== undefined) {\n if (!this.cellStyles.has(json.styles[i].name)) {\n var cellStyle = new CellStyle();\n cellStyle.isGlobalStyle = true;\n this.parserCellStyle(json.styles[i], cellStyle, 'none');\n var cellStylesIn = new CellStyles();\n cellStylesIn.name = cellStyle.name;\n cellStylesIn.xfId = (cellStyle.index - 1);\n this.cellStyles.set(cellStylesIn.name, cellStylesIn);\n /* tslint:disable-next-line:no-any */\n var tFormat = {};\n if (json.styles[i].numberFormat !== undefined) {\n tFormat.format = json.styles[i].numberFormat;\n }\n if (json.styles[i].type !== undefined) {\n tFormat.type = json.styles[i].type;\n }\n else {\n tFormat.type = 'datetime';\n }\n if (tFormat.format !== undefined) {\n this.globalStyles.set(json.styles[i].name, tFormat);\n }\n }\n else {\n throw Error('Style name ' + json.styles[i].name + ' is already existed');\n }\n }\n }\n }\n // Parses Worksheets data to DOM. \n if (json.worksheets !== null && json.worksheets !== undefined) {\n this.parserWorksheets(json.worksheets);\n }\n else {\n throw Error('Worksheet is expected.');\n }\n // Parses the BuiltInProperties data to DOM. \n if (json.builtInProperties !== null && json.builtInProperties !== undefined) {\n this.builtInProperties = new BuiltInProperties();\n this.parserBuiltInProperties(json.builtInProperties, this.builtInProperties);\n }\n }\n else {\n this.csvHelper = new CsvHelper(json, separator);\n }\n }\n /* tslint:disable:no-any */\n Workbook.prototype.parserBuiltInProperties = function (jsonBuiltInProperties, builtInProperties) {\n //Author\n if (jsonBuiltInProperties.author !== null && jsonBuiltInProperties.author !== undefined) {\n builtInProperties.author = jsonBuiltInProperties.author;\n }\n //Comments\n if (jsonBuiltInProperties.comments !== null && jsonBuiltInProperties.comments !== undefined) {\n builtInProperties.comments = jsonBuiltInProperties.comments;\n }\n //Category\n if (jsonBuiltInProperties.category !== null && jsonBuiltInProperties.category !== undefined) {\n builtInProperties.category = jsonBuiltInProperties.category;\n }\n //Company\n if (jsonBuiltInProperties.company !== null && jsonBuiltInProperties.company !== undefined) {\n builtInProperties.company = jsonBuiltInProperties.company;\n }\n //Manager\n if (jsonBuiltInProperties.manager !== null && jsonBuiltInProperties.manager !== undefined) {\n builtInProperties.manager = jsonBuiltInProperties.manager;\n }\n //Subject\n if (jsonBuiltInProperties.subject !== null && jsonBuiltInProperties.subject !== undefined) {\n builtInProperties.subject = jsonBuiltInProperties.subject;\n }\n //Title\n if (jsonBuiltInProperties.title !== null && jsonBuiltInProperties.title !== undefined) {\n builtInProperties.title = jsonBuiltInProperties.title;\n }\n //Creation date\n if (jsonBuiltInProperties.createdDate !== null && jsonBuiltInProperties.createdDate !== undefined) {\n builtInProperties.createdDate = jsonBuiltInProperties.createdDate;\n }\n //Modified date\n if (jsonBuiltInProperties.modifiedDate !== null && jsonBuiltInProperties.modifiedDate !== undefined) {\n builtInProperties.modifiedDate = jsonBuiltInProperties.modifiedDate;\n }\n //Tags\n if (jsonBuiltInProperties.tags !== null && jsonBuiltInProperties.tags !== undefined) {\n builtInProperties.tags = jsonBuiltInProperties.tags;\n }\n //Status\n if (jsonBuiltInProperties.status !== null && jsonBuiltInProperties.status !== undefined) {\n builtInProperties.status = jsonBuiltInProperties.status;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserWorksheets = function (json) {\n this.worksheets = new Worksheets();\n var length = json.length;\n for (var i = 0; i < length; i++) {\n var jsonSheet = json[i];\n var sheet = new Worksheet();\n this.mergeCells = new MergeCells();\n this.mergedCellsStyle = new Map();\n this.mHyperLinks = [];\n //Name\n if (jsonSheet.name !== null && jsonSheet.name !== undefined) {\n sheet.name = jsonSheet.name;\n }\n else {\n sheet.name = 'Sheet' + (i + 1).toString();\n }\n if (jsonSheet.enableRtl !== null && jsonSheet.enableRtl !== undefined) {\n sheet.enableRtl = jsonSheet.enableRtl;\n }\n sheet.index = (i + 1);\n //Columns\n if (jsonSheet.columns !== null && jsonSheet.columns !== undefined) {\n this.parserColumns(jsonSheet.columns, sheet);\n }\n //Rows\n if (jsonSheet.rows !== null && jsonSheet.rows !== undefined) {\n this.parserRows(jsonSheet.rows, sheet);\n }\n //showGridLines\n if (jsonSheet.showGridLines !== null && jsonSheet.showGridLines !== undefined) {\n sheet.showGridLines = jsonSheet.showGridLines;\n }\n //FreezePanes\n if (jsonSheet.freeze !== null && jsonSheet.freeze !== undefined) {\n this.parserFreezePanes(jsonSheet.freeze, sheet);\n }\n //Print Title\n if (jsonSheet.printTitle !== null && jsonSheet.printTitle !== undefined) {\n this.parserPrintTitle(jsonSheet.printTitle, sheet);\n }\n if (jsonSheet.pageSetup !== undefined) {\n if (jsonSheet.pageSetup.isSummaryRowBelow !== undefined) {\n sheet.isSummaryRowBelow = jsonSheet.pageSetup.isSummaryRowBelow;\n }\n }\n if (jsonSheet.images !== undefined) {\n this.parserImages(jsonSheet.images, sheet);\n }\n if (jsonSheet.autoFilters !== null && jsonSheet.autoFilters !== undefined) {\n this.parseFilters(jsonSheet.autoFilters, sheet);\n }\n sheet.index = (i + 1);\n sheet.mergeCells = this.mergeCells;\n sheet.hyperLinks = this.mHyperLinks;\n this.worksheets.push(sheet);\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.mergeOptions = function (fromJson, toJson) {\n /* tslint:disable:no-any */\n var result = {};\n this.applyProperties(fromJson, result);\n this.applyProperties(toJson, result);\n return result;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.applyProperties = function (sourceJson, destJson) {\n var keys = Object.keys(sourceJson);\n for (var index = 0; index < keys.length; index++) {\n if (keys[index] !== 'name') {\n destJson[keys[index]] = sourceJson[keys[index]];\n }\n }\n };\n Workbook.prototype.getCellName = function (row, column) {\n return this.getColumnName(column) + row.toString();\n };\n Workbook.prototype.getColumnName = function (col) {\n col--;\n var strColumnName = '';\n do {\n var iCurrentDigit = col % 26;\n col = col / 26 - 1;\n strColumnName = String.fromCharCode(65 + iCurrentDigit) + strColumnName;\n } while (col >= 0);\n return strColumnName;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserPrintTitle = function (json, sheet) {\n var printTitleName = '';\n var titleRowName;\n if (json.fromRow !== null && json.fromRow !== undefined) {\n var fromRow = json.fromRow;\n var toRow = void 0;\n if (json.toRow !== null && json.toRow !== undefined) {\n toRow = json.toRow;\n }\n else {\n toRow = json.fromRow;\n }\n titleRowName = '$' + fromRow + ':$' + toRow;\n }\n var titleColName;\n if (json.fromColumn !== null && json.fromColumn !== undefined) {\n var fromColumn = json.fromColumn;\n var toColumn = void 0;\n if (json.toColumn !== null && json.toColumn !== undefined) {\n toColumn = json.toColumn;\n }\n else {\n toColumn = json.fromColumn;\n }\n titleColName = '$' + this.getColumnName(fromColumn) + ':$' + this.getColumnName(toColumn);\n }\n if (titleRowName !== undefined) {\n printTitleName += (sheet.name + '!' + titleRowName);\n }\n if (titleColName !== undefined && titleRowName !== undefined) {\n printTitleName += ',' + (sheet.name + '!' + titleColName);\n }\n else if (titleColName !== undefined) {\n printTitleName += (sheet.name + '!' + titleColName);\n }\n if (printTitleName !== '') {\n this.printTitles.set(sheet.index - 1, printTitleName);\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserFreezePanes = function (json, sheet) {\n sheet.freezePanes = new FreezePane();\n if (json.row !== null && json.row !== undefined) {\n sheet.freezePanes.row = json.row;\n }\n else {\n sheet.freezePanes.row = 0;\n }\n if (json.column !== null && json.column !== undefined) {\n sheet.freezePanes.column = json.column;\n }\n else {\n sheet.freezePanes.column = 0;\n }\n sheet.freezePanes.leftCell = this.getCellName(sheet.freezePanes.row + 1, sheet.freezePanes.column + 1);\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserColumns = function (json, sheet) {\n var columnsLength = json.length;\n sheet.columns = [];\n for (var column = 0; column < columnsLength; column++) {\n var col = new Column();\n if (json[column].index !== null && json[column].index !== undefined) {\n col.index = json[column].index;\n }\n else {\n throw Error('Column index is missing.');\n }\n if (json[column].width !== null && json[column].width !== undefined) {\n col.width = json[column].width;\n }\n sheet.columns.push(col);\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserRows = function (json, sheet) {\n var rowsLength = json.length;\n sheet.rows = new Rows();\n var rowId = 0;\n for (var r = 0; r < rowsLength; r++) {\n var row = this.parserRow(json[r], rowId);\n rowId = row.index;\n sheet.rows.add(row);\n }\n this.insertMergedCellsStyle(sheet);\n };\n Workbook.prototype.insertMergedCellsStyle = function (sheet) {\n var _this = this;\n if (this.mergeCells.length > 0) {\n this.mergedCellsStyle.forEach(function (value, key) {\n var row = sheet.rows.filter(function (item) {\n return item.index === value.y;\n })[0];\n if (!isNullOrUndefined(row)) {\n var cell = row.cells.filter(function (item) {\n return item.index === value.x;\n })[0];\n if (!isNullOrUndefined(cell)) {\n cell.styleIndex = value.styleIndex;\n }\n else {\n var cells = row.cells.filter(function (item) {\n return item.index <= value.x;\n });\n var insertIndex = 0;\n if (cells.length > 0) {\n insertIndex = row.cells.indexOf(cells[cells.length - 1]) + 1;\n }\n row.cells.splice(insertIndex, 0, _this.createCell(value, key));\n }\n }\n else {\n var rows = sheet.rows.filter(function (item) {\n return item.index <= value.y;\n });\n var rowToInsert = new Row();\n rowToInsert.index = value.y;\n rowToInsert.cells = new Cells();\n rowToInsert.cells.add(_this.createCell(value, key));\n var insertIndex = 0;\n if (rows.length > 0) {\n insertIndex = sheet.rows.indexOf(rows[rows.length - 1]) + 1;\n }\n sheet.rows.splice(insertIndex, 0, rowToInsert);\n }\n });\n }\n };\n Workbook.prototype.createCell = function (value, key) {\n var cellToInsert = new Cell();\n cellToInsert.refName = key;\n cellToInsert.index = value.x;\n cellToInsert.cellStyle = new CellStyle();\n cellToInsert.styleIndex = value.styleIndex;\n return cellToInsert;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserRow = function (json, rowIndex) {\n var row = new Row();\n //Row Height\n if (json.height !== null && json.height !== undefined) {\n row.height = json.height;\n }\n //Row index\n if (json.index !== null && json.index !== undefined) {\n row.index = json.index;\n }\n else {\n throw Error('Row index is missing.');\n }\n if (json.grouping !== null && json.grouping !== undefined) {\n this.parseGrouping(json.grouping, row);\n }\n this.parseCells(json.cells, row);\n return row;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parseGrouping = function (json, row) {\n row.grouping = new Grouping();\n if (json.outlineLevel !== undefined) {\n row.grouping.outlineLevel = json.outlineLevel;\n }\n if (json.isCollapsed !== undefined) {\n row.grouping.isCollapsed = json.isCollapsed;\n }\n if (json.isHidden !== undefined) {\n row.grouping.isHidden = json.isHidden;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parseCells = function (json, row) {\n row.cells = new Cells();\n var cellsLength = json !== undefined ? json.length : 0;\n var spanMin = 1;\n var spanMax = 1;\n var curCellIndex = 0;\n for (var cellId = 0; cellId < cellsLength; cellId++) {\n /* tslint:disable:no-any */\n var jsonCell = json[cellId];\n var cell = new Cell();\n //cell index\n if (jsonCell.index !== null && jsonCell.index !== undefined) {\n cell.index = jsonCell.index;\n }\n else {\n throw Error('Cell index is missing.');\n }\n if (cell.index < spanMin) {\n spanMin = cell.index;\n }\n else if (cell.index > spanMax) {\n spanMax = cell.index;\n }\n //Update the Cell name\n cell.refName = this.getCellName(row.index, cell.index);\n //Row span\n if (jsonCell.rowSpan !== null && jsonCell.rowSpan !== undefined) {\n cell.rowSpan = jsonCell.rowSpan - 1;\n }\n else {\n cell.rowSpan = 0;\n }\n //Column span\n if (jsonCell.colSpan !== null && jsonCell.colSpan !== undefined) {\n cell.colSpan = jsonCell.colSpan - 1;\n }\n else {\n cell.colSpan = 0;\n }\n //Hyperlink\n if (jsonCell.hyperlink !== null && jsonCell.hyperlink !== undefined) {\n var hyperLink = new HyperLink();\n if (jsonCell.hyperlink.target !== undefined) {\n hyperLink.target = jsonCell.hyperlink.target;\n if (jsonCell.hyperlink.displayText !== undefined) {\n cell.value = jsonCell.hyperlink.displayText;\n }\n else {\n cell.value = jsonCell.hyperlink.target;\n }\n cell.type = this.getCellValueType(cell.value);\n hyperLink.ref = cell.refName;\n hyperLink.rId = (this.mHyperLinks.length + 1);\n this.mHyperLinks.push(hyperLink);\n cell.cellStyle = new CellStyle();\n /* tslint:disable-next-line:max-line-length */\n this.parserCellStyle((jsonCell.style !== undefined ? this.mergeOptions(jsonCell.style, this.hyperlinkStyle) : this.hyperlinkStyle), cell.cellStyle, 'string');\n cell.styleIndex = cell.cellStyle.index;\n }\n }\n // formulas\n if (jsonCell.formula !== null && jsonCell.formula !== undefined) {\n cell.formula = jsonCell.formula;\n cell.type = 'formula';\n }\n //Cell value\n if (jsonCell.value !== null && jsonCell.value !== undefined) {\n if (cell.formula !== undefined) {\n cell.value = 0;\n }\n else {\n cell.value = jsonCell.value;\n cell.type = this.getCellValueType(cell.value);\n }\n }\n if (jsonCell.style !== null && jsonCell.style !== undefined && cell.styleIndex === undefined) {\n cell.cellStyle = new CellStyle();\n if (cell.value instanceof Date) {\n this.parserCellStyle(jsonCell.style, cell.cellStyle, cell.type, 14);\n }\n else {\n this.parserCellStyle(jsonCell.style, cell.cellStyle, cell.type);\n }\n cell.styleIndex = cell.cellStyle.index;\n }\n else if (cell.value instanceof Date) {\n cell.cellStyle = new CellStyle();\n this.parserCellStyle({}, cell.cellStyle, cell.type, 14);\n cell.styleIndex = cell.cellStyle.index;\n }\n this.parseCellType(cell);\n this.mergeCells = this.processMergeCells(cell, row.index, this.mergeCells);\n row.cells.add(cell);\n curCellIndex = (cell.index + 1);\n }\n row.spans = (spanMin) + ':' + (spanMax);\n };\n Workbook.prototype.GetColors = function () {\n var colors;\n colors = new Map();\n /* tslint:disable */\n colors.set('WHITE', 'FFFFFFFF');\n /* tslint:disable */\n colors.set('SILVER', 'FFC0C0C0');\n /* tslint:disable */\n colors.set('GRAY', 'FF808080');\n /* tslint:disable */\n colors.set('BLACK', 'FF000000');\n /* tslint:disable */\n colors.set('RED', 'FFFF0000');\n /* tslint:disable */\n colors.set('MAROON', 'FF800000');\n /* tslint:disable */\n colors.set('YELLOW', 'FFFFFF00');\n /* tslint:disable */\n colors.set('OLIVE', 'FF808000');\n /* tslint:disable */\n colors.set('LIME', 'FF00FF00');\n /* tslint:disable */\n colors.set('GREEN', 'FF008000');\n /* tslint:disable */\n colors.set('AQUA', 'FF00FFFF');\n /* tslint:disable */\n colors.set('TEAL', 'FF008080');\n /* tslint:disable */\n colors.set('BLUE', 'FF0000FF');\n /* tslint:disable */\n colors.set('NAVY', 'FF000080');\n /* tslint:disable */\n colors.set('FUCHSIA', 'FFFF00FF');\n /* tslint:disable */\n colors.set('PURPLE', 'FF800080');\n return colors;\n };\n Workbook.prototype.processColor = function (colorVal) {\n if (colorVal.indexOf('#') === 0) {\n return colorVal.replace('#', 'FF');\n }\n colorVal = colorVal.toUpperCase();\n this.rgbColors = this.GetColors();\n if (this.rgbColors.has(colorVal)) {\n colorVal = this.rgbColors.get(colorVal);\n }\n else {\n colorVal = 'FF000000';\n }\n return colorVal;\n };\n Workbook.prototype.processCellValue = function (value, cell) {\n var cellValue = value;\n if (value.indexOf(\"\") !== -1 ||\n value.indexOf(\"\") !== -1 || value.indexOf(\"\") !== -1) {\n var processedVal = '';\n var startindex = value.indexOf('<', 0);\n var endIndex = value.indexOf('>', startindex + 1);\n if (startindex >= 0 && endIndex >= 0) {\n if (startindex !== 0) {\n processedVal += '' + this.processString(value.substring(0, startindex)) + '';\n }\n while (startindex >= 0 && endIndex >= 0) {\n endIndex = value.indexOf('>', startindex + 1);\n if (endIndex >= 0) {\n var subString = value.substring(startindex + 1, endIndex);\n startindex = value.indexOf('<', endIndex + 1);\n if (startindex < 0) {\n startindex = cellValue.length;\n }\n var text = cellValue.substring(endIndex + 1, startindex);\n if (text.length !== 0) {\n var subSplit = subString.split(' ');\n if (subSplit.length > 0) {\n processedVal += '';\n }\n if (subSplit.length > 1) {\n for (var _i = 0, subSplit_1 = subSplit; _i < subSplit_1.length; _i++) {\n var element = subSplit_1[_i];\n var start = element.trim().substring(0, 5);\n switch (start) {\n case 'size=':\n processedVal += '';\n break;\n case 'face=':\n processedVal += '';\n break;\n case 'color':\n processedVal += '';\n break;\n case 'href=':\n var hyperLink = new HyperLink();\n hyperLink.target = element.substring(6, element.length - 1).trim();\n hyperLink.ref = cell.refName;\n hyperLink.rId = (this.mHyperLinks.length + 1);\n this.mHyperLinks.push(hyperLink);\n processedVal += '';\n break;\n }\n }\n }\n else if (subSplit.length === 1) {\n var style = subSplit[0].trim();\n switch (style) {\n case 'b':\n processedVal += '';\n break;\n case 'i':\n processedVal += '';\n break;\n case 'u':\n processedVal += '';\n break;\n }\n }\n processedVal += '' + this.processString(text) + '';\n }\n }\n }\n if (processedVal === '') {\n return cellValue;\n }\n return processedVal;\n }\n else {\n return cellValue;\n }\n }\n else {\n return cellValue;\n }\n };\n Workbook.prototype.applyGlobalStyle = function (json, cellStyle) {\n var index = 0;\n if (this.cellStyles.has(json.name)) {\n cellStyle.index = this.mStyles.filter(function (a) { return (a.name === json.name); })[0].index;\n cellStyle.name = json.name;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserCellStyle = function (json, cellStyle, cellType, defStyleIndex) {\n //name\n if (json.name !== null && json.name !== undefined) {\n if (cellStyle.isGlobalStyle) {\n cellStyle.name = json.name;\n }\n else {\n this.applyGlobalStyle(json, cellStyle);\n return;\n }\n }\n //background color\n if (json.backColor !== null && json.backColor !== undefined) {\n cellStyle.backColor = json.backColor;\n }\n //borders\n //leftBorder\n cellStyle.borders = new Borders();\n //AllBorder\n if (json.borders !== null && json.borders !== undefined) {\n this.parserBorder(json.borders, cellStyle.borders.all);\n }\n //leftborder\n if (json.leftBorder !== null && json.leftBorder !== undefined) {\n this.parserBorder(json.leftBorder, cellStyle.borders.left);\n }\n //rightBorder\n if (json.rightBorder !== null && json.rightBorder !== undefined) {\n this.parserBorder(json.rightBorder, cellStyle.borders.right);\n }\n //topBorder\n if (json.topBorder !== null && json.topBorder !== undefined) {\n this.parserBorder(json.topBorder, cellStyle.borders.top);\n }\n //bottomBorder\n if (json.bottomBorder !== null && json.bottomBorder !== undefined) {\n this.parserBorder(json.bottomBorder, cellStyle.borders.bottom);\n }\n //fontName\n if (json.fontName !== null && json.fontName !== undefined) {\n cellStyle.fontName = json.fontName;\n }\n //fontSize\n if (json.fontSize !== null && json.fontSize !== undefined) {\n cellStyle.fontSize = json.fontSize;\n }\n //fontColor\n if (json.fontColor !== null && json.fontColor !== undefined) {\n cellStyle.fontColor = json.fontColor;\n }\n //italic\n if (json.italic !== null && json.italic !== undefined) {\n cellStyle.italic = json.italic;\n }\n //bold\n if (json.bold !== null && json.bold !== undefined) {\n cellStyle.bold = json.bold;\n }\n //hAlign\n if (json.hAlign !== null && json.hAlign !== undefined) {\n cellStyle.hAlign = json.hAlign.toLowerCase();\n }\n //indent\n if (json.indent !== null && json.indent !== undefined) {\n cellStyle.indent = json.indent;\n if (!(cellStyle.hAlign === 'left' || cellStyle.hAlign === 'right')) {\n cellStyle.hAlign = 'left';\n }\n }\n if (json.rotation !== null && json.rotation !== undefined) {\n cellStyle.rotation = json.rotation;\n }\n //vAlign\n if (json.vAlign !== null && json.vAlign !== undefined) {\n cellStyle.vAlign = json.vAlign.toLowerCase();\n }\n //underline\n if (json.underline !== null && json.underline !== undefined) {\n cellStyle.underline = json.underline;\n }\n //strikeThrough\n if (json.strikeThrough !== null && json.strikeThrough !== undefined) {\n cellStyle.strikeThrough = json.strikeThrough;\n }\n //wrapText\n if (json.wrapText !== null && json.wrapText !== undefined) {\n cellStyle.wrapText = json.wrapText;\n }\n //numberFormat\n if (json.numberFormat !== null && json.numberFormat !== undefined) {\n if (json.type !== null && json.type !== undefined) {\n cellStyle.numberFormat = this.getNumberFormat(json.numberFormat, json.type);\n }\n else {\n cellStyle.numberFormat = this.getNumberFormat(json.numberFormat, cellType);\n }\n }\n else if (defStyleIndex !== undefined) {\n cellStyle.numFmtId = 14;\n cellStyle.numberFormat = 'GENERAL';\n }\n else {\n cellStyle.numberFormat = 'GENERAL';\n }\n cellStyle.index = this.processCellStyle(cellStyle);\n };\n Workbook.prototype.switchNumberFormat = function (numberFormat, type) {\n var format = this.getNumberFormat(numberFormat, type);\n if (format !== numberFormat) {\n var numFmt = this.mNumFmt.get(numberFormat);\n if (numFmt !== undefined) {\n numFmt.formatCode = format;\n if (this.mNumFmt.has(format)) {\n for (var _i = 0, _a = this.mCellStyleXfs; _i < _a.length; _i++) {\n var cellStyleXfs = _a[_i];\n if (cellStyleXfs.numFmtId === numFmt.numFmtId) {\n cellStyleXfs.numFmtId = this.mNumFmt.get(format).numFmtId;\n }\n }\n for (var _b = 0, _c = this.mCellXfs; _b < _c.length; _b++) {\n var cellXfs = _c[_b];\n if (cellXfs.numFmtId === numFmt.numFmtId) {\n cellXfs.numFmtId = this.mNumFmt.get(format).numFmtId;\n }\n }\n }\n }\n }\n };\n Workbook.prototype.changeNumberFormats = function (value) {\n if (typeof value == \"string\") {\n var regex = new RegExp(this.currency, 'g');\n value = value.replace(regex, '[$' + this.currency + ']');\n }\n else if (typeof value == \"object\") {\n for (var i = 0; i < value.length; i++) {\n value[i] = value[i].replace(this.currency, '[$' + this.currency + ']');\n }\n }\n return value;\n };\n Workbook.prototype.getNumberFormat = function (numberFormat, type) {\n var returnFormat;\n switch (type) {\n case 'number':\n try {\n returnFormat = this.intl.getNumberPattern({ format: numberFormat, currency: this.currency, useGrouping: true }, true);\n if (this.currency.length > 1) {\n returnFormat = this.changeNumberFormats(returnFormat);\n }\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n break;\n case 'datetime':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'dateTime' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'dateTime' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n case 'date':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'date' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'date' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n case 'time':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'time' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'time' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n default:\n returnFormat = numberFormat;\n break;\n }\n return returnFormat;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserBorder = function (json, border) {\n if (json.color !== null && json.color !== undefined) {\n border.color = json.color;\n }\n else {\n border.color = '#000000';\n }\n if (json.lineStyle !== null && json.lineStyle !== undefined) {\n border.lineStyle = json.lineStyle;\n }\n else {\n border.lineStyle = 'thin';\n }\n };\n Workbook.prototype.processCellStyle = function (style) {\n if (style.isGlobalStyle) {\n this.processNumFormatId(style);\n this.mStyles.push(style);\n return this.mStyles.length;\n }\n else {\n var compareResult = this.compareStyle(style);\n if (!compareResult.result) {\n this.processNumFormatId(style);\n this.mStyles.push(style);\n return this.mStyles.length;\n }\n else {\n //Return the index of the already existing style.\n return compareResult.index;\n }\n }\n };\n Workbook.prototype.processNumFormatId = function (style) {\n if (style.numberFormat !== 'GENERAL' && !this.mNumFmt.has(style.numberFormat)) {\n var id = this.mNumFmt.size + 164;\n this.mNumFmt.set(style.numberFormat, new NumFmt(id, style.numberFormat));\n }\n };\n Workbook.prototype.isNewFont = function (toCompareStyle) {\n var result = false;\n var index = 0;\n for (var _i = 0, _a = this.mFonts; _i < _a.length; _i++) {\n var font = _a[_i];\n index++;\n var fontColor = undefined;\n if (toCompareStyle.fontColor !== undefined) {\n fontColor = ('FF' + toCompareStyle.fontColor.replace('#', ''));\n }\n result = font.color === fontColor &&\n font.b === toCompareStyle.bold &&\n font.i === toCompareStyle.italic &&\n font.u === toCompareStyle.underline &&\n font.strike === toCompareStyle.strikeThrough &&\n font.name === toCompareStyle.fontName &&\n font.sz === toCompareStyle.fontSize;\n if (result) {\n break;\n }\n }\n index = index - 1;\n return { index: index, result: result };\n };\n Workbook.prototype.isNewBorder = function (toCompareStyle) {\n var bStyle = new CellStyle();\n if (this.isAllBorder(toCompareStyle.borders)) {\n return (bStyle.borders.all.color === toCompareStyle.borders.all.color &&\n bStyle.borders.all.lineStyle === toCompareStyle.borders.all.lineStyle);\n }\n else {\n return (bStyle.borders.left.color === toCompareStyle.borders.left.color &&\n bStyle.borders.left.lineStyle === toCompareStyle.borders.left.lineStyle &&\n bStyle.borders.right.color === toCompareStyle.borders.right.color &&\n bStyle.borders.right.lineStyle === toCompareStyle.borders.right.lineStyle &&\n bStyle.borders.top.color === toCompareStyle.borders.top.color &&\n bStyle.borders.top.lineStyle === toCompareStyle.borders.top.lineStyle &&\n bStyle.borders.bottom.color === toCompareStyle.borders.bottom.color &&\n bStyle.borders.bottom.lineStyle === toCompareStyle.borders.bottom.lineStyle);\n }\n };\n Workbook.prototype.isAllBorder = function (toCompareBorder) {\n var allBorderStyle = new CellStyle();\n return allBorderStyle.borders.all.color !== toCompareBorder.all.color &&\n allBorderStyle.borders.all.lineStyle !== toCompareBorder.all.lineStyle;\n };\n Workbook.prototype.compareStyle = function (toCompareStyle) {\n var result = true;\n var index = 0;\n var globalStyleIndex = 0;\n for (var _i = 0, _a = this.mStyles; _i < _a.length; _i++) {\n var baseStyle = _a[_i];\n result = baseStyle.isGlobalStyle ? false : (baseStyle.backColor === toCompareStyle.backColor &&\n baseStyle.bold === toCompareStyle.bold &&\n baseStyle.numFmtId === toCompareStyle.numFmtId &&\n baseStyle.numberFormat === toCompareStyle.numberFormat &&\n baseStyle.type === toCompareStyle.type &&\n baseStyle.fontColor === toCompareStyle.fontColor &&\n baseStyle.fontName === toCompareStyle.fontName &&\n baseStyle.fontSize === toCompareStyle.fontSize &&\n baseStyle.hAlign === toCompareStyle.hAlign &&\n baseStyle.italic === toCompareStyle.italic &&\n baseStyle.underline === toCompareStyle.underline &&\n baseStyle.strikeThrough === toCompareStyle.strikeThrough &&\n baseStyle.vAlign === toCompareStyle.vAlign &&\n baseStyle.indent === toCompareStyle.indent &&\n baseStyle.rotation === toCompareStyle.rotation &&\n baseStyle.wrapText === toCompareStyle.wrapText &&\n (baseStyle.borders.all.color === toCompareStyle.borders.all.color &&\n baseStyle.borders.all.lineStyle === toCompareStyle.borders.all.lineStyle) &&\n (baseStyle.borders.left.color === toCompareStyle.borders.left.color &&\n baseStyle.borders.left.lineStyle === toCompareStyle.borders.left.lineStyle &&\n baseStyle.borders.right.color === toCompareStyle.borders.right.color &&\n baseStyle.borders.right.lineStyle === toCompareStyle.borders.right.lineStyle &&\n baseStyle.borders.top.color === toCompareStyle.borders.top.color &&\n baseStyle.borders.top.lineStyle === toCompareStyle.borders.top.lineStyle &&\n baseStyle.borders.bottom.color === toCompareStyle.borders.bottom.color &&\n baseStyle.borders.bottom.lineStyle === toCompareStyle.borders.bottom.lineStyle));\n if (result) {\n index = baseStyle.index;\n break;\n }\n }\n return { index: index, result: result };\n };\n Workbook.prototype.contains = function (array, item) {\n var index = array.indexOf(item);\n return index > -1 && index < array.length;\n };\n Workbook.prototype.getCellValueType = function (value) {\n if (value instanceof Date) {\n return 'datetime';\n }\n else if (typeof (value) === 'boolean') {\n return 'boolean';\n }\n else if (typeof (value) === 'number') {\n return 'number';\n }\n else {\n return 'string';\n }\n };\n Workbook.prototype.parseCellType = function (cell) {\n var type = cell.type;\n var saveType;\n var value = cell.value;\n switch (type) {\n case 'datetime':\n value = this.toOADate(value);\n if (cell.cellStyle !== undefined && cell.cellStyle.name !== undefined) {\n if (this.globalStyles.has(cell.cellStyle.name)) {\n var value_1 = this.globalStyles.get(cell.cellStyle.name);\n this.switchNumberFormat(value_1.format, value_1.type);\n }\n }\n saveType = 'n';\n break;\n //TODO: Update the number format index and style\n case 'boolean':\n value = value ? 1 : 0;\n saveType = 'b';\n break;\n case 'number':\n saveType = 'n';\n if (cell.cellStyle !== undefined && cell.cellStyle.name !== undefined) {\n if (this.globalStyles.has(cell.cellStyle.name)) {\n this.switchNumberFormat(this.globalStyles.get(cell.cellStyle.name).format, 'number');\n }\n }\n break;\n case 'string':\n this.sharedStringCount++;\n saveType = 's';\n var sstvalue = this.processCellValue(value, cell);\n if (!this.contains(this.sharedString, sstvalue)) {\n this.sharedString.push(sstvalue);\n }\n value = this.sharedString.indexOf(sstvalue);\n break;\n default:\n break;\n }\n cell.saveType = saveType;\n cell.value = value;\n };\n Workbook.prototype.parserImages = function (json, sheet) {\n var imagesLength = json.length;\n sheet.images = [];\n var imageId = 0;\n for (var p = 0; p < imagesLength; p++) {\n var image = this.parserImage(json[p]);\n sheet.images.push(image);\n }\n };\n Workbook.prototype.parseFilters = function (json, sheet) {\n sheet.autoFilters = new AutoFilters();\n if (json.row !== null && json.row !== undefined)\n sheet.autoFilters.row = json.row;\n else\n throw new Error('Argument Null Exception: row null or empty');\n if (json.lastRow !== null && json.lastRow !== undefined)\n sheet.autoFilters.lastRow = json.lastRow;\n else\n throw new Error('Argument Null Exception: lastRow cannot be null or empty');\n if (json.column !== null && json.column !== undefined)\n sheet.autoFilters.column = json.column;\n else\n throw new Error('Argument Null Exception: column cannot be null or empty');\n if (json.lastColumn !== null && json.row !== undefined)\n sheet.autoFilters.lastColumn = json.lastColumn;\n else\n throw new Error('Argument Null Exception: lastColumn cannot be null or empty');\n };\n Workbook.prototype.parserImage = function (json) {\n var image = new Image();\n if (json.image !== null && json.image !== undefined) {\n image.image = json.image;\n }\n if (json.row !== null && json.row !== undefined) {\n image.row = json.row;\n }\n if (json.column !== null && json.column !== undefined) {\n image.column = json.column;\n }\n if (json.lastRow !== null && json.lastRow !== undefined) {\n image.lastRow = json.lastRow;\n }\n if (json.lastColumn !== null && json.lastColumn !== undefined) {\n image.lastColumn = json.lastColumn;\n }\n if (json.width !== null && json.width !== undefined) {\n image.width = json.width;\n }\n if (json.height !== null && json.height !== undefined) {\n image.height = json.height;\n }\n if (json.horizontalFlip !== null && json.horizontalFlip !== undefined) {\n image.horizontalFlip = json.horizontalFlip;\n }\n if (json.verticalFlip !== null && json.verticalFlip !== undefined) {\n image.verticalFlip = json.verticalFlip;\n }\n if (json.rotation !== null && json.rotation !== undefined) {\n image.rotation = json.rotation;\n }\n return image;\n };\n /**\n * Returns a Promise with a Blob based on the specified BlobSaveType and optional encoding.\n * @param {BlobSaveType} blobSaveType - A string indicating the type of Blob to generate ('text/csv' or other).\n * @param {string} [encodingType] - The supported encoding types are \"ansi\", \"unicode\" and \"utf8\".\n */\n /* tslint:disable:no-any */\n Workbook.prototype.saveAsBlob = function (blobSaveType, encodingType) {\n var _this = this;\n switch (blobSaveType) {\n case 'text/csv':\n return new Promise(function (resolve, reject) {\n var obj = {};\n obj.blobData = _this.csvHelper.saveAsBlob(encodingType);\n resolve(obj);\n });\n default:\n return new Promise(function (resolve, reject) {\n _this.saveInternal();\n _this.mArchive.saveAsBlob().then(function (blob) {\n var obj = {};\n obj.blobData = new Blob([blob], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });\n resolve(obj);\n });\n });\n }\n };\n Workbook.prototype.save = function (fileName, proxyUrl) {\n var _this = this;\n if (fileName === null || fileName === undefined || fileName === '') {\n throw new Error('Argument Null Exception: fileName cannot be null or empty');\n }\n var xlsxMatch = fileName.match('.xlsx$');\n var csvMatch = fileName.match('.csv$');\n if (xlsxMatch !== null && xlsxMatch[0] === ('.' + this.mSaveType)) {\n this.saveInternal();\n this.mArchive.save(fileName).then(function () {\n _this.mArchive.destroy();\n });\n }\n else if (csvMatch !== null && csvMatch[0] === ('.' + this.mSaveType)) {\n this.csvHelper.save(fileName);\n }\n else {\n throw Error('Save type and file extension is different.');\n }\n };\n Workbook.prototype.saveInternal = function () {\n this.saveWorkbook();\n this.saveWorksheets();\n this.saveSharedString();\n this.saveStyles();\n this.saveApp(this.builtInProperties);\n this.saveCore(this.builtInProperties);\n this.saveContentType();\n this.saveTopLevelRelation();\n this.saveWorkbookRelation();\n };\n Workbook.prototype.saveWorkbook = function () {\n /* tslint:disable-next-line:max-line-length */\n var workbookTemp = '';\n var sheets = '';\n var length = this.worksheets.length;\n for (var i = 0; i < length; i++) {\n /* tslint:disable-next-line:max-line-length */\n var sheetName = this.worksheets[i].name;\n sheetName = sheetName.replace(\"&\", \"&\");\n sheetName = sheetName.replace(\"<\", \"<\");\n sheetName = sheetName.replace(\">\", \">\");\n sheetName = sheetName.replace(\"\\\"\", \""\");\n sheets += '';\n }\n sheets += '';\n workbookTemp += sheets;\n if (this.printTitles.size > 0) {\n var printTitle_1 = '';\n this.printTitles.forEach(function (value, key) {\n printTitle_1 += '' + value + '';\n });\n printTitle_1 += '';\n workbookTemp += printTitle_1;\n }\n this.addToArchive(workbookTemp + '', 'xl/workbook.xml');\n };\n Workbook.prototype.saveWorksheets = function () {\n var length = this.worksheets.length;\n for (var i = 0; i < length; i++) {\n this.saveWorksheet(this.worksheets[i], i);\n }\n };\n Workbook.prototype.saveWorksheet = function (sheet, index) {\n var sheetBlob = new BlobHelper();\n /* tslint:disable-next-line:max-line-length */\n var sheetString = '';\n if (!sheet.isSummaryRowBelow) {\n sheetString += ('' + '' + '' + '');\n }\n else {\n sheetString += ('');\n }\n sheetString += this.saveSheetView(sheet);\n if (sheet.columns !== undefined) {\n var colString = '';\n for (var _i = 0, _a = sheet.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n if (column.width !== undefined) {\n colString += '';\n }\n else {\n colString += '';\n }\n }\n sheetString += (colString + '');\n }\n sheetString += ('');\n sheetBlob.append(sheetString);\n sheetString = '';\n if (sheet.rows !== undefined) {\n for (var _b = 0, _c = sheet.rows; _b < _c.length; _b++) {\n var row = _c[_b];\n var rowString = '');\n for (var _d = 0, _e = row.cells; _d < _e.length; _d++) {\n var cell = _e[_d];\n if (cell !== undefined && (cell.value !== undefined || cell.cellStyle !== undefined)) {\n rowString += ('');\n if (cell.formula !== undefined) {\n rowString += ('' + cell.formula + '');\n }\n if (cell.value !== undefined) {\n rowString += ('' + cell.value + '');\n }\n else {\n rowString += ('');\n }\n }\n }\n rowString += ('');\n sheetBlob.append(rowString);\n }\n }\n sheetString += ('');\n /* tslint:disable-next-line:max-line-length */\n if (sheet.autoFilters !== null && sheet.autoFilters !== undefined)\n sheetString += ('');\n if (sheet.mergeCells.length > 0) {\n sheetString += ('');\n for (var _f = 0, _g = sheet.mergeCells; _f < _g.length; _f++) {\n var mCell = _g[_f];\n sheetString += ('');\n }\n sheetString += ('');\n }\n if (sheet.hyperLinks.length > 0) {\n sheetString += ('');\n for (var _h = 0, _j = sheet.hyperLinks; _h < _j.length; _h++) {\n var hLink = _j[_h];\n sheetString += ('');\n }\n sheetString += ('');\n }\n /* tslint:disable-next-line:max-line-length */\n sheetString += ('');\n if (sheet.images != undefined && sheet.images.length > 0) {\n this.drawingCount++;\n this.saveDrawings(sheet, sheet.index);\n sheetString += '';\n }\n this.addToArchive(this.saveSheetRelations(sheet), ('xl/worksheets/_rels/sheet' + sheet.index + '.xml.rels'));\n sheetBlob.append(sheetString + '');\n this.addToArchive(sheetBlob.getBlob(), 'xl/worksheets' + '/sheet' + (index + 1) + '.xml');\n };\n Workbook.prototype.saveDrawings = function (sheet, index) {\n var drawings = new BlobHelper();\n /* tslint:disable-next-line:max-line-length */\n var sheetDrawingString = '';\n if (sheet.images !== undefined) {\n var imgId = 0;\n for (var _i = 0, _a = sheet.images; _i < _a.length; _i++) {\n var pic = _a[_i];\n if (pic.height !== undefined && pic.width !== undefined) {\n this.updatelastRowOffset(sheet, pic);\n this.updatelastColumnOffSet(sheet, pic);\n pic.lastRow -= 1;\n pic.lastColumn -= 1;\n }\n else if (pic.lastRow !== undefined && pic.lastColumn !== undefined) {\n pic.lastRowOffset = 0;\n pic.lastColOffset = 0;\n }\n imgId++;\n sheetDrawingString += '';\n sheetDrawingString += '';\n //col\n sheetDrawingString += pic.column - 1;\n sheetDrawingString += '';\n //colOff\n sheetDrawingString += 0;\n sheetDrawingString += '';\n //row\n sheetDrawingString += pic.row - 1;\n sheetDrawingString += '';\n //rowOff\n sheetDrawingString += 0;\n sheetDrawingString += '';\n sheetDrawingString += '';\n //col\n sheetDrawingString += pic.lastColumn;\n sheetDrawingString += '';\n //colOff\n sheetDrawingString += pic.lastColOffset;\n sheetDrawingString += '';\n //row\n sheetDrawingString += pic.lastRow;\n sheetDrawingString += '';\n //rowOff\n sheetDrawingString += pic.lastRowOffset;\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += ' ';\n sheetDrawingString += ' ';\n sheetDrawingString += '';\n /* tslint:disable-next-line:max-line-length */\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '= -3600) {\n sheetDrawingString += ' rot=\"' + (pic.rotation * 60000) + '\"';\n }\n if (pic.verticalFlip != undefined && pic.verticalFlip != false) {\n sheetDrawingString += ' flipV=\"1\"';\n }\n if (pic.horizontalFlip != undefined && pic.horizontalFlip != false) {\n sheetDrawingString += ' flipH=\"1\"';\n }\n sheetDrawingString += '/>';\n sheetDrawingString += '';\n sheetDrawingString += '';\n var imageFile = new BlobHelper();\n var imageData = this.convertBase64toImage(pic.image);\n this.imageCount += 1;\n this.addToArchive(imageData, 'xl/media/image' + this.imageCount + '.png');\n }\n drawings.append(sheetDrawingString);\n drawings.append('');\n this.saveDrawingRelations(sheet);\n this.addToArchive(drawings.getBlob(), 'xl/drawings/drawing' + this.drawingCount + '.xml');\n }\n };\n Workbook.prototype.updatelastRowOffset = function (sheet, picture) {\n var iCurHeight = picture.height;\n var iCurRow = picture.row;\n var iCurOffset = 0;\n while (iCurHeight >= 0) {\n var iRowHeight = 0;\n if (sheet.rows !== undefined && sheet.rows[iCurRow - 1] !== undefined)\n iRowHeight = this.convertToPixels(sheet.rows[iCurRow - 1].height === undefined ? 15 : sheet.rows[iCurRow - 1].height);\n else\n iRowHeight = this.convertToPixels(15);\n var iSpaceInCell = iRowHeight - (iCurOffset * iRowHeight / 256);\n if (iSpaceInCell > iCurHeight) {\n picture.lastRow = iCurRow;\n picture.lastRowOffset = iCurOffset + (iCurHeight * 256 / iRowHeight);\n var rowHiddenHeight = 0;\n if (sheet.rows !== undefined && sheet.rows[iCurRow - 1] !== undefined)\n rowHiddenHeight = this.convertToPixels(sheet.rows[iCurRow - 1].height === undefined ? 15 : sheet.rows[iCurRow - 1].height);\n else\n rowHiddenHeight = this.convertToPixels(15);\n picture.lastRowOffset = (rowHiddenHeight * picture.lastRowOffset) / 256;\n picture.lastRowOffset = Math.round(picture.lastRowOffset / this.unitsProportions[7]);\n break;\n }\n else {\n iCurHeight -= iSpaceInCell;\n iCurRow++;\n iCurOffset = 0;\n }\n }\n };\n Workbook.prototype.updatelastColumnOffSet = function (sheet, picture) {\n var iCurWidth = picture.width;\n var iCurCol = picture.column;\n var iCurOffset = 0;\n while (iCurWidth >= 0) {\n var iColWidth = 0;\n if (sheet.columns !== undefined && sheet.columns[iCurCol - 1] !== undefined)\n iColWidth = this.ColumnWidthToPixels(sheet.columns[iCurCol - 1].width === undefined ? 8.43 : sheet.columns[iCurCol - 1].width);\n else\n iColWidth = this.ColumnWidthToPixels(8.43);\n var iSpaceInCell = iColWidth - (iCurOffset * iColWidth / 1024);\n if (iSpaceInCell > iCurWidth) {\n picture.lastColumn = iCurCol;\n picture.lastColOffset = iCurOffset + (iCurWidth * 1024 / iColWidth);\n var colHiddenWidth = 0;\n if (sheet.columns !== undefined && sheet.columns[iCurCol - 1] !== undefined)\n colHiddenWidth = this.ColumnWidthToPixels(sheet.columns[iCurCol - 1].width === undefined ? 8.43 : sheet.columns[iCurCol - 1].width);\n else\n colHiddenWidth = this.ColumnWidthToPixels(8.43);\n picture.lastColOffset = (colHiddenWidth * picture.lastColOffset) / 1024;\n picture.lastColOffset = Math.round(picture.lastColOffset / this.unitsProportions[7]);\n break;\n }\n else {\n iCurWidth -= iSpaceInCell;\n iCurCol++;\n iCurOffset = 0;\n }\n }\n };\n Workbook.prototype.convertToPixels = function (value) {\n return value * this.unitsProportions[6];\n };\n Workbook.prototype.convertBase64toImage = function (img) {\n var byteStr = window.atob(img);\n var buffer = new ArrayBuffer(byteStr.length);\n var data = new Uint8Array(buffer);\n for (var i = 0; i < byteStr.length; i++) {\n data[i] = byteStr.charCodeAt(i);\n }\n var blob = new Blob([data], { type: 'image/png' });\n return blob;\n };\n Workbook.prototype.saveDrawingRelations = function (sheet) {\n /* tslint:disable-next-line:max-line-length */\n var drawingRelation = '';\n var length = sheet.images.length;\n var id = this.imageCount - sheet.images.length;\n for (var i = 1; i <= length; i++) {\n id++;\n /* tslint:disable-next-line:max-line-length */\n drawingRelation += '';\n }\n this.addToArchive((drawingRelation + ''), 'xl/drawings/_rels/drawing' + this.drawingCount + '.xml.rels');\n };\n Workbook.prototype.pixelsToColumnWidth = function (pixels) {\n var dDigitWidth = 7;\n var val = (pixels > dDigitWidth + 5) ?\n this.trunc((pixels - 5) / dDigitWidth * 100 + 0.5) / 100 :\n pixels / (dDigitWidth + 5);\n return (val > 1) ?\n ((val * dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0 :\n (val * (dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0;\n };\n Workbook.prototype.ColumnWidthToPixels = function (val) {\n var dDigitWidth = 7;\n var fileWidth = (val > 1) ?\n ((val * dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0 :\n (val * (dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0;\n return this.trunc(((256 * fileWidth + this.trunc(128 / dDigitWidth)) / 256) * dDigitWidth);\n };\n Workbook.prototype.trunc = function (x) {\n var n = x - x % 1;\n return n === 0 && (x < 0 || (x === 0 && (1 / x !== 1 / 0))) ? -0 : n;\n };\n Workbook.prototype.pixelsToRowHeight = function (pixels) {\n return (pixels * this.unitsProportions[5] / this.unitsProportions[6]);\n };\n Workbook.prototype.saveSheetRelations = function (sheet) {\n /* tslint:disable-next-line:max-line-length */\n var relStr = '';\n for (var _i = 0, _a = sheet.hyperLinks; _i < _a.length; _i++) {\n var hLink = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n relStr += '';\n }\n if (sheet.images != undefined && sheet.images.length > 0) {\n /* tslint:disable-next-line:max-line-length */\n relStr += '';\n }\n relStr += '';\n return relStr;\n };\n Workbook.prototype.saveSheetView = function (sheet) {\n var paneString = ' 0) {\n /* tslint:disable-next-line:max-line-length */\n var sstStart = '';\n var si = '';\n for (var i = 0; i < length; i++) {\n if (this.sharedString[i].indexOf('') !== 0) {\n si += '';\n si += this.processString(this.sharedString[i]);\n si += '';\n }\n else {\n si += '';\n si += this.sharedString[i];\n si += '';\n }\n }\n si += '';\n this.addToArchive(sstStart + si, 'xl/sharedStrings.xml');\n }\n };\n Workbook.prototype.processString = function (value) {\n if (typeof value == \"string\") {\n if (value.indexOf('&') !== -1) {\n value = value.replace(/&/g, '&');\n }\n if (value.indexOf('<') !== -1) {\n value = value.replace(/') !== -1) {\n value = value.replace(/>/g, '>');\n }\n if (value.indexOf('\\v') !== -1) {\n value = value.replace(/\\v/g, '_x000B_');\n }\n }\n else if (typeof value == \"object\") {\n for (var i = 0; i < value.length; i++) {\n if (value[i].indexOf('&') !== -1) {\n value[i] = value[i].replace(/&/g, '&');\n }\n if (value[i].indexOf('<') !== -1) {\n value[i] = value[i].replace(/') !== -1) {\n value[i] = value[i].replace(/>/g, '>');\n }\n if (value[i].indexOf('\\v') !== -1) {\n value[i] = value[i].replace(/\\v/g, '_x000B_');\n }\n }\n }\n return value;\n };\n Workbook.prototype.saveStyles = function () {\n this.updateCellXfsStyleXfs();\n /* tslint:disable-next-line:max-line-length */\n var styleTemp = '';\n styleTemp += this.saveNumberFormats();\n styleTemp += this.saveFonts();\n styleTemp += this.saveFills();\n styleTemp += this.saveBorders();\n styleTemp += this.saveCellStyleXfs();\n styleTemp += this.saveCellXfs();\n styleTemp += this.saveCellStyles();\n this.addToArchive(styleTemp + '', 'xl/styles.xml');\n };\n Workbook.prototype.updateCellXfsStyleXfs = function () {\n for (var _i = 0, _a = this.mStyles; _i < _a.length; _i++) {\n var style = _a[_i];\n var cellXfs = undefined;\n if (style.isGlobalStyle) {\n cellXfs = new CellStyleXfs();\n cellXfs.xfId = (style.index - 1);\n }\n else {\n cellXfs = new CellXfs();\n cellXfs.xfId = 0;\n }\n //Add font\n var compareFontResult = this.isNewFont(style);\n if (!compareFontResult.result) {\n var font = new Font();\n font.b = style.bold;\n font.i = style.italic;\n font.name = style.fontName;\n font.sz = style.fontSize;\n font.u = style.underline;\n font.strike = style.strikeThrough;\n font.color = ('FF' + style.fontColor.replace('#', ''));\n this.mFonts.push(font);\n cellXfs.fontId = this.mFonts.length - 1;\n }\n else {\n cellXfs.fontId = compareFontResult.index;\n }\n //Add fill\n if (style.backColor !== 'none') {\n var backColor = 'FF' + style.backColor.replace('#', '');\n if (this.mFills.has(backColor)) {\n var fillId = this.mFills.get(backColor);\n cellXfs.fillId = fillId;\n }\n else {\n var fillId = this.mFills.size + 2;\n this.mFills.set(backColor, fillId);\n cellXfs.fillId = (fillId);\n }\n }\n else {\n cellXfs.fillId = 0;\n }\n //Add border \n if (!this.isNewBorder(style)) {\n this.mBorders.push(style.borders);\n cellXfs.borderId = this.mBorders.length;\n }\n else {\n cellXfs.borderId = 0;\n }\n //Add Number Format \n if (style.numberFormat !== 'GENERAL') {\n if (this.mNumFmt.has(style.numberFormat)) {\n var numFmt = this.mNumFmt.get(style.numberFormat);\n cellXfs.numFmtId = numFmt.numFmtId;\n }\n else {\n var id = this.mNumFmt.size + 164;\n this.mNumFmt.set(style.numberFormat, new NumFmt(id, style.numberFormat));\n cellXfs.numFmtId = id;\n }\n }\n else {\n if (style.numberFormat === 'GENERAL' && style.numFmtId === 14) {\n cellXfs.numFmtId = 14;\n }\n else {\n cellXfs.numFmtId = 0;\n }\n }\n //Add alignment \n if (!style.isGlobalStyle) {\n cellXfs.applyAlignment = 1;\n }\n cellXfs.alignment = new Alignment();\n cellXfs.alignment.indent = style.indent;\n cellXfs.alignment.horizontal = style.hAlign;\n cellXfs.alignment.vertical = style.vAlign;\n cellXfs.alignment.wrapText = style.wrapText ? 1 : 0;\n cellXfs.alignment.rotation = style.rotation;\n if (style.isGlobalStyle) {\n this.mCellStyleXfs.push(cellXfs);\n this.mCellXfs.push(cellXfs);\n }\n else {\n //Add cellxfs\n this.mCellXfs.push(cellXfs);\n }\n }\n };\n Workbook.prototype.saveNumberFormats = function () {\n if (this.mNumFmt.size >= 1) {\n var numFmtStyle_1 = '';\n this.mNumFmt.forEach(function (value, key) {\n numFmtStyle_1 += '';\n });\n return (numFmtStyle_1 += '');\n }\n else {\n return '';\n }\n };\n Workbook.prototype.saveFonts = function () {\n /* tslint:disable-next-line:max-line-length */\n var fontStyle = '';\n if (this.mFonts.length >= 1) {\n for (var _i = 0, _a = this.mFonts; _i < _a.length; _i++) {\n var font = _a[_i];\n fontStyle += '';\n if (font.b) {\n fontStyle += '';\n }\n if (font.i) {\n fontStyle += '';\n }\n if (font.u) {\n fontStyle += '';\n }\n if (font.strike) {\n fontStyle += '';\n }\n fontStyle += '';\n fontStyle += '';\n fontStyle += '';\n }\n }\n return fontStyle + '';\n };\n Workbook.prototype.saveFills = function () {\n /* tslint:disable-next-line:max-line-length */\n var fillsStyle = '';\n if (this.mFills.size >= 1) {\n this.mFills.forEach(function (value, key) {\n /* tslint:disable-next-line:max-line-length */\n fillsStyle += '';\n });\n }\n return fillsStyle + '';\n };\n Workbook.prototype.saveBorders = function () {\n /* tslint:disable-next-line:max-line-length */\n var bordersStyle = '';\n if (this.mBorders.length >= 1) {\n for (var _i = 0, _a = this.mBorders; _i < _a.length; _i++) {\n var borders = _a[_i];\n if (this.isAllBorder(borders)) {\n var color = borders.all.color.replace('#', '');\n var lineStyle = borders.all.lineStyle;\n /* tslint:disable-next-line:max-line-length */\n bordersStyle += '';\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n bordersStyle += '';\n }\n }\n }\n return bordersStyle + '';\n };\n Workbook.prototype.saveCellStyles = function () {\n var _this = this;\n var cellStyleString = '';\n this.cellStyles.forEach(function (value, key) {\n cellStyleString += '';\n if (this.mCellStyleXfs.length >= 1) {\n for (var _i = 0, _a = this.mCellStyleXfs; _i < _a.length; _i++) {\n var cellStyleXf = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n cellXfsStyle += '';\n }\n else {\n cellXfsStyle += ' />';\n }\n }\n }\n return cellXfsStyle + '';\n };\n Workbook.prototype.saveCellXfs = function () {\n /* tslint:disable-next-line:max-line-length */\n var cellXfsStyle = '';\n if (this.mCellXfs.length >= 1) {\n for (var _i = 0, _a = this.mCellXfs; _i < _a.length; _i++) {\n var cellXf = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n cellXfsStyle += '';\n }\n }\n return cellXfsStyle + '';\n };\n Workbook.prototype.saveAlignment = function (cellXf) {\n var alignString = '';\n return alignString;\n };\n Workbook.prototype.saveApp = function (builtInProperties) {\n /* tslint:disable-next-line:max-line-length */\n var appString = 'Essential XlsIO';\n if (builtInProperties !== undefined) {\n if (builtInProperties.manager !== undefined) {\n appString += '' + builtInProperties.manager + '';\n }\n if (builtInProperties.company !== undefined) {\n appString += '' + builtInProperties.company + '';\n }\n }\n this.addToArchive((appString + ''), 'docProps/app.xml');\n };\n Workbook.prototype.saveCore = function (builtInProperties) {\n var createdDate = new Date();\n /* tslint:disable-next-line:max-line-length */\n var coreString = '';\n if (this.builtInProperties !== undefined) {\n if (builtInProperties.author !== undefined) {\n coreString += '' + builtInProperties.author + '';\n }\n if (builtInProperties.subject !== undefined) {\n coreString += '' + builtInProperties.subject + '';\n }\n if (builtInProperties.category !== undefined) {\n coreString += '' + builtInProperties.category + '';\n }\n if (builtInProperties.comments !== undefined) {\n coreString += '' + builtInProperties.comments + '';\n }\n if (builtInProperties.title !== undefined) {\n coreString += '' + builtInProperties.title + '';\n }\n if (builtInProperties.tags !== undefined) {\n coreString += '' + builtInProperties.tags + '';\n }\n if (builtInProperties.status !== undefined) {\n coreString += '' + builtInProperties.status + '';\n }\n if (builtInProperties.createdDate !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n coreString += '' + builtInProperties.createdDate.toISOString() + '';\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n }\n if (builtInProperties.modifiedDate !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n coreString += '' + builtInProperties.modifiedDate.toISOString() + '';\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n }\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n coreString += '' + createdDate.toISOString() + '';\n }\n /* tslint:disable-next-line:max-line-length */\n coreString += '';\n this.addToArchive(coreString, 'docProps/core.xml');\n };\n Workbook.prototype.saveTopLevelRelation = function () {\n /* tslint:disable-next-line:max-line-length */\n var topRelation = '';\n this.addToArchive(topRelation, '_rels/.rels');\n };\n Workbook.prototype.saveWorkbookRelation = function () {\n /* tslint:disable-next-line:max-line-length */\n var wbRelation = '';\n var length = this.worksheets.length;\n var count = 0;\n for (var i = 0; i < length; i++, count++) {\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n }\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n if (this.sharedStringCount > 0) {\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n }\n this.addToArchive((wbRelation + ''), 'xl/_rels/workbook.xml.rels');\n };\n Workbook.prototype.saveContentType = function () {\n /* tslint:disable-next-line:max-line-length */\n var contentTypeString = '';\n var sheetsOverride = '';\n var length = this.worksheets.length;\n var drawingIndex = 0;\n for (var i = 0; i < length; i++) {\n /* tslint:disable-next-line:max-line-length */\n sheetsOverride += '';\n if (this.worksheets[i].images != undefined && this.worksheets[i].images.length > 0) {\n drawingIndex++;\n /* tslint:disable-next-line:max-line-length */\n sheetsOverride += '';\n }\n }\n if (this.imageCount > 0)\n sheetsOverride += '';\n if (this.sharedStringCount > 0) {\n /* tslint:disable-next-line:max-line-length */\n contentTypeString += '';\n }\n this.addToArchive((contentTypeString + sheetsOverride + ''), '[Content_Types].xml');\n };\n Workbook.prototype.addToArchive = function (xmlString, itemName) {\n if (typeof (xmlString) === 'string') {\n var blob = new Blob([xmlString], { type: 'text/plain' });\n var archiveItem = new ZipArchiveItem(blob, itemName);\n this.mArchive.addItem(archiveItem);\n }\n else {\n var archiveItem = new ZipArchiveItem(xmlString, itemName);\n this.mArchive.addItem(archiveItem);\n }\n };\n Workbook.prototype.processMergeCells = function (cell, rowIndex, mergeCells) {\n if (cell.rowSpan !== 0 || cell.colSpan !== 0) {\n var mCell = new MergeCell();\n mCell.x = cell.index;\n mCell.width = cell.colSpan;\n mCell.y = rowIndex;\n mCell.height = cell.rowSpan;\n var startCell = this.getCellName(mCell.y, mCell.x);\n var endCell = this.getCellName(rowIndex + mCell.height, cell.index + mCell.width);\n mCell.ref = startCell + ':' + endCell;\n var mergedCell = mergeCells.add(mCell);\n var start = { x: mCell.x, y: mCell.y };\n var end = {\n x: (cell.index + mCell.width), y: (rowIndex + mCell.height)\n };\n this.updatedMergedCellStyles(start, end, cell);\n }\n return mergeCells;\n };\n Workbook.prototype.updatedMergedCellStyles = function (sCell, eCell, cell) {\n for (var x = sCell.x; x <= eCell.x; x++) {\n for (var y = sCell.y; y <= eCell.y; y++) {\n this.mergedCellsStyle.set(this.getCellName(y, x), { x: x, y: y, styleIndex: cell.styleIndex });\n }\n }\n };\n /**\n * Returns the tick count corresponding to the given year, month, and day.\n * @param year number value of year\n * @param month number value of month\n * @param day number value of day\n */\n Workbook.prototype.dateToTicks = function (year, month, day) {\n var ticksPerDay = 10000 * 1000 * 60 * 60 * 24;\n var daysToMonth365 = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];\n var daysToMonth366 = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366];\n if (year >= 1 && year <= 9999 && month >= 1 && month <= 12) {\n var days = this.isLeapYear(year) ? daysToMonth366 : daysToMonth365;\n var y = year - 1;\n var n = y * 365 + ((y / 4) | 0) - ((y / 100) | 0) + ((y / 400) | 0) + days[month - 1] + day - 1;\n return n * ticksPerDay;\n }\n throw new Error('Not a valid date');\n };\n /**\n * Return the tick count corresponding to the given hour, minute, second.\n * @param hour number value of hour\n * @param minute number value if minute\n * @param second number value of second\n */\n Workbook.prototype.timeToTicks = function (hour, minute, second) {\n if (hour >= 0 && hour < 24 && minute >= 0 && minute < 60 && second >= 0 && second < 60) {\n var totalSeconds = hour * 3600 + minute * 60 + second;\n return totalSeconds * 10000 * 1000;\n }\n throw new Error('Not valid time');\n };\n /**\n * Checks if given year is a leap year.\n * @param year Year value.\n */\n Workbook.prototype.isLeapYear = function (year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n };\n /**\n * Converts `DateTime` to the equivalent OLE Automation date.\n */\n Workbook.prototype.toOADate = function (date) {\n var ticks = 0;\n /* tslint:disable-next-line:max-line-length */\n ticks = this.dateToTicks(date.getFullYear(), (date.getMonth() + 1), date.getDate()) + this.timeToTicks(date.getHours(), date.getMinutes(), date.getSeconds());\n if (ticks === 0) {\n return 0.0;\n }\n var ticksPerDay = 10000 * 1000 * 60 * 60 * 24;\n var daysTo1899 = (((365 * 4 + 1) * 25 - 1) * 4 + 1) * 4 + ((365 * 4 + 1) * 25 - 1) * 3 - 367;\n var doubleDateOffset = daysTo1899 * ticksPerDay;\n var oaDateMinAsTicks = (((365 * 4 + 1) * 25 - 1) - 365) * ticksPerDay;\n if (ticks < oaDateMinAsTicks) {\n throw new Error('Arg_OleAutDateInvalid');\n }\n var millisPerDay = 1000 * 60 * 60 * 24;\n return ((ticks - doubleDateOffset) / 10000) / millisPerDay;\n };\n return Workbook;\n}());\nexport { Workbook };\n/**\n * BuiltInProperties Class\n * @private\n */\nvar BuiltInProperties = /** @class */ (function () {\n function BuiltInProperties() {\n }\n return BuiltInProperties;\n}());\nexport { BuiltInProperties };\n","import * as events from '../base/constant';\nimport { Workbook } from '@syncfusion/ej2-excel-export';\nimport { isNullOrUndefined, getEnumValue, compile, getValue, detach, extend } from '@syncfusion/ej2-base';\nimport { Data } from '../actions/data';\nimport { ExportHelper, ExportValueFormatter } from './export-helper';\nimport { SummaryModelGenerator, GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { CellType } from '../base/enum';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { getPrintGridModel, getUid, isExportColumns, updateColumnTypeForExportColumns, prepareColumns, measureColumnDepth } from '../base/util';\nimport { defaultCurrencyCode } from '@syncfusion/ej2-base';\n/**\n * @hidden\n * `ExcelExport` module is used to handle the Excel export action.\n */\nvar ExcelExport = /** @class */ (function () {\n /**\n * Constructor for the Grid Excel Export module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function ExcelExport(parent, locator) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.book = {};\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.rowLength = 1;\n this.expType = 'AppendToSheet';\n this.includeHiddenColumn = false;\n this.isCsvExport = false;\n this.isChild = false;\n this.isElementIdChanged = false;\n this.gridPool = {};\n this.sheet = {};\n this.grpFooterTemplates = [];\n this.footerTemplates = [];\n this.aggIndex = 0;\n this.totalAggregates = 0;\n this.parent = parent;\n this.helper = new ExportHelper(parent);\n this.locator = locator;\n this.l10n = this.locator.getService('localization');\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n */\n ExcelExport.prototype.getModuleName = function () {\n return 'ExcelExport';\n };\n ExcelExport.prototype.init = function (gObj) {\n if (gObj.element !== null && gObj.element.id === '') {\n gObj.element.id = new Date().toISOString();\n this.isElementIdChanged = true;\n }\n this.parent = gObj;\n if (this.parent.isDestroyed) {\n return;\n }\n this.isExporting = undefined;\n this.book = {};\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.rowLength = 1;\n this.footer = undefined;\n this.expType = 'AppendToSheet';\n this.includeHiddenColumn = false;\n this.exportValueFormatter = new ExportValueFormatter(gObj.locale);\n gObj.id = getUid('main-grid');\n this.gridPool[gObj.id] = false;\n };\n /**\n * Export Grid to Excel file.\n *\n * @param {IGrid} grid - Defines the grid.\n * @param {exportProperties} exportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Defines is multiple Grid's are exported.\n * @param {Workbook} workbook - Defined the Workbook if multiple Grid is exported.\n * @param {boolean} isCsv - true if export to CSV.\n * @param {boolean} isBlob - true if isBlob is enabled.\n * @returns {Promise} - Returns the map for export.\n */\n // eslint-disable-next-line\n ExcelExport.prototype.Map = function (grid, exportProperties, isMultipleExport, workbook, isCsv, isBlob) {\n var gObj = grid;\n var cancel = 'cancel';\n var isBlb = 'isBlob';\n var Child = 'isChild';\n var csv = 'isCsv';\n var workbk = 'workbook';\n var isMultiEx = 'isMultipleExport';\n this.gridPool = {};\n if ((grid.childGrid || grid.detailTemplate) && !(!isNullOrUndefined(exportProperties) && exportProperties.hierarchyExportMode === 'None')) {\n grid.expandedRows = getPrintGridModel(grid).expandedRows;\n }\n var args = {\n requestType: 'beforeExcelExport', gridObject: gObj, cancel: false,\n isMultipleExport: isMultipleExport, workbook: workbook, isCsv: isCsv, isBlob: isBlob, isChild: this.isChild,\n grpFooterTemplates: this.grpFooterTemplates\n };\n gObj.trigger(events.beforeExcelExport, args);\n if (args[\"\" + cancel]) {\n return new Promise(function (resolve) {\n return resolve();\n });\n }\n this.parent.log('exporting_begin', this.getModuleName());\n this.data = new Data(gObj);\n this.isExporting = true;\n this.isBlob = args[\"\" + isBlb];\n this.isChild = args[\"\" + Child];\n this.grpFooterTemplates = args['grpFooterTemplates'];\n if (args[\"\" + csv]) {\n this.isCsvExport = args[\"\" + csv];\n }\n else {\n this.isCsvExport = false;\n }\n if (isExportColumns(exportProperties)) {\n updateColumnTypeForExportColumns(exportProperties, gObj);\n }\n return this.processRecords(gObj, exportProperties, args[\"\" + isMultiEx], args[\"\" + workbk]);\n };\n ExcelExport.prototype.exportingSuccess = function (resolve) {\n this.isExporting = false;\n this.parent.trigger(events.excelExportComplete, this.isBlob ? { promise: this.blobPromise } : { gridInstance: this.parent });\n this.parent.log('exporting_complete', this.getModuleName());\n resolve(this.book);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ExcelExport.prototype.processRecords = function (gObj, exportProperties, isMultipleExport, workbook) {\n var _this = this;\n if (gObj.allowGrouping && gObj.groupSettings.enableLazyLoading && gObj.groupSettings.columns.length) {\n if (isNullOrUndefined(exportProperties)) {\n exportProperties = { hierarchyExportMode: 'All' };\n }\n else {\n exportProperties.hierarchyExportMode = exportProperties.hierarchyExportMode || 'All';\n }\n }\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.dataSource)) {\n exportProperties.dataSource = exportProperties.dataSource instanceof DataManager ?\n exportProperties.dataSource : new DataManager(exportProperties.dataSource);\n var query_1 = exportProperties.query ? exportProperties.query : new Query();\n if (isNullOrUndefined(query_1.isCountRequired) || gObj.aggregates) {\n query_1.isCountRequired = true;\n }\n return new Promise(function (resolve) {\n var dataManager = exportProperties.dataSource.executeQuery(query_1);\n dataManager.then(function (r) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, r).then(function () {\n _this.exportingSuccess(resolve);\n });\n });\n });\n }\n else if (!isNullOrUndefined(exportProperties) && exportProperties.exportType === 'CurrentPage') {\n return new Promise(function (resolve) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, _this.parent.getCurrentViewRecords());\n _this.exportingSuccess(resolve);\n });\n }\n else {\n var allPromise_1 = [];\n allPromise_1.push(this.data.getData({}, ExportHelper.getQuery(gObj, this.data)));\n allPromise_1.push(this.helper.getColumnData(gObj));\n return new Promise(function (resolve, reject) {\n Promise.all(allPromise_1).then(function (e) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, e[0]).then(function () {\n _this.exportingSuccess(resolve);\n });\n }).catch(function (e) {\n reject(_this.book);\n _this.parent.trigger(events.actionFailure, e);\n });\n });\n }\n };\n ExcelExport.prototype.processInnerRecords = function (gObj, exportProperties, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isMultipleExport, workbook, r) {\n var _this = this;\n this.groupedColLength = gObj.groupSettings.columns.length;\n var blankRows = 5;\n var separator;\n var rows = [];\n var colDepth = measureColumnDepth(gObj.columns);\n var isExportPropertiesPresent = !isNullOrUndefined(exportProperties);\n if (isExportPropertiesPresent && !isNullOrUndefined(exportProperties.multipleExport)) {\n this.expType = (!isNullOrUndefined(exportProperties.multipleExport.type) ? exportProperties.multipleExport.type : 'AppendToSheet');\n if (!isNullOrUndefined(exportProperties.multipleExport.blankRows)) {\n blankRows = exportProperties.multipleExport.blankRows;\n }\n }\n if (isNullOrUndefined(workbook)) {\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.sheet.images = [];\n }\n else if (this.expType === 'NewSheet') {\n this.workSheet = workbook.worksheets;\n this.rows = [];\n this.columns = [];\n this.sheet.images = [];\n this.styles = workbook.styles;\n }\n else {\n this.workSheet = [];\n this.rows = workbook.worksheets[0].rows;\n this.columns = workbook.worksheets[0].columns;\n this.styles = workbook.styles;\n this.sheet.images = workbook.worksheets[0].images;\n this.rowLength = (this.rows[this.rows.length - 1].index + blankRows);\n this.rowLength++;\n }\n if (isExportPropertiesPresent) {\n if (!isNullOrUndefined(isMultipleExport)) {\n if (!isNullOrUndefined(exportProperties.header) && (isMultipleExport || this.expType === 'NewSheet')) {\n this.processExcelHeader(JSON.parse(JSON.stringify(exportProperties.header)));\n }\n if (!isNullOrUndefined(exportProperties.footer)) {\n if (this.expType === 'AppendToSheet') {\n if (!isMultipleExport) {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n else {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n }\n else {\n if (!isNullOrUndefined(exportProperties.header)) {\n this.processExcelHeader(JSON.parse(JSON.stringify(exportProperties.header)));\n }\n if (!isNullOrUndefined(exportProperties.footer)) {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n }\n this.includeHiddenColumn = (isExportPropertiesPresent ? exportProperties.includeHiddenColumn : false);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n gObj.childGridLevel = 0;\n rows = _this.processGridExport(gObj, exportProperties, r);\n _this.globalResolve = resolve;\n _this.gridPool[gObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n }).then(function () {\n var organisedRows = [];\n _this.organiseRows(rows, rows[0].index, organisedRows);\n _this.rows = _this.rows.concat(organisedRows);\n //footer template add\n if (!isNullOrUndefined(_this.footer)) {\n if ((_this.expType === 'AppendToSheet' && !isMultipleExport) || (_this.expType === 'NewSheet')) {\n _this.processExcelFooter(_this.footer);\n }\n }\n if (_this.columns.length > 0) {\n _this.sheet.columns = _this.columns;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.sheet.rows = _this.rows;\n _this.sheet.enableRtl = _this.parent.enableRtl;\n if (_this.parent.allowFiltering && gObj.getVisibleColumns().length && isExportPropertiesPresent &&\n exportProperties.enableFilter) {\n var headerRowLen = exportProperties.header ? exportProperties.header.headerRows ||\n exportProperties.header.rows.length : 0;\n var autoFilters = {\n row: colDepth + headerRowLen, column: _this.groupedColLength ? _this.groupedColLength + 1 :\n _this.sheet.columns[0].index, lastRow: _this.sheet.rows.length, lastColumn: _this.sheet.columns.length\n };\n _this.sheet.autoFilters = autoFilters;\n }\n _this.workSheet.push(_this.sheet);\n _this.book.worksheets = _this.workSheet;\n _this.book.styles = _this.styles;\n gObj.notify('finalPageSetup', _this.book);\n if (!isMultipleExport) {\n if (_this.isCsvExport) {\n if (isExportPropertiesPresent && !isNullOrUndefined(exportProperties.separator)\n && exportProperties.separator !== ',') {\n separator = exportProperties.separator;\n }\n var book = new Workbook(_this.book, 'csv', gObj.locale, defaultCurrencyCode, separator);\n if (!_this.isBlob) {\n if (isExportPropertiesPresent && exportProperties.fileName) {\n book.save(exportProperties.fileName);\n }\n else {\n book.save('Export.csv');\n }\n }\n else {\n _this.blobPromise = book.saveAsBlob('text/csv');\n }\n }\n else {\n var book = new Workbook(_this.book, 'xlsx', gObj.locale, defaultCurrencyCode);\n if (!_this.isBlob) {\n if (isExportPropertiesPresent && exportProperties.fileName) {\n book.save(exportProperties.fileName);\n }\n else {\n book.save('Export.xlsx');\n }\n }\n else {\n _this.blobPromise = book.saveAsBlob('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');\n }\n }\n if (_this.isElementIdChanged) {\n gObj.element.id = '';\n }\n delete gObj.expandedRows;\n }\n return workbook;\n });\n };\n ExcelExport.prototype.organiseRows = function (rows, initialIndex, organisedRows) {\n if (!rows.length) {\n return initialIndex;\n }\n for (var i = 0; i < rows.length; i++) {\n var row = rows[parseInt(i.toString(), 10)];\n var childRows = row.childRows;\n if (childRows) {\n row.index = initialIndex++;\n delete row.childRows;\n organisedRows.push(row);\n initialIndex = this.organiseRows(childRows, initialIndex, organisedRows);\n }\n else {\n row.index = initialIndex++;\n organisedRows.push(row);\n }\n }\n return initialIndex;\n };\n ExcelExport.prototype.processGridExport = function (gObj, exportProperties, r) {\n var excelRows = [];\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.theme)) {\n this.theme = exportProperties.theme;\n }\n if ((gObj.childGrid || gObj.detailTemplate) && !isNullOrUndefined(exportProperties)) {\n gObj.hierarchyPrintMode = exportProperties.hierarchyExportMode || 'Expanded';\n }\n var helper = new ExportHelper(gObj, this.helper.getForeignKeyData());\n var gColumns = isExportColumns(exportProperties) ?\n prepareColumns(exportProperties.columns, gObj.enableColumnVirtualization) :\n helper.getGridExportColumns(gObj.columns);\n var headerRow = helper.getHeaders(gColumns, this.includeHiddenColumn);\n var groupIndent = gObj.groupSettings.columns.length ? gObj.groupSettings.columns.length - 1 : 0;\n excelRows = this.processHeaderContent(gObj, headerRow, groupIndent, excelRows);\n if (!isNullOrUndefined(exportProperties) && Object.keys(exportProperties).length &&\n isNullOrUndefined(exportProperties.dataSource)) {\n if (exportProperties.exportType === 'CurrentPage' && (!gObj.groupSettings.enableLazyLoading\n || gObj.getDataModule().isRemote())) {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, gObj.currentViewData, excelRows, helper);\n }\n else if (gObj.groupSettings.enableLazyLoading && !gObj.getDataModule().isRemote()) {\n var groupData = void 0;\n if (!isNullOrUndefined(exportProperties) && Object.keys(exportProperties).length) {\n var isAllPage = exportProperties.exportType === 'CurrentPage'\n ? false : true;\n var groupQuery = gObj.getDataModule().generateQuery(isAllPage);\n var lazyloadData = gObj.getDataModule().dataManager.executeLocal(groupQuery);\n groupQuery.lazyLoad = [];\n var fName = 'fn';\n if (!isAllPage) {\n for (var i = 0; i < groupQuery.queries.length; i++) {\n if (groupQuery.queries[parseInt(i.toString(), 10)]['' + fName] === 'onPage') {\n groupQuery.queries[parseInt(i.toString(), 10)].e.pageSize = lazyloadData.reduce(function (acc, curr) { return acc + curr['count']; }, 0);\n }\n }\n }\n if (exportProperties.hierarchyExportMode === 'All') {\n groupData = gObj.getDataModule().dataManager.executeLocal(groupQuery);\n }\n else if (exportProperties.hierarchyExportMode === 'Expanded' || exportProperties.hierarchyExportMode === 'None' ||\n isNullOrUndefined(exportProperties.hierarchyExportMode)) {\n groupData = gObj.getDataModule().dataManager.executeLocal(groupQuery);\n var lazQuery = this.parent.contentModule.lazyLoadQuery;\n for (var i = 0; i < lazQuery.length; i++) {\n var query = lazQuery[parseInt(i.toString(), 10)];\n var where = query[0];\n for (var j = 0; j < groupData.length; j++) {\n var data = groupData[parseInt(j.toString(), 10)];\n if (data['key'] === where['value']) {\n lazyloadData[parseInt(i.toString(), 10)] = groupData[parseInt(j.toString(), 10)];\n }\n }\n }\n groupData = lazyloadData;\n }\n }\n else {\n groupData = gObj.currentViewData;\n }\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, groupData, excelRows, helper);\n }\n else {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, undefined, excelRows, helper);\n }\n }\n else {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, undefined, excelRows, helper);\n }\n gObj.notify(events.exportDataBound, { excelRows: excelRows, type: 'excel' });\n this.capTemplate = undefined;\n this.footerTemplates = [];\n this.grpFooterTemplates = [];\n this.aggIndex = 0;\n this.totalAggregates = 0;\n return excelRows;\n };\n ExcelExport.prototype.processRecordContent = function (gObj, returnType, headerRow, exportProperties, currentViewRecords, excelRow, helper) {\n var record;\n if (!isNullOrUndefined(currentViewRecords) && currentViewRecords.length) {\n record = currentViewRecords;\n }\n else {\n record = returnType.result;\n }\n if (!isNullOrUndefined(record.level)) {\n this.processGroupedRows(gObj, record, headerRow, record.level, 0, exportProperties, excelRow, helper);\n }\n else {\n this.processRecordRows(gObj, record, headerRow, 0, 0, exportProperties, excelRow, helper);\n }\n if (!isNullOrUndefined(returnType.aggregates)) {\n if (!isNullOrUndefined(currentViewRecords) && !this.parent.groupSettings.enableLazyLoading) {\n this.processAggregates(gObj, returnType.result, excelRow, currentViewRecords);\n }\n else {\n var result = returnType.result.GroupGuid ?\n returnType.result.records : returnType.result;\n this.processAggregates(gObj, result, excelRow);\n }\n }\n return excelRow;\n };\n ExcelExport.prototype.processGroupedRows = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n gObj, dataSource, headerRow, level, startIndex, excelExportProperties, excelRows, helper) {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n var cells = [];\n var index = 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var cell = {};\n cell.index = (index + level) - 1;\n var col = gObj.getColumnByField(item.field);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var args = {\n value: item.key,\n column: col,\n style: undefined,\n isForeignKey: col.isForeignColumn()\n };\n var value = gObj.getColumnByField(item.field).headerText +\n ': ' + (!col.enableGroupByFormat ? this.exportValueFormatter.formatCellValue(args) : item.key) + ' - ';\n if (item.count > 1) {\n value += item.count + ' items';\n }\n else {\n value += item.count + ' item';\n }\n var cArgs = { captionText: value, type: this.isCsvExport ? 'CSV' : 'Excel', data: item };\n this.parent.trigger(events.exportGroupCaption, cArgs);\n cell.value = cArgs.captionText;\n cell.style = this.getCaptionThemeStyle(this.theme);\n if (!isNullOrUndefined(cArgs.style)) {\n cell.style = this.mergeOptions(cell.style, cArgs.style);\n }\n var captionModelGen = new CaptionSummaryModelGenerator(gObj);\n var groupCaptionSummaryRows = captionModelGen.generateRows(item);\n this.fillAggregates(gObj, groupCaptionSummaryRows, (dataSource.level + dataSource.childLevels) - 1, excelRows, this.rowLength);\n cells.push(cell);\n if (excelRows[excelRows.length - 1].cells.length > 0) {\n var lIndex = dataSource.level + dataSource.childLevels + groupCaptionSummaryRows[0].cells.length;\n var hIndex = 0;\n for (var _a = 0, _b = excelRows[excelRows.length - 1].cells; _a < _b.length; _a++) {\n var tCell = _b[_a];\n if (tCell.index < lIndex) {\n lIndex = tCell.index;\n }\n if (tCell.index > hIndex) {\n hIndex = tCell.index;\n }\n if (cells[cells.length - 1].index !== tCell.index) {\n cells.push(tCell);\n }\n }\n if ((lIndex - cell.index) > 1) {\n cell.colSpan = lIndex - cell.index;\n }\n while (hIndex < (headerRow.columns.length + level + dataSource.childLevels)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var sCell = {};\n sCell.index = (hIndex + 1);\n sCell.style = this.getCaptionThemeStyle(this.theme);\n cells.push(sCell);\n hIndex++;\n }\n }\n else {\n var span = 0;\n //Calculation for column span when group caption dont have aggregates\n for (var _c = 0, _d = headerRow.columns; _c < _d.length; _c++) {\n var col_1 = _d[_c];\n if (col_1.visible) {\n span++;\n }\n }\n cell.colSpan = (dataSource.childLevels + span);\n }\n excelRows[excelRows.length - 1].cells = cells;\n this.rowLength++;\n if (this.groupedColLength < 8 && level > 1) {\n var grouping = { outlineLevel: level - 1, isCollapsed: true };\n excelRows[excelRows.length - 1].grouping = grouping;\n }\n if (!isNullOrUndefined(dataSource.childLevels) && dataSource.childLevels > 0) {\n this.processGroupedRows(gObj, item.items, headerRow, item.items.level, startIndex, excelExportProperties, excelRows, helper);\n this.processAggregates(gObj, item, excelRows, undefined, (level - 1) + dataSource.childLevels, true);\n }\n else {\n startIndex = this.processRecordRows(gObj, item.items, headerRow, (level - 1), startIndex, excelExportProperties, excelRows, helper);\n this.processAggregates(gObj, item, excelRows, undefined, (level - 1), true);\n }\n }\n };\n ExcelExport.prototype.processRecordRows = function (gObj, record, headerRow, level, startIndex, excelExportProperties, excelRows, helper) {\n var index = 1;\n var cells = [];\n var columns = headerRow.columns;\n var rows = helper.getGridRowModel(columns, record, gObj, startIndex);\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n cells = [];\n startIndex++;\n index = 1;\n var templateRowHeight = void 0;\n for (var c = 0, len = row.cells.length; c < len; c++) {\n var gCell = row.cells[parseInt(c.toString(), 10)];\n if (gCell.cellType !== CellType.Data) {\n continue;\n }\n var column = gCell.column;\n var field = column.field;\n var cellValue = !isNullOrUndefined(field) ? column.valueAccessor(field, row.data, column) : '';\n var value = !isNullOrUndefined(cellValue) ? cellValue : '';\n if (column.type === 'dateonly' && typeof value === 'string' && value) {\n var arr = value.split(/[^0-9.]/);\n value = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n var fkData = void 0;\n if (column.isForeignColumn && column.isForeignColumn()) {\n fkData = helper.getFData(value, column);\n value = getValue(column.foreignKeyValue, fkData);\n }\n if (!isNullOrUndefined(value)) {\n var cell = {};\n var idx = index + level + gObj.childGridLevel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var excelCellArgs = {\n data: row.data, column: column, foreignKeyData: fkData,\n value: value, style: undefined, colSpan: 1, cell: cell\n };\n gObj.trigger(events.excelQueryCellInfo, excelCellArgs);\n if (!isNullOrUndefined(excelCellArgs.image) && !isNullOrUndefined(excelCellArgs.image.base64)) {\n templateRowHeight = this.setImage(excelCellArgs, idx);\n if (excelCellArgs.image.height && excelCellArgs.value !== '') {\n templateRowHeight += 30;\n }\n }\n if (!isNullOrUndefined(excelCellArgs.hyperLink)) {\n excelCellArgs.cell.hyperlink = { target: excelCellArgs.hyperLink.target };\n excelCellArgs.value = excelCellArgs.hyperLink.displayText || excelCellArgs.value;\n }\n cell = excelCellArgs.cell;\n cell.index = idx;\n cell.value = excelCellArgs.value;\n if (excelCellArgs.data === '' && gObj.childGridLevel && index === 1) {\n var style = {};\n style.hAlign = 'left';\n excelCellArgs = { style: style };\n cell.colSpan = gObj.getVisibleColumns().length;\n cell.value = this.l10n.getConstant('EmptyRecord');\n }\n if (excelCellArgs.colSpan > 1) {\n cell.colSpan = excelCellArgs.colSpan;\n }\n if (!isNullOrUndefined(excelCellArgs.style)) {\n var styleIndex = this.getColumnStyle(gObj, index + level);\n cell.style = this.mergeOptions(this.styles[parseInt(styleIndex.toString(), 10)], excelCellArgs.style);\n }\n else {\n cell.style = { name: gObj.element.id + 'column' + (index + level) };\n }\n cells.push(cell);\n }\n index++;\n }\n var excelRow = { index: this.rowLength++, cells: cells };\n if (!isNullOrUndefined(templateRowHeight)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n excelRow.height = templateRowHeight;\n }\n if (this.groupedColLength && this.groupedColLength < 8 && (level + 1) > 0) {\n excelRow.grouping = { outlineLevel: (level + 1), isCollapsed: true };\n excelRows.push(excelRow);\n }\n else {\n excelRows.push(excelRow);\n }\n if ((row.isExpand || this.isChild) && (!isNullOrUndefined(gObj.childGrid) || !isNullOrUndefined(gObj.detailTemplate))) {\n if (!isNullOrUndefined(gObj.childGrid)) {\n gObj.isPrinting = true;\n var exportType = (!isNullOrUndefined(excelExportProperties) && excelExportProperties.exportType) ?\n excelExportProperties.exportType : 'AllPages';\n var returnVal = this.helper.createChildGrid(gObj, row, exportType, this.gridPool);\n var childGridObj = returnVal.childGrid;\n var element = returnVal.element;\n childGridObj.actionFailure =\n helper.failureHandler(this.gridPool, childGridObj, this.globalResolve);\n childGridObj.childGridLevel = gObj.childGridLevel + 1;\n var args = { childGrid: childGridObj, row: row, exportProperties: excelExportProperties };\n this.parent.trigger(events.exportDetailDataBound, args);\n childGridObj.beforeDataBound = this.childGridCell(excelRow, childGridObj, excelExportProperties, row);\n childGridObj.appendTo(element);\n }\n else {\n var args = { parentRow: row, row: excelRow, value: {}, action: 'excelexport', gridInstance: gObj };\n this.parent.trigger(events.exportDetailTemplate, args);\n excelRow.childRows = this.processDetailTemplate(args);\n }\n }\n gObj.notify(events.exportRowDataBound, { rowObj: row, type: 'excel', excelRows: excelRows });\n }\n return startIndex;\n };\n ExcelExport.prototype.processDetailTemplate = function (templateData) {\n var _this = this;\n var rows = [];\n var templateRowHeight;\n var detailIndent = 2;\n var detailCellIndex;\n if (templateData.value.columnHeader || templateData.value.rows) {\n var processCell_1 = function (currentCell, isHeader) {\n var cell = {};\n if (isNullOrUndefined(currentCell.index)) {\n currentCell.index = detailCellIndex;\n detailCellIndex++;\n }\n cell.index = currentCell.index + detailIndent;\n if (!isNullOrUndefined(currentCell.value)) {\n cell.value = currentCell.value;\n }\n if (!isNullOrUndefined(currentCell.colSpan)) {\n cell.colSpan = currentCell.colSpan;\n }\n if (!isNullOrUndefined(currentCell.rowSpan)) {\n cell.rowSpan = currentCell.rowSpan;\n }\n if (isHeader) {\n cell.style = _this.getHeaderThemeStyle(_this.theme);\n }\n else {\n cell.style = _this.getRecordThemeStyle(_this.theme);\n }\n if (!isNullOrUndefined(currentCell.style)) {\n var cellStyle = {\n fontColor: currentCell.style.fontColor,\n fontName: currentCell.style.fontName,\n fontSize: currentCell.style.fontSize,\n hAlign: currentCell.style.excelHAlign,\n vAlign: currentCell.style.excelVAlign,\n rotation: currentCell.style.excelRotation,\n bold: currentCell.style.bold,\n indent: currentCell.style.indent,\n italic: currentCell.style.italic,\n underline: currentCell.style.underline,\n backColor: currentCell.style.backColor,\n wrapText: currentCell.style.wrapText,\n borders: currentCell.style.excelBorders,\n numberFormat: currentCell.style.excelNumberFormat,\n type: currentCell.style.excelType,\n strikeThrough: currentCell.style.strikeThrough\n };\n cell.style = _this.mergeOptions(cellStyle, cell.style);\n }\n if (!isNullOrUndefined(currentCell.image) && !isNullOrUndefined(currentCell.image.base64)) {\n if (currentCell.rowSpan > 1) {\n _this.setImage(currentCell, cell.index);\n }\n else {\n templateRowHeight = _this.setImage(currentCell, cell.index);\n if (currentCell.image.height && currentCell.value !== '') {\n templateRowHeight += 30;\n }\n }\n }\n if (!isNullOrUndefined(currentCell.hyperLink)) {\n cell.hyperlink = { target: currentCell.hyperLink.target };\n cell.value = currentCell.hyperLink.displayText;\n }\n return cell;\n };\n var processRow = function (currentRow, isHeader) {\n var excelDetailCells = [];\n detailCellIndex = 0;\n for (var j = 0; j < currentRow.cells.length; j++) {\n var currentCell = currentRow.cells[parseInt(j.toString(), 10)];\n var detailCell = processCell_1(currentCell, isHeader);\n excelDetailCells.push(detailCell);\n }\n var row = { index: _this.rowLength++, cells: excelDetailCells };\n if (!isNullOrUndefined(templateRowHeight)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n row.height = templateRowHeight;\n templateRowHeight = null;\n }\n rows.push(row);\n };\n if (templateData.value.columnHeader) {\n for (var i = 0; i < templateData.value.columnHeader.length; i++) {\n processRow(templateData.value.columnHeader[parseInt(i.toString(), 10)], true);\n }\n }\n if (templateData.value.rows) {\n for (var i = 0; i < templateData.value.rows.length; i++) {\n processRow(templateData.value.rows[parseInt(i.toString(), 10)]);\n }\n }\n }\n else if (templateData.value.image) {\n templateRowHeight = this.setImage(templateData.value, detailIndent);\n var row = {\n index: this.rowLength++,\n cells: [{\n index: detailIndent,\n style: this.getRecordThemeStyle(this.theme)\n }]\n };\n if (!isNullOrUndefined(templateRowHeight)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n row.height = templateRowHeight;\n templateRowHeight = null;\n }\n rows.push(row);\n }\n else if (templateData.value.text) {\n var row = {\n index: this.rowLength++,\n cells: [{\n index: detailIndent,\n value: templateData.value.text,\n style: this.getRecordThemeStyle(this.theme)\n }]\n };\n rows.push(row);\n }\n else if (templateData.value.hyperLink) {\n var row = {\n index: this.rowLength++,\n cells: [{\n index: 2,\n hyperlink: { target: templateData.value.hyperLink.target },\n value: templateData.value.hyperLink.displayText,\n style: this.getRecordThemeStyle(this.theme)\n }]\n };\n rows.push(row);\n }\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].grouping = {\n outlineLevel: 1, isCollapsed: !templateData.parentRow.isExpand, isHidden: !templateData.parentRow.isExpand\n };\n }\n return rows;\n };\n ExcelExport.prototype.setImage = function (args, idx) {\n if (isNullOrUndefined(this.sheet.images)) {\n this.sheet.images = [];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var excelImage = {\n image: args.image.base64, row: this.rowLength, column: idx,\n lastRow: this.rowLength, lastColumn: idx\n };\n if (args.image.width && args.image.height) {\n excelImage.width = args.image.width;\n excelImage.height = args.image.height;\n }\n this.sheet.images.push(excelImage);\n this.columns[idx - 1].width = args.image.width || this.columns[idx - 1].width;\n return args.image.height || 50;\n };\n ExcelExport.prototype.childGridCell = function (excelRow, childGridObj, excelExportProps, gRow) {\n var _this = this;\n return function (result) {\n childGridObj.beforeDataBound = null;\n result.cancel = true;\n if (result.result.length === 0) {\n result.result = [''];\n }\n excelRow.childRows = _this.processGridExport(childGridObj, excelExportProps, result);\n var intent = _this.parent.groupSettings.columns.length;\n var rows = excelRow.childRows;\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].grouping = { outlineLevel: intent + childGridObj\n .childGridLevel, isCollapsed: !gRow.isExpand, isHidden: !gRow.isExpand };\n }\n childGridObj.destroy();\n detach(childGridObj.element);\n _this.gridPool[childGridObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n return excelRow;\n };\n };\n ExcelExport.prototype.processAggregates = function (gObj, rec, excelRows, currentViewRecords, indent, byGroup) {\n var summaryModel = new SummaryModelGenerator(gObj);\n var columns = summaryModel.getColumns();\n columns = columns.filter(function (col) { return isNullOrUndefined(col.commands) && col.type !== 'checkbox'; });\n if (gObj.aggregates.length && this.parent !== gObj) {\n gObj.aggregateModule.prepareSummaryInfo();\n }\n var data = undefined;\n if (!isNullOrUndefined(currentViewRecords)) {\n data = currentViewRecords;\n }\n else {\n data = rec;\n }\n if (indent === undefined) {\n indent = 0;\n }\n if (gObj.groupSettings.columns.length > 0 && byGroup) {\n var groupSummaryModel = new GroupSummaryModelGenerator(gObj);\n var groupSummaryRows = groupSummaryModel.generateRows(data, { level: data.level });\n if (groupSummaryRows.length > 0) {\n excelRows = this.fillAggregates(gObj, groupSummaryRows, indent, excelRows);\n }\n }\n else {\n indent = gObj.groupSettings.columns.length > 0 && !byGroup ? gObj.groupSettings.columns.length : indent;\n var sRows = summaryModel.generateRows(data, rec.aggregates, null, null, columns);\n if (sRows.length > 0 && !byGroup) {\n indent = gObj.groupSettings.columns.length ? indent - 1 : indent;\n excelRows = this.fillAggregates(gObj, sRows, indent, excelRows);\n }\n }\n return excelRows;\n };\n ExcelExport.prototype.fillAggregates = function (gObj, rows, indent, excelRows, customIndex) {\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n var cells = [];\n var isEmpty = true;\n var index = 0;\n for (var _a = 0, _b = row.cells; _a < _b.length; _a++) {\n var cell = _b[_a];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var eCell = {};\n var columnsDetails = {};\n if (!isNullOrUndefined(cell.attributes.index)) {\n columnsDetails = this.parent.getColumnByIndex(cell.attributes.index);\n }\n if (cell.cellType === CellType.DetailFooterIntent || columnsDetails.type === 'checkbox' || columnsDetails.commands) {\n continue;\n }\n if ((cell.visible || this.includeHiddenColumn)) {\n index++;\n if (cell.isDataCell) {\n isEmpty = false;\n var footerTemplate = !isNullOrUndefined(cell.column.footerTemplate);\n var groupFooterTemplate = !isNullOrUndefined(cell.column.groupFooterTemplate);\n var groupCaptionTemplate = !isNullOrUndefined(cell.column.groupCaptionTemplate);\n eCell.index = index + indent + gObj.childGridLevel;\n if (footerTemplate) {\n eCell.value = this.getAggreateValue(gObj, CellType.Summary, cell.column.footerTemplate, cell, row);\n }\n else if (groupFooterTemplate) {\n eCell.value = this.getAggreateValue(gObj, CellType.GroupSummary, cell.column.groupFooterTemplate, cell, row);\n }\n else if (groupCaptionTemplate) {\n eCell.value = this.getAggreateValue(gObj, CellType.CaptionSummary, cell.column.groupCaptionTemplate, cell, row);\n }\n else {\n for (var _c = 0, _d = Object.keys(row.data[cell.column.field]); _c < _d.length; _c++) {\n var key = _d[_c];\n if (key === cell.column.type) {\n if (!isNullOrUndefined(row.data[cell.column.field].Sum)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - sum\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Average)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - average\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Max)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - max\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Min)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - min\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Count)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - count\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].TrueCount)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - truecount\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].FalseCount)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - falsecount\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Custom)) {\n eCell.value = row.data[cell.column.field].Custom;\n }\n }\n }\n }\n eCell.style = this.getCaptionThemeStyle(this.theme); //{ name: gObj.element.id + 'column' + index };\n this.aggregateStyle(cell.column, eCell.style, cell.column.field);\n var gridCellStyle = cell.attributes.style;\n if (gridCellStyle.textAlign) {\n eCell.style.hAlign = gridCellStyle.textAlign.toLowerCase();\n }\n var args = {\n row: row,\n type: footerTemplate ? 'Footer' : groupFooterTemplate ? 'GroupFooter' : 'GroupCaption',\n style: eCell,\n cell: cell\n };\n this.parent.trigger(events.excelAggregateQueryCellInfo, args);\n cells.push(eCell);\n }\n else {\n if (customIndex === undefined) {\n eCell.index = index + indent + gObj.childGridLevel;\n eCell.style = this.getCaptionThemeStyle(this.theme); //{ name: gObj.element.id + 'column' + index };\n cells.push(eCell);\n }\n }\n }\n }\n if (!isNullOrUndefined(customIndex)) {\n excelRows.push({ index: customIndex, cells: cells });\n }\n else {\n var row_1 = {};\n var dummyOutlineLevel = 'outlineLevel';\n var dummyGrouping = 'grouping';\n if (this.groupedColLength < 8 && this.groupedColLength > 0 && !(gObj.groupSettings.enableLazyLoading && isNullOrUndefined(excelRows[excelRows.length - 1][\"\" + dummyGrouping]))) {\n var level = excelRows[excelRows.length - 1][\"\" + dummyGrouping][\"\" + dummyOutlineLevel];\n var grouping = { outlineLevel: level, isCollapsed: true };\n row_1 = { index: this.rowLength++, cells: cells, grouping: grouping };\n }\n else {\n row_1 = { index: this.rowLength++, cells: cells };\n }\n if (!isEmpty) {\n excelRows.push(row_1);\n }\n }\n }\n return excelRows;\n };\n ExcelExport.prototype.aggregateStyle = function (col, style, field) {\n var column = this.parent.getColumnByField(field);\n if (typeof col.format === 'object') {\n var format = col.format;\n style.numberFormat = !isNullOrUndefined(format.format) ? format.format : format.skeleton;\n if (!isNullOrUndefined(format.type)) {\n style.type = format.type.toLowerCase();\n }\n }\n else {\n style.numberFormat = col.format;\n }\n if (!isNullOrUndefined(column) && isNullOrUndefined(style.type)) {\n style.type = column.type.toLowerCase();\n }\n };\n ExcelExport.prototype.getAggreateValue = function (gObj, cellType, template, cell, row) {\n var templateFn = {};\n templateFn[getEnumValue(CellType, cell.cellType)] = compile(template);\n var txt;\n var data = row.data[cell.column.field ? cell.column.field : cell.column.columnName];\n if ((this.parent.isReact || this.parent.isVue || this.parent.isVue3 || this.parent.isAngular) &&\n !(typeof cell.column.footerTemplate === 'string' || typeof cell.column.groupFooterTemplate === 'string' || typeof cell.column.groupCaptionTemplate === 'string')) {\n txt = data[(cell.column.type)];\n return !isNullOrUndefined(txt) ? (txt) : '';\n }\n else {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data));\n }\n return !isNullOrUndefined(txt[0]) ? txt[0].textContent : '';\n };\n ExcelExport.prototype.mergeOptions = function (JSON1, JSON2) {\n var result = {};\n var attrname = Object.keys(JSON1);\n for (var index = 0; index < attrname.length; index++) {\n if (attrname[parseInt(index.toString(), 10)] !== 'name') {\n result[attrname[parseInt(index.toString(), 10)]] = JSON1[attrname[parseInt(index.toString(), 10)]];\n }\n }\n attrname = Object.keys(JSON2);\n for (var index = 0; index < attrname.length; index++) {\n if (attrname[parseInt(index.toString(), 10)] !== 'name') {\n result[attrname[parseInt(index.toString(), 10)]] = JSON2[attrname[parseInt(index.toString(), 10)]];\n }\n }\n return result;\n };\n ExcelExport.prototype.getColumnStyle = function (gObj, columnIndex) {\n var index = 0;\n for (var _i = 0, _a = this.styles; _i < _a.length; _i++) {\n var style = _a[_i];\n if (style.name === gObj.element.id + 'column' + columnIndex) {\n return index;\n }\n index++;\n }\n return undefined;\n };\n ExcelExport.prototype.headerRotation = function (args) {\n var degree = args.style.rotation;\n if (degree <= 90 && degree >= 0) {\n args.style.hAlign = 'Left';\n }\n else if (degree > 90 && degree <= 180) {\n args.style.hAlign = 'Right';\n }\n else {\n degree = 180;\n args.style.hAlign = 'Right';\n }\n args.style.rotation = degree;\n };\n ExcelExport.prototype.processHeaderContent = function (gObj, headerRow, indent, excelRows) {\n var rowIndex = 1;\n var gridRows = headerRow.rows;\n // Column collection with respect to the records in the grid\n var gridColumns = headerRow.columns;\n var spannedCells = [];\n if (indent > 0) {\n var index = 0;\n while (index !== indent) {\n this.columns.push({ index: index + 1, width: 30 });\n index++;\n }\n }\n for (var col = 0; col < gridColumns.length; col++) {\n this.parseStyles(gObj, gridColumns[parseInt(col.toString(), 10)], this.getRecordThemeStyle(this.theme), indent + col + 1);\n }\n var templateRowHeight;\n for (var row = 0; row < gridRows.length; row++) {\n var currentCellIndex = 1 + indent;\n var cells = [];\n for (var column = 0; column < gridRows[parseInt(row.toString(), 10)].cells.length; column++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var style = {};\n var cell = {};\n var gridCell = gridRows[parseInt(row.toString(), 10)].cells[parseInt(column.toString(), 10)];\n if (gridCell.cellType === CellType.HeaderIndent || gridCell.cellType === CellType.DetailHeader) {\n continue;\n }\n var result = { contains: true, index: 1 };\n while (result.contains) {\n result = this.getIndex(spannedCells, rowIndex, currentCellIndex);\n currentCellIndex = result.index;\n if (!result.contains) {\n cell.index = result.index + gObj.childGridLevel;\n break;\n }\n }\n if (!isNullOrUndefined(gridCell.rowSpan) && gridCell.rowSpan !== 1) {\n cell.rowSpan = gridCell.rowSpan;\n for (var i = rowIndex; i < gridCell.rowSpan + rowIndex; i++) {\n var spannedCell = { rowIndex: 0, columnIndex: 0 };\n spannedCell.rowIndex = i;\n spannedCell.columnIndex = currentCellIndex;\n spannedCells.push(spannedCell);\n }\n }\n if (!isNullOrUndefined(gridCell.colSpan) && gridCell.colSpan !== 1) {\n cell.colSpan = gridCell.colSpan;\n currentCellIndex = currentCellIndex + cell.colSpan - 1;\n }\n cell.value = gridCell.column.headerText;\n style = this.getHeaderThemeStyle(this.theme);\n if (!isNullOrUndefined(gridCell.column.textAlign)) {\n style.hAlign = gridCell.column.textAlign.toLowerCase();\n }\n if (!isNullOrUndefined(gridCell.column.headerTextAlign)) {\n style.hAlign = gridCell.column.headerTextAlign.toLowerCase();\n }\n var excelHeaderCellArgs = { cell: cell, gridCell: gridCell, style: style };\n gObj.trigger(events.excelHeaderQueryCellInfo, excelHeaderCellArgs);\n if (excelHeaderCellArgs.style.rotation) {\n this.headerRotation(excelHeaderCellArgs);\n }\n if (!isNullOrUndefined(excelHeaderCellArgs.image) && !isNullOrUndefined(excelHeaderCellArgs.image.base64)) {\n templateRowHeight = this.setImage(excelHeaderCellArgs, currentCellIndex);\n }\n if (!isNullOrUndefined(excelHeaderCellArgs.hyperLink)) {\n excelHeaderCellArgs.cell.hyperlink = { target: excelHeaderCellArgs.hyperLink.target };\n cell.value = excelHeaderCellArgs.hyperLink.displayText || cell.value;\n }\n cell.style = excelHeaderCellArgs.style;\n cells.push(cell);\n currentCellIndex++;\n }\n var excelRow = { index: this.rowLength++, cells: cells };\n if (!isNullOrUndefined(templateRowHeight)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n excelRow.height = templateRowHeight;\n }\n excelRows.push(excelRow);\n }\n return excelRows;\n };\n ExcelExport.prototype.getHeaderThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 12;\n style.borders = { color: '#E0E0E0' };\n style.bold = true;\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.header)) {\n style = this.updateThemeStyle(theme.header, style);\n }\n return style;\n };\n ExcelExport.prototype.updateThemeStyle = function (themestyle, style) {\n return extend(style, themestyle);\n };\n ExcelExport.prototype.getCaptionThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 13;\n style.backColor = '#F6F6F6';\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.caption)) {\n style = this.updateThemeStyle(theme.caption, style);\n }\n return style;\n };\n ExcelExport.prototype.getRecordThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 13;\n style.borders = { color: '#E0E0E0' };\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.record)) {\n style = this.updateThemeStyle(theme.record, style);\n }\n return style;\n };\n ExcelExport.prototype.processExcelHeader = function (header) {\n if (!isNullOrUndefined(header.rows) && (this.expType === 'NewSheet' || this.rowLength === 1)) {\n var noRows = void 0;\n if (header.headerRows === undefined) {\n this.rowLength = header.rows.length;\n }\n else {\n this.rowLength = header.headerRows;\n }\n if (this.rowLength < header.rows.length) {\n noRows = this.rowLength;\n }\n else {\n noRows = header.rows.length;\n }\n this.rowLength++;\n for (var row = 0; row < noRows; row++) {\n var json = header.rows[parseInt(row.toString(), 10)];\n //Row index\n if (!(json.index !== null && !isNullOrUndefined(json.index))) {\n json.index = (row + 1);\n }\n this.updatedCellIndex(json);\n }\n }\n };\n ExcelExport.prototype.updatedCellIndex = function (json) {\n var cellsLength = json.cells.length;\n for (var cellId = 0; cellId < cellsLength; cellId++) {\n var jsonCell = json.cells[parseInt(cellId.toString(), 10)];\n //cell index\n if (!(jsonCell.index !== null && !isNullOrUndefined(jsonCell.index))) {\n jsonCell.index = (cellId + 1);\n }\n }\n this.rows.push(json);\n };\n ExcelExport.prototype.processExcelFooter = function (footer) {\n if (!isNullOrUndefined(footer.rows)) {\n var noRows = void 0;\n if (footer.footerRows === undefined) {\n this.rowLength += footer.rows.length;\n }\n else {\n if (footer.footerRows > footer.rows.length) {\n this.rowLength += (footer.footerRows - footer.rows.length);\n noRows = footer.rows.length;\n }\n else {\n noRows = footer.footerRows;\n }\n }\n for (var row = 0; row < noRows; row++) {\n var json = footer.rows[parseInt(row.toString(), 10)];\n //Row index\n if (json.index === null || json.index === undefined) {\n json.index = this.rowLength++;\n }\n else {\n json.index += this.rowLength;\n }\n this.updatedCellIndex(json);\n }\n }\n };\n ExcelExport.prototype.getIndex = function (spannedCells, rowIndex, columnIndex) {\n for (var _i = 0, spannedCells_1 = spannedCells; _i < spannedCells_1.length; _i++) {\n var spannedCell = spannedCells_1[_i];\n if ((spannedCell.rowIndex === rowIndex) && (spannedCell.columnIndex === columnIndex)) {\n columnIndex = columnIndex + 1;\n return { contains: true, index: columnIndex };\n }\n }\n return { contains: false, index: columnIndex };\n };\n ExcelExport.prototype.parseStyles = function (gObj, col, style, index) {\n if (!isNullOrUndefined(col.format)) {\n if (typeof col.format === 'object') {\n var format = col.format;\n style.numberFormat = !isNullOrUndefined(format.format) ? format.format : format.skeleton;\n if (!isNullOrUndefined(format.type)) {\n style.type = format.type === 'dateonly' ? 'date' : format.type.toLowerCase();\n }\n }\n else {\n style.numberFormat = col.format;\n style.type = col.type === 'dateonly' ? 'date' : col.type;\n }\n }\n if (!isNullOrUndefined(col.textAlign)) {\n style.hAlign = col.textAlign.toLowerCase();\n }\n if (Object.keys(style).length > 0) {\n style.name = gObj.element.id + 'column' + index;\n this.styles.push(style);\n }\n if (!isNullOrUndefined(col.width) && col.width !== 'auto' && !gObj.childGridLevel) {\n this.columns.push({ index: index + gObj.childGridLevel, width: typeof col.width === 'number' ?\n col.width : this.helper.getConvertedWidth(col.width) });\n }\n };\n ExcelExport.prototype.destroy = function () {\n //destroy for exporting\n };\n return ExcelExport;\n}());\nexport { ExcelExport };\n","import { closest, isNullOrUndefined, EventHandler } from '@syncfusion/ej2-base';\nimport { remove } from '@syncfusion/ej2-base';\nimport { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport * as events from '../base/constant';\nimport { Resize } from '../actions/resize';\nimport { Page } from '../actions/page';\nimport { parentsUntil, applyBiggerTheme } from '../base/util';\nimport { Group } from '../actions/group';\nimport { Sort } from '../actions/sort';\nimport { PdfExport } from '../actions/pdf-export';\nimport { ExcelExport } from '../actions/excel-export';\nimport * as literals from '../base/string-literals';\nexport var menuClass = {\n header: '.' + literals.gridHeader,\n content: '.' + literals.gridContent,\n edit: '.e-inline-edit',\n batchEdit: '.e-editedbatchcell',\n editIcon: 'e-edit',\n pager: '.e-gridpager',\n delete: 'e-delete',\n save: 'e-save',\n cancel: 'e-cancel',\n copy: 'e-copy',\n pdf: 'e-pdfexport',\n group: 'e-icon-group',\n ungroup: 'e-icon-ungroup',\n csv: 'e-csvexport',\n excel: 'e-excelexport',\n fPage: 'e-icon-first',\n nPage: 'e-icon-next',\n lPage: 'e-icon-last',\n pPage: 'e-icon-prev',\n ascending: 'e-icon-ascending',\n descending: 'e-icon-descending',\n groupHeader: 'e-groupdroparea',\n touchPop: 'e-gridpopup'\n};\n/**\n * The `ContextMenu` module is used to handle context menu actions.\n */\nvar ContextMenu = /** @class */ (function () {\n function ContextMenu(parent, serviceLocator) {\n this.defaultItems = {};\n this.disableItems = [];\n this.hiddenItems = [];\n this.localeText = this.setLocaleKey();\n this.parent = parent;\n this.gridID = parent.element.id;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n ContextMenu.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.uiUpdate, this.enableAfterRenderMenu, this);\n this.parent.on(events.initialLoad, this.render, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ContextMenu.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialLoad, this.render);\n this.parent.off(events.uiUpdate, this.enableAfterRenderMenu);\n this.parent.off(events.destroy, this.destroy);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler.bind(this));\n };\n ContextMenu.prototype.keyDownHandler = function (e) {\n if (e.code === 'Tab' || e.which === 9) {\n this.contextMenu.close();\n }\n if (e.code === 'Escape') {\n this.contextMenu.close();\n this.parent.notify(events.restoreFocus, {});\n }\n };\n ContextMenu.prototype.render = function () {\n this.parent.element.classList.add('e-noselect');\n this.l10n = this.serviceLocator.getService('localization');\n this.element = this.parent.createElement('ul', { id: this.gridID + '_cmenu' });\n EventHandler.add(this.element, 'keydown', this.keyDownHandler.bind(this));\n this.parent.element.appendChild(this.element);\n var target = '#' + this.gridID;\n this.contextMenu = new Menu({\n items: this.getMenuItems(),\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n locale: this.parent.locale,\n target: target,\n select: this.contextMenuItemClick.bind(this),\n beforeOpen: this.contextMenuBeforeOpen.bind(this),\n onOpen: this.contextMenuOpen.bind(this),\n onClose: this.contextMenuOnClose.bind(this),\n cssClass: this.parent.cssClass ? 'e-grid-menu' + ' ' + this.parent.cssClass : 'e-grid-menu'\n });\n this.contextMenu.appendTo(this.element);\n };\n ContextMenu.prototype.enableAfterRenderMenu = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n if (this.contextMenu) {\n this.contextMenu.destroy();\n remove(this.element);\n this.parent.element.classList.remove('e-noselect');\n }\n this.render();\n }\n };\n ContextMenu.prototype.getMenuItems = function () {\n var menuItems = [];\n var exportItems = [];\n for (var _i = 0, _a = this.parent.contextMenuItems; _i < _a.length; _i++) {\n var item = _a[_i];\n if (typeof item === 'string' && this.getDefaultItems().indexOf(item) !== -1) {\n if (item.toLocaleLowerCase().indexOf('export') !== -1) {\n exportItems.push(this.buildDefaultItems(item));\n }\n else {\n menuItems.push(this.buildDefaultItems(item));\n }\n }\n else if (typeof item !== 'string') {\n menuItems.push(item);\n }\n }\n if (exportItems.length > 0) {\n var exportGroup = this.buildDefaultItems('export');\n exportGroup.items = exportItems;\n menuItems.push(exportGroup);\n }\n return menuItems;\n };\n ContextMenu.prototype.getLastPage = function () {\n var totalpage = Math.floor(this.parent.pageSettings.totalRecordsCount / this.parent.pageSettings.pageSize);\n if (this.parent.pageSettings.totalRecordsCount % this.parent.pageSettings.pageSize) {\n totalpage += 1;\n }\n return totalpage;\n };\n ContextMenu.prototype.contextMenuOpen = function () {\n this.isOpen = true;\n };\n /**\n * @param {ContextMenuClickEventArgs} args - specifies the ContextMenuClickEventArgs argument type\n * @returns {void}\n * @hidden\n */\n ContextMenu.prototype.contextMenuItemClick = function (args) {\n var item = this.getKeyFromId(args.item.id);\n switch (item) {\n case 'AutoFitAll':\n this.parent.autoFitColumns([]);\n break;\n case 'AutoFit':\n this.parent.autoFitColumns(this.targetColumn.field);\n break;\n case 'Group':\n this.parent.groupColumn(this.targetColumn.field);\n break;\n case 'Ungroup':\n this.parent.ungroupColumn(this.targetColumn.field);\n break;\n case 'Edit':\n if (this.parent.editModule) {\n if (this.parent.editSettings.mode === 'Batch') {\n if (this.row && this.cell && !isNaN(parseInt(this.cell.getAttribute(literals.dataColIndex), 10))) {\n this.parent.editModule.editCell(parseInt(this.row.getAttribute(literals.dataRowIndex), 10), \n // eslint-disable-next-line\n this.parent.getColumns()[parseInt(this.cell.getAttribute(literals.dataColIndex), 10)].field);\n }\n }\n else {\n this.parent.editModule.endEdit();\n this.parent.editModule.startEdit(this.row);\n }\n }\n break;\n case 'Delete':\n if (this.parent.editModule) {\n if (this.parent.editSettings.mode !== 'Batch') {\n this.parent.editModule.endEdit();\n }\n if (this.parent.getSelectedRecords().length === 1) {\n this.parent.editModule.deleteRow(this.row);\n }\n else {\n this.parent.deleteRecord();\n }\n }\n break;\n case 'Save':\n if (this.parent.editModule) {\n this.parent.editModule.endEdit();\n }\n break;\n case 'Cancel':\n if (this.parent.editModule) {\n this.parent.editModule.closeEdit();\n }\n break;\n case 'Copy':\n this.parent.copy();\n break;\n case 'PdfExport':\n this.parent.pdfExport();\n break;\n case 'ExcelExport':\n this.parent.excelExport();\n break;\n case 'CsvExport':\n this.parent.csvExport();\n break;\n case 'SortAscending':\n this.isOpen = false;\n this.parent.sortColumn(this.targetColumn.field, 'Ascending');\n break;\n case 'SortDescending':\n this.isOpen = false;\n this.parent.sortColumn(this.targetColumn.field, 'Descending');\n break;\n case 'FirstPage':\n this.parent.goToPage(1);\n break;\n case 'PrevPage':\n this.parent.goToPage(this.parent.pageSettings.currentPage - 1);\n break;\n case 'LastPage':\n this.parent.goToPage(this.getLastPage());\n break;\n case 'NextPage':\n this.parent.goToPage(this.parent.pageSettings.currentPage + 1);\n break;\n }\n args.column = this.targetColumn;\n args.rowInfo = this.targetRowdata;\n this.parent.trigger(events.contextMenuClick, args);\n };\n ContextMenu.prototype.contextMenuOnClose = function (args) {\n var parent = 'parentObj';\n if (args.items.length > 0 && args.items[0][\"\" + parent] instanceof Menu) {\n this.updateItemStatus();\n }\n this.parent.notify(events.selectRowOnContextOpen, { isOpen: false });\n };\n ContextMenu.prototype.getLocaleText = function (item) {\n return this.l10n.getConstant(this.localeText[\"\" + item]);\n };\n ContextMenu.prototype.updateItemStatus = function () {\n this.contextMenu.showItems(this.hiddenItems);\n this.contextMenu.enableItems(this.disableItems);\n this.hiddenItems = [];\n this.disableItems = [];\n this.isOpen = false;\n };\n ContextMenu.prototype.contextMenuBeforeOpen = function (args) {\n var closestGrid = closest(args.event.target, '.e-grid');\n if (args.event && closestGrid && closestGrid !== this.parent.element) {\n args.cancel = true;\n }\n else if (args.event && (closest(args.event.target, '.' + menuClass.groupHeader)\n || closest(args.event.target, '.' + menuClass.touchPop) ||\n closest(args.event.target, '.e-summarycell') ||\n closest(args.event.target, '.e-groupcaption') ||\n closest(args.event.target, '.e-filterbarcell')) ||\n (this.parent.editSettings.showAddNewRow && closest(args.event.target, '.e-addedrow')\n && this.parent.element.querySelector('.e-editedrow'))) {\n args.cancel = true;\n }\n else {\n this.targetColumn = this.getColumn(args.event);\n if (parentsUntil(args.event.target, 'e-grid')) {\n this.targetRowdata = this.parent.getRowInfo(args.event.target);\n }\n if ((isNullOrUndefined(args.parentItem)) && this.targetColumn) {\n if (this.targetRowdata.cell) {\n this.parent.notify(events.selectRowOnContextOpen, { isOpen: true });\n this.selectRow(args.event, (this.targetRowdata.cell.classList.contains('e-selectionbackground')\n && this.parent.selectionSettings.type === 'Multiple') ? false : true);\n }\n }\n var hideSepItems = [];\n var showSepItems = [];\n for (var _i = 0, _a = args.items; _i < _a.length; _i++) {\n var item = _a[_i];\n var key = this.getKeyFromId(item.id);\n var dItem = this.defaultItems[\"\" + key];\n if (this.getDefaultItems().indexOf(key) !== -1) {\n if (this.ensureDisabledStatus(key)) {\n this.disableItems.push(item.text);\n }\n if (args.event && (this.ensureTarget(args.event.target, menuClass.edit) ||\n this.ensureTarget(args.event.target, menuClass.batchEdit))) {\n if (key !== 'Save' && key !== 'Cancel') {\n this.hiddenItems.push(item.text);\n }\n }\n else if (this.parent.editModule && this.parent.editSettings.mode === 'Batch' &&\n ((closest(args.event.target, '.e-gridform')) ||\n this.parent.editModule.getBatchChanges()[literals.changedRecords].length ||\n this.parent.editModule.getBatchChanges()[literals.addedRecords].length ||\n this.parent.editModule.getBatchChanges()[literals.deletedRecords].length) && (key === 'Save' || key === 'Cancel')) {\n continue;\n }\n else if (isNullOrUndefined(args.parentItem) && args.event\n && !this.ensureTarget(args.event.target, dItem.target)) {\n this.hiddenItems.push(item.text);\n }\n }\n else if (item.target && args.event &&\n !this.ensureTarget(args.event.target, item.target)) {\n if (item.separator) {\n hideSepItems.push(item.id);\n }\n else {\n this.hiddenItems.push(item.text);\n }\n }\n else if (this.ensureTarget(args.event.target, item.target) && item.separator) {\n showSepItems.push(item.id);\n }\n }\n if (showSepItems.length > 0) {\n this.contextMenu.showItems(showSepItems, true);\n }\n this.contextMenu.enableItems(this.disableItems, false);\n this.contextMenu.hideItems(this.hiddenItems);\n if (hideSepItems.length > 0) {\n this.contextMenu.hideItems(hideSepItems, true);\n }\n this.eventArgs = args.event;\n args.column = this.targetColumn;\n args.rowInfo = this.targetRowdata;\n this.parent.trigger(events.contextMenuOpen, args);\n if (args.cancel || (this.hiddenItems.length === args.items.length && !args.parentItem)) {\n this.updateItemStatus();\n args.cancel = true;\n }\n }\n applyBiggerTheme(this.parent.element, this.contextMenu.element.parentElement);\n };\n ContextMenu.prototype.ensureTarget = function (targetElement, selector) {\n var target = targetElement;\n if (this.ensureFrozenHeader(targetElement) && (selector === menuClass.header || selector === menuClass.content)) {\n target = closest(targetElement, selector === menuClass.header ? 'thead' : literals.tbody);\n }\n else if (selector === menuClass.content || selector === menuClass.header) {\n target = parentsUntil(closest(targetElement, '.' + literals.table), selector.substr(1, selector.length));\n }\n else {\n target = closest(targetElement, selector);\n }\n return target && parentsUntil(target, 'e-grid') === this.parent.element;\n };\n ContextMenu.prototype.ensureFrozenHeader = function (targetElement) {\n return (this.parent.frozenRows)\n && closest(targetElement, menuClass.header) ? true : false;\n };\n ContextMenu.prototype.ensureDisabledStatus = function (item) {\n var status = false;\n switch (item) {\n case 'AutoFitAll':\n case 'AutoFit':\n status = !(this.parent.ensureModuleInjected(Resize) && !this.parent.isEdit)\n || (this.targetColumn && !this.targetColumn.field && item === 'AutoFit');\n break;\n case 'Group':\n if (!this.parent.allowGrouping || (this.parent.ensureModuleInjected(Group) && this.targetColumn\n && this.parent.groupSettings.columns.indexOf(this.targetColumn.field) >= 0) ||\n (this.targetColumn && !this.targetColumn.field)) {\n status = true;\n }\n break;\n case 'Ungroup':\n if (!this.parent.allowGrouping || !this.parent.ensureModuleInjected(Group)\n || (this.parent.ensureModuleInjected(Group) && this.targetColumn\n && this.parent.groupSettings.columns.indexOf(this.targetColumn.field) < 0)) {\n status = true;\n }\n break;\n case 'Edit':\n case 'Delete':\n case 'Save':\n case 'Cancel':\n if (!this.parent.editModule || (this.parent.getDataRows().length === 0)) {\n status = true;\n }\n break;\n case 'Copy':\n if ((this.parent.getSelectedRowIndexes().length === 0 && this.parent.getSelectedRowCellIndexes().length === 0) ||\n this.parent.getCurrentViewRecords().length === 0) {\n status = true;\n }\n break;\n case 'export':\n if ((!this.parent.allowExcelExport || !this.parent.excelExport) ||\n !this.parent.ensureModuleInjected(PdfExport) && !this.parent.ensureModuleInjected(ExcelExport)) {\n status = true;\n }\n break;\n case 'PdfExport':\n if (!(this.parent.allowPdfExport) || !this.parent.ensureModuleInjected(PdfExport)) {\n status = true;\n }\n break;\n case 'ExcelExport':\n case 'CsvExport':\n if (!(this.parent.allowExcelExport) || !this.parent.ensureModuleInjected(ExcelExport)) {\n status = true;\n }\n break;\n case 'SortAscending':\n case 'SortDescending':\n if ((!this.parent.allowSorting) || !this.parent.ensureModuleInjected(Sort) ||\n (this.targetColumn && !this.targetColumn.field)) {\n status = true;\n }\n else if (this.parent.ensureModuleInjected(Sort) && this.parent.sortSettings.columns.length > 0 && this.targetColumn) {\n var sortColumns = this.parent.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (sortColumns[parseInt(i.toString(), 10)].field === this.targetColumn.field\n && sortColumns[parseInt(i.toString(), 10)].direction.toLowerCase() === item.toLowerCase().replace('sort', '').toLocaleLowerCase()) {\n status = true;\n }\n }\n }\n break;\n case 'FirstPage':\n case 'PrevPage':\n if (!this.parent.allowPaging || !this.parent.ensureModuleInjected(Page) ||\n this.parent.getCurrentViewRecords().length === 0 ||\n (this.parent.ensureModuleInjected(Page) && this.parent.pageSettings.currentPage === 1)) {\n status = true;\n }\n break;\n case 'LastPage':\n case 'NextPage':\n if (!this.parent.allowPaging || !this.parent.ensureModuleInjected(Page) ||\n this.parent.getCurrentViewRecords().length === 0 ||\n (this.parent.ensureModuleInjected(Page) && this.parent.pageSettings.currentPage === this.getLastPage())) {\n status = true;\n }\n break;\n }\n return status;\n };\n /**\n * Gets the context menu element from the Grid.\n *\n * @returns {Element} returns the element\n */\n ContextMenu.prototype.getContextMenu = function () {\n return this.element;\n };\n /**\n * Destroys the context menu component in the Grid.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n ContextMenu.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.contextMenu.destroy();\n if (this.element.parentNode) {\n remove(this.element);\n }\n this.removeEventListener();\n this.parent.element.classList.remove('e-noselect');\n };\n ContextMenu.prototype.getModuleName = function () {\n return 'contextMenu';\n };\n ContextMenu.prototype.generateID = function (item) {\n return this.gridID + '_cmenu_' + item;\n };\n ContextMenu.prototype.getKeyFromId = function (id) {\n return id.replace(this.gridID + '_cmenu_', '');\n };\n ContextMenu.prototype.buildDefaultItems = function (item) {\n var menuItem;\n switch (item) {\n case 'AutoFitAll':\n case 'AutoFit':\n menuItem = { target: menuClass.header };\n break;\n case 'Group':\n menuItem = { target: menuClass.header, iconCss: menuClass.group };\n break;\n case 'Ungroup':\n menuItem = { target: menuClass.header, iconCss: menuClass.ungroup };\n break;\n case 'Edit':\n menuItem = { target: menuClass.content, iconCss: menuClass.editIcon };\n break;\n case 'Delete':\n menuItem = { target: menuClass.content, iconCss: menuClass.delete };\n break;\n case 'Save':\n menuItem = { target: menuClass.edit, iconCss: menuClass.save };\n break;\n case 'Cancel':\n menuItem = { target: menuClass.edit, iconCss: menuClass.cancel };\n break;\n case 'Copy':\n menuItem = { target: menuClass.content, iconCss: menuClass.copy };\n break;\n case 'export':\n menuItem = { target: menuClass.content };\n break;\n case 'PdfExport':\n menuItem = { target: menuClass.content, iconCss: menuClass.pdf };\n break;\n case 'ExcelExport':\n menuItem = { target: menuClass.content, iconCss: menuClass.excel };\n break;\n case 'CsvExport':\n menuItem = { target: menuClass.content, iconCss: menuClass.csv };\n break;\n case 'SortAscending':\n menuItem = { target: menuClass.header, iconCss: menuClass.ascending };\n break;\n case 'SortDescending':\n menuItem = { target: menuClass.header, iconCss: menuClass.descending };\n break;\n case 'FirstPage':\n menuItem = { target: menuClass.pager, iconCss: menuClass.fPage };\n break;\n case 'PrevPage':\n menuItem = { target: menuClass.pager, iconCss: menuClass.pPage };\n break;\n case 'LastPage':\n menuItem = { target: menuClass.pager, iconCss: menuClass.lPage };\n break;\n case 'NextPage':\n menuItem = { target: menuClass.pager, iconCss: menuClass.nPage };\n break;\n }\n this.defaultItems[\"\" + item] = {\n text: this.getLocaleText(item), id: this.generateID(item),\n target: menuItem.target, iconCss: menuItem.iconCss ? 'e-icons ' + menuItem.iconCss : ''\n };\n return this.defaultItems[\"\" + item];\n };\n ContextMenu.prototype.getDefaultItems = function () {\n return ['AutoFitAll', 'AutoFit',\n 'Group', 'Ungroup', 'Edit', 'Delete', 'Save', 'Cancel', 'Copy', 'export',\n 'PdfExport', 'ExcelExport', 'CsvExport', 'SortAscending', 'SortDescending',\n 'FirstPage', 'PrevPage', 'LastPage', 'NextPage'];\n };\n ContextMenu.prototype.setLocaleKey = function () {\n var localeKeys = {\n 'AutoFitAll': 'autoFitAll',\n 'AutoFit': 'autoFit',\n 'Copy': 'Copy',\n 'Group': 'Group',\n 'Ungroup': 'Ungroup',\n 'Edit': 'EditRecord',\n 'Delete': 'DeleteRecord',\n 'Save': 'Save',\n 'Cancel': 'CancelButton',\n 'PdfExport': 'Pdfexport',\n 'ExcelExport': 'Excelexport',\n 'CsvExport': 'Csvexport',\n 'export': 'Export',\n 'SortAscending': 'SortAscending',\n 'SortDescending': 'SortDescending',\n 'FirstPage': 'FirstPage',\n 'LastPage': 'LastPage',\n 'PrevPage': 'PreviousPage',\n 'NextPage': 'NextPage'\n };\n return localeKeys;\n };\n ContextMenu.prototype.getColumn = function (e) {\n var cell = closest(e.target, 'th.e-headercell');\n if (cell) {\n var uid = cell.querySelector('.e-headercelldiv, .e-stackedheadercelldiv').getAttribute('e-mappinguid');\n return this.parent.getColumnByUid(uid);\n }\n else {\n var ele = (this.parent.getRowInfo(e.target).column);\n return ele || null;\n }\n };\n ContextMenu.prototype.selectRow = function (e, isSelectable) {\n this.cell = e.target;\n this.row = closest(e.target, 'tr.e-row') || this.row;\n if (this.row && isSelectable && !parentsUntil(e.target, 'e-gridpager')) {\n this.parent.selectRow(parseInt(this.row.getAttribute(literals.dataRowIndex), 10));\n }\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\n","import { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { closest as closestElement, removeClass, classList, remove } from '@syncfusion/ej2-base';\nimport { getElementIndex, inArray, parentsUntil, getPosition, isActionPrevent } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n *\n * The `Reorder` module is used for reordering columns.\n */\nvar Reorder = /** @class */ (function () {\n /**\n * Constructor for the Grid reorder module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Reorder(parent) {\n this.idx = 0;\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.headerDrop, this.headerDrop, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.reorderComplete, this.onActionComplete, this);\n this.parent.on(events.columnDrag, this.drag, this);\n this.parent.on(events.columnDragStart, this.dragStart, this);\n this.parent.on(events.columnDragStop, this.dragStop, this);\n this.parent.on(events.headerDrop, this.headerDrop, this);\n this.parent.on(events.headerRefreshed, this.createReorderElement, this);\n this.parent.on(events.keyPressed, this.keyPressHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n Reorder.prototype.chkDropPosition = function (srcElem, destElem) {\n var col = this.parent.getColumnByUid(destElem.firstElementChild.getAttribute('e-mappinguid'));\n var bool = col ? !col.lockColumn : true;\n return ((srcElem.parentElement.isEqualNode(destElem.parentElement) || this.parent.enableColumnVirtualization)\n || (this.parent.isFrozenGrid()\n && Array.prototype.indexOf.call(closestElement(srcElem, 'thead').children, srcElem.parentElement)\n === Array.prototype.indexOf.call(closestElement(destElem, 'thead').children, destElem.parentElement)))\n && this.targetParentContainerIndex(srcElem, destElem) > -1 && bool;\n };\n Reorder.prototype.chkDropAllCols = function (srcElem, destElem) {\n var isFound;\n var headers = this.getHeaderCells();\n var header;\n while (!isFound && headers.length > 0) {\n header = headers.pop();\n isFound = srcElem !== header && this.targetParentContainerIndex(srcElem, destElem) > -1;\n }\n return isFound;\n };\n Reorder.prototype.findColParent = function (col, cols, parent) {\n // eslint-disable-next-line no-self-assign\n parent = parent;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (col === cols[parseInt(i.toString(), 10)]) {\n return true;\n }\n else if (cols[parseInt(i.toString(), 10)].columns) {\n var cnt = parent.length;\n parent.push(cols[parseInt(i.toString(), 10)]);\n if (!this.findColParent(col, cols[parseInt(i.toString(), 10)].columns, parent)) {\n parent.splice(cnt, parent.length - cnt);\n }\n else {\n return true;\n }\n }\n }\n return false;\n };\n Reorder.prototype.getColumnsModel = function (cols, isNotStackedHeader) {\n var columnModel = [];\n var subCols = [];\n for (var i = 0, len = cols.length; i < len; i++) {\n if (!isNullOrUndefined(cols[parseInt(i.toString(), 10)])) {\n if (cols[parseInt(i.toString(), 10)].visible) {\n columnModel.push(cols[parseInt(i.toString(), 10)]);\n }\n else if (isNotStackedHeader) {\n columnModel.push(cols[parseInt(i.toString(), 10)]);\n }\n if (cols[parseInt(i.toString(), 10)].columns) {\n subCols = subCols.concat(cols[parseInt(i.toString(), 10)].columns);\n }\n }\n }\n if (subCols.length) {\n columnModel = columnModel.concat(this.getColumnsModel(subCols));\n }\n return columnModel;\n };\n Reorder.prototype.headerDrop = function (e) {\n var gObj = this.parent;\n var dropElement = this.element.querySelector('.e-headercelldiv') || this.element.querySelector('.e-stackedheadercelldiv');\n var uId = dropElement.getAttribute('e-mappinguid');\n var column = gObj.getColumnByUid(uId);\n if (!closestElement(e.target, 'th') || (!isNullOrUndefined(column) && (!column.allowReordering || column.lockColumn))) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), column: column });\n return;\n }\n var destElem = closestElement(e.target, '.e-headercell');\n var destElemDiv = destElem.querySelector('.e-headercelldiv') || destElem.querySelector('.e-stackedheadercelldiv');\n var destElemUid = destElemDiv.getAttribute('e-mappinguid');\n if (!isNullOrUndefined(destElemUid)) {\n var destColumn = gObj.getColumnByUid(destElemUid);\n if (isNullOrUndefined(destColumn) || !destColumn.allowReordering || destColumn.lockColumn) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), column: column, destColumn: destColumn });\n return;\n }\n }\n if (destElem && !(!this.chkDropPosition(this.element, destElem) || !this.chkDropAllCols(this.element, destElem))) {\n if (this.parent.enableColumnVirtualization) {\n var columns = this.parent.columns;\n var sourceUid_1 = this.element.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n var col = this.parent.columns.filter(function (col) { return col.uid === sourceUid_1; });\n var colMatchIndex_1 = null;\n var column_1 = col[0];\n var destUid_1 = destElem.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n columns.some(function (col, index) {\n if (col.uid === destUid_1) {\n colMatchIndex_1 = index;\n return col.uid === destUid_1;\n }\n return false;\n });\n if (!isNullOrUndefined(colMatchIndex_1)) {\n this.moveColumns(colMatchIndex_1, column_1);\n }\n }\n else {\n var newIndex = this.targetParentContainerIndex(this.element, destElem);\n var uid = this.element.firstElementChild.getAttribute('e-mappinguid');\n this.destElement = destElem;\n this.parent.notify(events.setReorderDestinationElement, { ele: destElem });\n if (uid) {\n this.moveColumns(newIndex, this.parent.getColumnByUid(uid));\n }\n else {\n var headers = this.getHeaderCells();\n var oldIdx = getElementIndex(this.element, headers);\n var columns = this.getColumnsModel(this.parent.columns);\n this.moveColumns(newIndex, columns[parseInt(oldIdx.toString(), 10)]);\n }\n }\n }\n };\n Reorder.prototype.isActionPrevent = function (gObj) {\n return isActionPrevent(gObj);\n };\n Reorder.prototype.moveColumns = function (destIndex, column, reorderByColumn, preventRefresh) {\n var gObj = this.parent;\n if (this.isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.moveColumns, arg1: destIndex, arg2: column });\n return;\n }\n var parent = this.getColParent(column, this.parent.columns);\n var cols = parent ? parent.columns : this.parent.columns;\n var srcIdx = inArray(column, cols);\n if ((parent || this.parent.lockcolPositionCount) && !reorderByColumn &&\n !this.parent.enableColumnVirtualization) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].field === column.field) {\n srcIdx = i;\n break;\n }\n }\n var col = this.parent.getColumnByUid(this.destElement.firstElementChild.getAttribute('e-mappinguid'));\n if (col) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].field === col.field) {\n destIndex = i;\n break;\n }\n }\n }\n else {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].headerText === this.destElement.innerText.trim()) {\n destIndex = i;\n }\n }\n }\n }\n if (!gObj.allowReordering || srcIdx === destIndex || srcIdx === -1 || destIndex === -1) {\n return;\n }\n cols.splice(destIndex, 0, cols.splice(srcIdx, 1)[0]);\n var args = { column: column, destIndex: destIndex, columns: cols, parent: parent, cancel: false };\n gObj.notify(events.refreshFrozenColumns, args);\n if (args.cancel) {\n return;\n }\n if (this.parent.isFrozenGrid()) {\n if (this.parent.frozenColumns) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].freeze === 'Left') {\n cols[parseInt(i.toString(), 10)].freeze = undefined;\n }\n }\n }\n else {\n if (this.parent.getFrozenLeftCount() > destIndex) {\n column.freeze = 'Left';\n }\n else if ((cols.length - this.parent.getFrozenRightColumnsCount()) <= destIndex) {\n column.freeze = 'Right';\n }\n else {\n column.freeze = column.freeze === 'Fixed' ? 'Fixed' : undefined;\n }\n }\n }\n gObj.getColumns(true);\n gObj.notify(events.columnPositionChanged, { fromIndex: destIndex, toIndex: srcIdx });\n if (preventRefresh !== false) {\n gObj.notify(events.modelChanged, {\n type: events.actionBegin, requestType: 'reorder', fromIndex: destIndex, toIndex: srcIdx, toColumnUid: column.uid\n });\n }\n if (this.parent.isFrozenGrid()) {\n var cols_1 = this.parent.columns;\n this.idx = 0;\n this.refreshColumnIndex(cols_1);\n this.parent.notify(events.refreshFrozenPosition, {});\n }\n };\n Reorder.prototype.refreshColumnIndex = function (cols) {\n for (var i = 0; i < cols.length; i++) {\n cols[parseInt(i.toString(), 10)].index = this.idx;\n this.idx++;\n if (cols[parseInt(i.toString(), 10)].columns && cols[parseInt(i.toString(), 10)].columns.length) {\n this.refreshColumnIndex(cols[parseInt(i.toString(), 10)].columns);\n }\n }\n };\n Reorder.prototype.targetParentContainerIndex = function (srcElem, destElem) {\n var cols = this.parent.columns;\n var headers = this.getHeaderCells();\n var stackedHdrColumn = this.parent.getStackedColumns(cols);\n var stackedCols = [];\n if (stackedHdrColumn.length) {\n stackedCols = this.getAllStackedheaderParentColumns(headers);\n }\n var flatColumns = stackedHdrColumn.length && stackedCols.length ?\n this.getColumnsModel(stackedCols) : this.getColumnsModel(cols, true);\n var parent = this.getColParent(flatColumns[getElementIndex(srcElem, headers)], cols);\n cols = parent ? parent.columns : cols;\n return inArray(flatColumns[getElementIndex(destElem, headers)], cols);\n };\n Reorder.prototype.getAllStackedheaderParentColumns = function (headers) {\n var stackedCols = [];\n for (var i = 0; i < headers.length; i++) {\n if (headers[parseInt(i.toString(), 10)].classList.contains('e-hide')) {\n headers.splice(i, 1);\n i--;\n }\n else if (headers[parseInt(i.toString(), 10)].closest('thead').firstChild === headers[parseInt(i.toString(), 10)].parentElement) {\n stackedCols.push(this.parent.getColumnByUid(headers[parseInt(i.toString(), 10)].firstElementChild.getAttribute('e-mappinguid')));\n }\n }\n return stackedCols;\n };\n Reorder.prototype.getHeaderCells = function () {\n return [].slice.call(this.parent.element.getElementsByClassName('e-headercell'));\n };\n Reorder.prototype.getColParent = function (column, columns) {\n var parents = [];\n this.findColParent(column, columns, parents);\n return parents[parents.length - 1];\n };\n Reorder.prototype.reorderSingleColumn = function (fromFName, toFName) {\n var fColumn = this.parent.enableColumnVirtualization ?\n this.parent.columns.filter(function (col) { return col.field === fromFName; })[0]\n : this.parent.getColumnByField(fromFName);\n var toColumn = this.parent.enableColumnVirtualization ?\n this.parent.columns.filter(function (col) { return col.field === toFName; })[0]\n : this.parent.getColumnByField(toFName);\n if ((!isNullOrUndefined(fColumn) && (!fColumn.allowReordering || fColumn.lockColumn)) ||\n (!isNullOrUndefined(toColumn) && (!toColumn.allowReordering || toColumn.lockColumn))) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), column: fColumn, destColumn: toColumn });\n return;\n }\n var column = toColumn;\n var parent = this.getColParent(column, this.parent.columns);\n var columns = parent ? parent.columns : this.parent.columns;\n var destIndex = inArray(column, columns);\n if (destIndex > -1) {\n this.moveColumns(destIndex, fColumn, true);\n }\n };\n Reorder.prototype.reorderMultipleColumns = function (fromFNames, toFName) {\n var toIndex = this.parent.getColumnIndexByField(toFName);\n var toColumn = this.parent.getColumnByField(toFName);\n if (toIndex < 0 || (!isNullOrUndefined(toColumn) && (!toColumn.allowReordering || toColumn.lockColumn))) {\n return;\n }\n for (var i = 0; i < fromFNames.length; i++) {\n var column = this.parent.getColumnByField(fromFNames[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(column) && (!column.allowReordering || column.lockColumn)) {\n return;\n }\n }\n for (var i = 0; i < fromFNames.length; i++) {\n var column = this.parent.getColumnByIndex(toIndex);\n var parent_1 = this.getColParent(column, this.parent.columns);\n var columns = parent_1 ? parent_1.columns : this.parent.columns;\n var destIndex = inArray(column, columns);\n if (destIndex > -1) {\n this.moveColumns(destIndex, this.parent.getColumnByField(fromFNames[parseInt(i.toString(), 10)]), true, true);\n }\n if (this.parent.getColumnIndexByField(fromFNames[i + 1]) >= destIndex) {\n toIndex++; //R to L\n }\n }\n };\n Reorder.prototype.moveTargetColumn = function (column, toIndex) {\n if (toIndex > -1) {\n this.moveColumns(toIndex, column, true);\n }\n };\n Reorder.prototype.reorderSingleColumnByTarget = function (fieldName, toIndex) {\n this.moveTargetColumn(this.parent.getColumnByField(fieldName), toIndex);\n };\n Reorder.prototype.reorderMultipleColumnByTarget = function (fieldName, toIndex) {\n for (var i = 0; i < fieldName.length; i++) {\n this.reorderSingleColumnByTarget(fieldName[parseInt(i.toString(), 10)], toIndex);\n }\n };\n /**\n * Changes the position of the Grid columns by field names.\n *\n * @param {string | string[]} fromFName - Defines the origin field names.\n * @param {string} toFName - Defines the destination field name.\n * @returns {void}\n */\n Reorder.prototype.reorderColumns = function (fromFName, toFName) {\n if (typeof fromFName === 'string') {\n this.reorderSingleColumn(fromFName, toFName);\n this.fromCol = fromFName;\n }\n else {\n this.reorderMultipleColumns(fromFName, toFName);\n this.fromCol = fromFName[0];\n }\n };\n /**\n * Changes the position of the Grid columns by field index.\n *\n * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n * @returns {void}\n */\n Reorder.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n this.moveTargetColumn(this.parent.getColumnByIndex(fromIndex), toIndex);\n };\n /**\n * Changes the position of the Grid columns by field index.\n *\n * @param {string | string[]} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n * @returns {void}\n */\n Reorder.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n if (typeof fieldName === 'string') {\n this.reorderSingleColumnByTarget(fieldName, toIndex);\n }\n else {\n this.reorderMultipleColumnByTarget(fieldName, toIndex);\n }\n };\n Reorder.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.createReorderElement();\n }\n };\n Reorder.prototype.createReorderElement = function (e) {\n if (e && e.args && e.args.isXaxis) {\n this.setDisplay('none');\n }\n var header = this.parent.element.querySelector('.' + literals.headerContent);\n this.upArrow = header.appendChild(this.parent\n .createElement('div', { className: 'e-icons e-icon-reorderuparrow e-reorderuparrow', attrs: { style: 'display:none' } }));\n this.downArrow = header.appendChild(this.parent\n .createElement('div', { className: 'e-icons e-icon-reorderdownarrow e-reorderdownarrow', attrs: { style: 'display:none' } }));\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specified the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Reorder.prototype.onActionComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, { type: events.actionComplete }));\n var target = this.fromCol && this.parent.getColumnHeaderByField(this.fromCol);\n if (target) {\n this.parent.focusModule.onClick({ target: target }, true);\n }\n };\n /**\n * To destroy the reorder\n *\n * @returns {void}\n * @hidden\n */\n Reorder.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (this.parent.isDestroyed || !gridElement || (!gridElement.querySelector('.' + literals.gridHeader) &&\n !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n if (this.upArrow.parentNode) {\n remove(this.upArrow);\n }\n if (this.downArrow.parentNode) {\n remove(this.downArrow);\n }\n this.parent.off(events.headerDrop, this.headerDrop);\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.reorderComplete, this.onActionComplete);\n this.parent.off(events.columnDrag, this.drag);\n this.parent.off(events.columnDragStart, this.dragStart);\n this.parent.off(events.columnDragStop, this.dragStop);\n this.parent.off(events.headerRefreshed, this.createReorderElement);\n this.parent.off(events.keyPressed, this.keyPressHandler);\n this.parent.off(events.destroy, this.destroy);\n //call ejdrag and drop destroy\n };\n Reorder.prototype.keyPressHandler = function (e) {\n var gObj = this.parent;\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (isMacLike && e.metaKey) {\n if (e.action === 'leftArrow') {\n e.action = 'ctrlLeftArrow';\n }\n else if (e.action === 'rightArrow') {\n e.action = 'ctrlRightArrow';\n }\n }\n switch (e.action) {\n case 'ctrlLeftArrow':\n case 'ctrlRightArrow':\n // eslint-disable-next-line no-case-declarations\n var element = gObj.focusModule.currentInfo.element;\n if (element && element.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(element.firstElementChild.getAttribute('e-mappinguid'));\n var visibleCols = gObj.getVisibleColumns();\n var index = visibleCols.indexOf(column);\n var toCol = e.action === 'ctrlLeftArrow' ? visibleCols[index - 1] : visibleCols[index + 1];\n if (toCol && toCol.field && column.field) {\n this.reorderColumns(column.field, toCol.field);\n }\n }\n break;\n }\n };\n Reorder.prototype.drag = function (e) {\n var gObj = this.parent;\n var target = e.target;\n var closest = closestElement(target, '.e-headercell:not(.e-stackedHeaderCell)');\n var cloneElement = gObj.element.querySelector('.e-cloneproperties');\n var content = gObj.getContent().firstElementChild;\n var isLeft = this.x > getPosition(e.event).x + content.scrollLeft;\n removeClass([].slice.call(gObj.getHeaderTable().getElementsByClassName('e-reorderindicate')), ['e-reorderindicate']);\n this.setDisplay('none');\n this.stopTimer();\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n this.updateScrollPostion(e.event);\n if (closest && !closest.isEqualNode(this.element)) {\n target = closest;\n //consider stacked, detail header cell\n var uid = target.querySelector('.e-headercelldiv, .e-stackedheadercelldiv').getAttribute('e-mappinguid');\n if (!(!this.chkDropPosition(this.element, target) || !this.chkDropAllCols(this.element, target)) &&\n gObj.getColumnByUid(uid).allowReordering && e.column.allowReordering) {\n this.updateArrowPosition(target, isLeft);\n classList(target, ['e-allowDrop', 'e-reorderindicate'], []);\n }\n else if (!(gObj.allowGrouping && parentsUntil(e.target, 'e-groupdroparea'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n }\n else {\n if (closest && closest.isEqualNode(this.element) &&\n !((gObj.allowGrouping && e.column.allowGrouping) || e.column.allowReordering)) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n else if (!closest && !(gObj.allowGrouping && parentsUntil(e.target, 'e-groupdroparea'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n }\n if (!e.column.allowReordering || e.column.lockColumn) {\n return;\n }\n gObj.trigger(events.columnDrag, { target: target, draggableType: 'headercell', column: e.column });\n };\n Reorder.prototype.updateScrollPostion = function (e) {\n var _this = this;\n var x = getPosition(e).x;\n var cliRect = this.parent.element.getBoundingClientRect();\n var cliRectBaseRight = cliRect.right;\n var cliRectBaseLeft = cliRect.left;\n var scrollElem = this.parent.getContent().firstElementChild;\n if (x > cliRectBaseLeft && x < cliRectBaseLeft + 35) {\n this.timer = window.setInterval(function () { _this.setScrollLeft(scrollElem, true); }, 50);\n }\n else if (x < cliRectBaseRight && x > cliRectBaseRight - 35) {\n this.timer = window.setInterval(function () { _this.setScrollLeft(scrollElem, false); }, 50);\n }\n };\n Reorder.prototype.setScrollLeft = function (scrollElem, isLeft) {\n var scrollLeft = scrollElem.scrollLeft;\n scrollElem.scrollLeft = scrollElem.scrollLeft + (isLeft ? -5 : 5);\n if (scrollLeft !== scrollElem.scrollLeft) {\n this.setDisplay('none');\n }\n };\n Reorder.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n Reorder.prototype.updateArrowPosition = function (target, isLeft) {\n var cliRect = target.getBoundingClientRect();\n var cliRectBase = this.parent.element.getBoundingClientRect();\n if ((isLeft && cliRect.left < cliRectBase.left) || (!isLeft && cliRect.right > cliRectBase.right)) {\n return;\n }\n var isSticky = this.parent.getHeaderContent().classList.contains('e-sticky');\n this.upArrow.style.top = isSticky ? cliRect.top + cliRect.height + 'px' : cliRect.top + cliRect.height - cliRectBase.top + 'px';\n this.downArrow.style.top = isSticky ? cliRect.top - 7 + 'px' : cliRect.top - cliRectBase.top - 7 + 'px';\n this.upArrow.style.left = this.downArrow.style.left = isSticky ? (isLeft ? cliRect.left : cliRect.right) - 4 + 'px' :\n (isLeft ? cliRect.left : cliRect.right) - cliRectBase.left - 4 + 'px';\n this.setDisplay('');\n };\n Reorder.prototype.dragStart = function (e) {\n var gObj = this.parent;\n var target = e.target;\n this.element = target.classList.contains('e-headercell') ? target :\n parentsUntil(target, 'e-headercell');\n if (!e.column.allowReordering || e.column.lockColumn) {\n return;\n }\n var content = gObj.getContent().firstElementChild;\n this.x = getPosition(e.event).x + content.scrollLeft;\n gObj.trigger(events.columnDragStart, {\n target: target, draggableType: 'headercell', column: e.column\n });\n };\n Reorder.prototype.dragStop = function (e) {\n var gObj = this.parent;\n this.setDisplay('none');\n this.stopTimer();\n if (!e.cancel) {\n gObj.trigger(events.columnDrop, { target: e.target, draggableType: 'headercell', column: e.column });\n }\n removeClass([].slice.call(gObj.getHeaderTable().getElementsByClassName('e-reorderindicate')), ['e-reorderindicate']);\n };\n Reorder.prototype.setDisplay = function (display) {\n this.upArrow.style.display = display;\n this.downArrow.style.display = display;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} return the module name\n * @private\n */\n Reorder.prototype.getModuleName = function () {\n return 'reorder';\n };\n return Reorder;\n}());\nexport { Reorder };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '0px';\n popObj.width = this.getToolbarPopupWidth(this.element);\n }\n popObj.dataBind();\n popObj.refreshPosition();\n popObj.element.style.top = this.getElementOffsetY() + 'px';\n popupNav.classList.add(CLS_TBARNAVACT);\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n };\n Toolbar.prototype.getToolbarPopupWidth = function (ele) {\n var eleStyles = window.getComputedStyle(ele);\n return parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.renderComplete();\n if (this.isReact && this.portals && this.portals.length > 0) {\n this.renderReactTemplates(function () {\n _this.refreshOverflow();\n });\n }\n };\n Toolbar.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n if (Browser.info.name !== 'msie' || this.height !== 'auto' || this.overflowMode === 'MultiRow') {\n setStyle(this.element, { 'height': height });\n }\n setStyle(this.element, { 'width': width });\n var ariaAttr = {\n 'role': 'toolbar', 'aria-disabled': 'false',\n 'aria-orientation': !this.isVertical ? 'horizontal' : 'vertical'\n };\n attributes(this.element, ariaAttr);\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Toolbar.prototype.renderControl = function () {\n var ele = this.element;\n this.trgtEle = (ele.children.length > 0) ? ele.querySelector('div') : null;\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n this.renderItems();\n this.renderLayout();\n };\n Toolbar.prototype.renderLayout = function () {\n this.renderOverflowMode();\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.popObj.element.childElementCount > 1 && this.checkPopupRefresh(this.element, this.popObj.element)) {\n this.popupRefresh(this.popObj.element, false);\n }\n this.separator();\n };\n Toolbar.prototype.itemsAlign = function (items, itemEleDom) {\n var innerItem;\n var innerPos;\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n for (var i = 0; i < items.length; i++) {\n innerItem = this.renderSubComponent(items[parseInt(i.toString(), 10)], i);\n if (this.tbarEle.indexOf(innerItem) === -1) {\n this.tbarEle.push(innerItem);\n }\n if (!this.tbarAlign) {\n this.tbarItemAlign(items[parseInt(i.toString(), 10)], itemEleDom, i);\n }\n innerPos = itemEleDom.querySelector('.e-toolbar-' + items[parseInt(i.toString(), 10)].align.toLowerCase());\n if (innerPos) {\n if (!(items[parseInt(i.toString(), 10)].showAlwaysInPopup && items[parseInt(i.toString(), 10)].overflow !== 'Show')) {\n this.tbarAlgEle[(items[parseInt(i.toString(), 10)].align + 's').toLowerCase()].push(innerItem);\n }\n innerPos.appendChild(innerItem);\n }\n else {\n itemEleDom.appendChild(innerItem);\n }\n }\n if (this.isReact) {\n var portals = 'portals';\n this.notify('render-react-toolbar-template', this[\"\" + portals]);\n this.renderReactTemplates();\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.changeOrientation = function () {\n var ele = this.element;\n if (this.isVertical) {\n ele.classList.remove(CLS_VERTICAL);\n this.isVertical = false;\n if (this.height === 'auto' || this.height === '100%') {\n ele.style.height = this.height;\n }\n ele.setAttribute('aria-orientation', 'horizontal');\n }\n else {\n ele.classList.add(CLS_VERTICAL);\n this.isVertical = true;\n ele.setAttribute('aria-orientation', 'vertical');\n setStyle(this.element, { 'height': formatUnit(this.height), 'width': formatUnit(this.width) });\n }\n this.destroyMode();\n this.refreshOverflow();\n };\n Toolbar.prototype.initScroll = function (element, innerItems) {\n if (!this.scrollModule && this.checkOverflow(element, innerItems[0])) {\n if (this.tbarAlign) {\n this.element.querySelector('.' + CLS_ITEMS + ' .' + CLS_TBARCENTER).removeAttribute('style');\n }\n if (this.isVertical) {\n this.scrollModule = new VScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n else {\n this.scrollModule = new HScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n if (this.cssClass) {\n addClass([innerItems[0]], this.cssClass.split(' '));\n }\n var scrollEle = this.scrollModule.element.querySelector('.' + CLS_HSCROLLBAR + ', .' + 'e-vscroll-bar');\n if (scrollEle) {\n scrollEle.removeAttribute('tabindex');\n }\n this.remove(this.scrollModule.element, CLS_TBARPOS);\n setStyle(this.element, { overflow: 'hidden' });\n }\n };\n Toolbar.prototype.itemWidthCal = function (items) {\n var _this = this;\n var width = 0;\n var style;\n [].slice.call(selectAll('.' + CLS_ITEM, items)).forEach(function (el) {\n if (isVisible(el)) {\n style = window.getComputedStyle(el);\n width += _this.isVertical ? el.offsetHeight : el.offsetWidth;\n width += parseFloat(_this.isVertical ? style.marginTop : style.marginRight);\n width += parseFloat(_this.isVertical ? style.marginBottom : style.marginLeft);\n }\n });\n return width;\n };\n Toolbar.prototype.getScrollCntEle = function (innerItem) {\n var trgClass = (this.isVertical) ? '.e-vscroll-content' : '.e-hscroll-content';\n return innerItem.querySelector(trgClass);\n };\n Toolbar.prototype.checkOverflow = function (element, innerItem) {\n if (isNOU(element) || isNOU(innerItem) || !isVisible(element)) {\n return false;\n }\n var eleWidth = this.isVertical ? element.offsetHeight : element.offsetWidth;\n var itemWidth = this.isVertical ? innerItem.offsetHeight : innerItem.offsetWidth;\n if (this.tbarAlign || this.scrollModule || (eleWidth === itemWidth)) {\n itemWidth = this.itemWidthCal(this.scrollModule ? this.getScrollCntEle(innerItem) : innerItem);\n }\n var popNav = element.querySelector('.' + CLS_TBARNAV);\n var scrollNav = element.querySelector('.' + CLS_TBARSCRLNAV);\n var navEleWidth = 0;\n if (popNav) {\n navEleWidth = this.isVertical ? popNav.offsetHeight : popNav.offsetWidth;\n }\n else if (scrollNav) {\n navEleWidth = this.isVertical ? (scrollNav.offsetHeight * (2)) : (scrollNav.offsetWidth * 2);\n }\n if (itemWidth > eleWidth - navEleWidth) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Refresh the whole Toolbar component without re-rendering.\n * - It is used to manually refresh the Toolbar overflow modes such as scrollable, popup, multi row, and extended.\n * - It will refresh the Toolbar component after loading items dynamically.\n *\n * @returns {void}.\n */\n Toolbar.prototype.refreshOverflow = function () {\n this.resize();\n };\n Toolbar.prototype.toolbarAlign = function (innerItems) {\n if (this.tbarAlign) {\n this.add(innerItems, CLS_TBARPOS);\n this.itemPositioning();\n }\n };\n Toolbar.prototype.renderOverflowMode = function () {\n var ele = this.element;\n var innerItems = ele.querySelector('.' + CLS_ITEMS);\n var priorityCheck = this.popupPriCount > 0;\n if (ele && ele.children.length > 0) {\n this.offsetWid = ele.offsetWidth;\n this.remove(this.element, 'e-toolpop');\n if (Browser.info.name === 'msie' && this.height === 'auto') {\n ele.style.height = '';\n }\n switch (this.overflowMode) {\n case 'Scrollable':\n if (isNOU(this.scrollModule)) {\n this.initScroll(ele, [].slice.call(ele.getElementsByClassName(CLS_ITEMS)));\n }\n break;\n case 'Popup':\n this.add(this.element, 'e-toolpop');\n if (this.tbarAlign) {\n this.removePositioning();\n }\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n break;\n case 'MultiRow':\n this.add(innerItems, CLS_MULTIROW);\n if (this.checkOverflow(ele, innerItems) && this.tbarAlign) {\n this.removePositioning();\n this.add(innerItems, CLS_MULTIROWPOS);\n }\n if (ele.style.overflow === 'hidden') {\n ele.style.overflow = '';\n }\n if (Browser.info.name === 'msie' || ele.style.height !== 'auto') {\n ele.style.height = 'auto';\n }\n break;\n case 'Extended':\n this.add(this.element, CLS_EXTEANDABLE_TOOLBAR);\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n }\n }\n };\n Toolbar.prototype.setOverflowAttributes = function (ele) {\n this.createPopupEle(ele, [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, ele)));\n var ariaAttr = {\n 'tabindex': '0', 'role': 'button', 'aria-haspopup': 'true',\n 'aria-label': 'overflow'\n };\n attributes(this.element.querySelector('.' + CLS_TBARNAV), ariaAttr);\n };\n Toolbar.prototype.separator = function () {\n var element = this.element;\n var eleItem = [].slice.call(element.querySelectorAll('.' + CLS_SEPARATOR));\n var multiVar = element.querySelector('.' + CLS_MULTIROW_SEPARATOR);\n var extendVar = element.querySelector('.' + CLS_EXTENDABLE_SEPARATOR);\n var eleInlineItem = this.overflowMode === 'MultiRow' ? multiVar : extendVar;\n if (eleInlineItem !== null) {\n if (this.overflowMode === 'MultiRow') {\n eleInlineItem.classList.remove(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleInlineItem.classList.remove(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n for (var i = 0; i <= eleItem.length - 1; i++) {\n if (eleItem[parseInt(i.toString(), 10)].offsetLeft < 30 && eleItem[parseInt(i.toString(), 10)].offsetLeft !== 0) {\n if (this.overflowMode === 'MultiRow') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n }\n };\n Toolbar.prototype.createPopupEle = function (ele, innerEle) {\n var innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var vertical = this.isVertical;\n if (!innerNav) {\n this.createPopupIcon(ele);\n }\n innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var innerNavDom = (vertical ? innerNav.offsetHeight : innerNav.offsetWidth);\n var eleWidth = ((vertical ? ele.offsetHeight : ele.offsetWidth) - (innerNavDom));\n this.element.classList.remove('e-rtl');\n setStyle(this.element, { direction: 'initial' });\n this.checkPriority(ele, innerEle, eleWidth, true);\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n this.element.style.removeProperty('direction');\n this.createPopup();\n };\n Toolbar.prototype.pushingPoppedEle = function (tbarObj, popupPri, ele, eleHeight, sepHeight) {\n var element = tbarObj.element;\n var poppedEle = [].slice.call(selectAll('.' + CLS_POPUP, element.querySelector('.' + CLS_ITEMS)));\n var nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n var nodeIndex = 0;\n var nodePri = 0;\n poppedEle.forEach(function (el, index) {\n nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n if (el.classList.contains(CLS_TBAROVERFLOW) && nodes.length > 0) {\n if (tbarObj.tbResize && nodes.length > index) {\n ele.insertBefore(el, nodes[parseInt(index.toString(), 10)]);\n ++nodePri;\n }\n else {\n ele.insertBefore(el, ele.children[nodes.length]);\n ++nodePri;\n }\n }\n else if (el.classList.contains(CLS_TBAROVERFLOW)) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (tbarObj.tbResize && el.classList.contains(CLS_POPOVERFLOW) && ele.children.length > 0 && nodes.length === 0) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (el.classList.contains(CLS_POPOVERFLOW)) {\n popupPri.push(el);\n }\n else if (tbarObj.tbResize) {\n ele.insertBefore(el, ele.childNodes[nodeIndex + nodePri]);\n ++nodeIndex;\n }\n else {\n ele.appendChild(el);\n }\n if (el.classList.contains(CLS_SEPARATOR)) {\n setStyle(el, { display: '', height: sepHeight + 'px' });\n }\n else {\n setStyle(el, { display: '', height: eleHeight + 'px' });\n }\n });\n popupPri.forEach(function (el) {\n ele.appendChild(el);\n });\n var tbarEle = selectAll('.' + CLS_ITEM, element.querySelector('.' + CLS_ITEMS));\n for (var i = tbarEle.length - 1; i >= 0; i--) {\n var tbarElement = tbarEle[parseInt(i.toString(), 10)];\n if (tbarElement.classList.contains(CLS_SEPARATOR) && this.overflowMode !== 'Extended') {\n setStyle(tbarElement, { display: 'none' });\n }\n else {\n break;\n }\n }\n };\n Toolbar.prototype.createPopup = function () {\n var element = this.element;\n var sepHeight;\n var sepItem;\n if (this.overflowMode === 'Extended') {\n sepItem = element.querySelector('.' + CLS_SEPARATOR);\n sepHeight =\n (element.style.height === 'auto' || element.style.height === '') ? null : (sepItem && sepItem.offsetHeight);\n }\n var eleItem = element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_POPUP + ')');\n var eleHeight = (element.style.height === 'auto' || element.style.height === '') ? null : (eleItem && eleItem.offsetHeight);\n var ele;\n var popupPri = [];\n if (select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element)) {\n ele = select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element);\n }\n else {\n var extendEle = this.createElement('div', {\n id: element.id + '_popup', className: CLS_POPUPCLASS + ' ' + CLS_EXTENDABLECLASS\n });\n var popupEle = this.createElement('div', { id: element.id + '_popup', className: CLS_POPUPCLASS });\n ele = this.overflowMode === 'Extended' ? extendEle : popupEle;\n }\n this.pushingPoppedEle(this, popupPri, ele, eleHeight, sepHeight);\n this.popupInit(element, ele);\n };\n Toolbar.prototype.getElementOffsetY = function () {\n return (this.overflowMode === 'Extended' && window.getComputedStyle(this.element).getPropertyValue('box-sizing') === 'border-box' ?\n this.element.clientHeight : this.element.offsetHeight);\n };\n Toolbar.prototype.popupInit = function (element, ele) {\n if (!this.popObj) {\n element.appendChild(ele);\n if (this.cssClass) {\n addClass([ele], this.cssClass.split(' '));\n }\n setStyle(this.element, { overflow: '' });\n var eleStyles = window.getComputedStyle(this.element);\n var popup = new Popup(null, {\n relateTo: this.element,\n offsetY: (this.isVertical) ? 0 : this.getElementOffsetY(),\n enableRtl: this.enableRtl,\n open: this.popupOpen.bind(this),\n close: this.popupClose.bind(this),\n collision: { Y: this.enableCollision ? 'flip' : 'none' },\n position: this.enableRtl ? { X: 'left', Y: 'top' } : { X: 'right', Y: 'top' }\n });\n if (this.overflowMode === 'Extended') {\n popup.width = this.getToolbarPopupWidth(this.element);\n popup.offsetX = 0;\n }\n popup.appendTo(ele);\n EventHandler.add(document, 'scroll', this.docEvent.bind(this));\n EventHandler.add(document, 'click ', this.docEvent.bind(this));\n if (this.overflowMode !== 'Extended') {\n popup.element.style.maxHeight = popup.element.offsetHeight + 'px';\n }\n if (this.isVertical) {\n popup.element.style.visibility = 'hidden';\n }\n if (this.isExtendedOpen) {\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popupNav.firstElementChild, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.element.querySelector('.' + CLS_EXTENDABLECLASS).classList.add(CLS_POPUPOPEN);\n }\n else {\n popup.hide();\n }\n this.popObj = popup;\n }\n else if (this.overflowMode !== 'Extended') {\n var popupEle = this.popObj.element;\n setStyle(popupEle, { maxHeight: '', display: 'block' });\n setStyle(popupEle, { maxHeight: popupEle.offsetHeight + 'px', display: '' });\n }\n };\n Toolbar.prototype.tbarPopupHandler = function (isOpen) {\n if (this.overflowMode === 'Extended') {\n if (isOpen) {\n this.add(this.element, CLS_EXTENDEDPOPOPEN);\n }\n else {\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupOpen = function (e) {\n var popObj = this.popObj;\n if (!this.isVertical) {\n popObj.offsetY = this.getElementOffsetY();\n popObj.dataBind();\n }\n var popupEle = this.popObj.element;\n var toolEle = this.popObj.element.parentElement;\n var popupNav = toolEle.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'true');\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '';\n }\n else {\n setStyle(popObj.element, { height: 'auto', maxHeight: '' });\n popObj.element.style.maxHeight = popObj.element.offsetHeight + 'px';\n }\n var popupElePos = popupEle.offsetTop + popupEle.offsetHeight + calculatePosition(toolEle).top;\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.tbarPopupHandler(true);\n var scrollVal = isNOU(window.scrollY) ? 0 : window.scrollY;\n if (!this.isVertical && ((window.innerHeight + scrollVal) < popupElePos) && (this.element.offsetTop < popupEle.offsetHeight)) {\n var overflowHeight = (popupEle.offsetHeight - ((popupElePos - window.innerHeight - scrollVal) + 5));\n popObj.height = overflowHeight + 'px';\n for (var i = 0; i <= popupEle.childElementCount; i++) {\n var ele = popupEle.children[parseInt(i.toString(), 10)];\n if (ele.offsetTop + ele.offsetHeight > overflowHeight) {\n overflowHeight = ele.offsetTop;\n break;\n }\n }\n if (this.overflowMode !== 'Extended') {\n setStyle(popObj.element, { maxHeight: overflowHeight + 'px' });\n }\n }\n else if (this.isVertical && this.overflowMode !== 'Extended') {\n var tbEleData = this.element.getBoundingClientRect();\n setStyle(popObj.element, { maxHeight: (tbEleData.top + this.element.offsetHeight) + 'px', bottom: 0, visibility: '' });\n }\n if (popObj) {\n var popupOffset = popupEle.getBoundingClientRect();\n if (popupOffset.right > document.documentElement.clientWidth && popupOffset.width > toolEle.getBoundingClientRect().width) {\n popObj.collision = { Y: 'none' };\n popObj.dataBind();\n }\n popObj.refreshPosition();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupClose = function (e) {\n var element = this.element;\n var popupNav = element.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'false');\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.remove(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPDOWN], [CLS_POPUPICON]);\n this.tbarPopupHandler(false);\n };\n Toolbar.prototype.checkPriority = function (ele, inEle, eleWidth, pre) {\n var popPriority = this.popupPriCount > 0;\n var len = inEle.length;\n var eleWid = eleWidth;\n var eleOffset;\n var checkoffset;\n var sepCheck = 0;\n var itemCount = 0;\n var itemPopCount = 0;\n var checkClass = function (ele, val) {\n var rVal = false;\n val.forEach(function (cls) {\n if (ele.classList.contains(cls)) {\n rVal = true;\n }\n });\n return rVal;\n };\n for (var i = len - 1; i >= 0; i--) {\n var mrgn = void 0;\n var compuStyle = window.getComputedStyle(inEle[parseInt(i.toString(), 10)]);\n if (this.isVertical) {\n mrgn = parseFloat((compuStyle).marginTop);\n mrgn += parseFloat((compuStyle).marginBottom);\n }\n else {\n mrgn = parseFloat((compuStyle).marginRight);\n mrgn += parseFloat((compuStyle).marginLeft);\n }\n var fstEleCheck = inEle[parseInt(i.toString(), 10)] === this.tbarEle[0];\n if (fstEleCheck) {\n this.tbarEleMrgn = mrgn;\n }\n eleOffset = this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight : inEle[parseInt(i.toString(), 10)].offsetWidth;\n var eleWid_1 = fstEleCheck ? (eleOffset + mrgn) : eleOffset;\n if (checkClass(inEle[parseInt(i.toString(), 10)], [CLS_POPPRI]) && popPriority) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n if (this.isVertical) {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetTop + inEle[parseInt(i.toString(), 10)].offsetHeight + mrgn) > eleWidth;\n }\n else {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetLeft + inEle[parseInt(i.toString(), 10)].offsetWidth + mrgn) > eleWidth;\n }\n if (checkoffset) {\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_SEPARATOR)) {\n if (this.overflowMode === 'Extended') {\n var sepEle = inEle[parseInt(i.toString(), 10)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n itemPopCount++;\n }\n itemCount++;\n }\n else if (this.overflowMode === 'Popup') {\n if (sepCheck > 0 && itemCount === itemPopCount) {\n var sepEle = inEle[i + itemCount + (sepCheck - 1)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n setStyle(sepEle, { display: 'none' });\n }\n }\n sepCheck++;\n itemCount = 0;\n itemPopCount = 0;\n }\n }\n else {\n itemCount++;\n }\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_TBAROVERFLOW) && pre) {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n else if (!checkClass(inEle[parseInt(i.toString(), 10)], [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n else {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n }\n }\n if (pre) {\n var popedEle = selectAll('.' + CLS_ITEM + ':not(.' + CLS_POPUP + ')', this.element);\n this.checkPriority(ele, popedEle, eleWid, false);\n }\n };\n Toolbar.prototype.createPopupIcon = function (element) {\n var id = element.id.concat('_nav');\n var className = 'e-' + element.id.concat('_nav ' + CLS_POPUPNAV);\n className = this.overflowMode === 'Extended' ? className + ' ' + CLS_EXTENDPOPUP : className;\n var nav = this.createElement('div', { id: id, className: className });\n if (Browser.info.name === 'msie' || Browser.info.name === 'edge') {\n nav.classList.add('e-ie-align');\n }\n var navItem = this.createElement('div', { className: CLS_POPUPDOWN + ' e-icons' });\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n nav.setAttribute('role', 'button');\n element.appendChild(nav);\n };\n Toolbar.prototype.tbarPriRef = function (inEle, indx, sepPri, el, des, elWid, wid, ig, eleStyles) {\n var ignoreCount = ig;\n var popEle = this.popObj.element;\n var query = '.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_TBAROVERFLOW + ')';\n var priEleCnt = selectAll('.' + CLS_POPUP + ':not(.' + CLS_TBAROVERFLOW + ')', popEle).length;\n var checkClass = function (ele, val) {\n return ele.classList.contains(val);\n };\n if (selectAll(query, inEle).length === 0) {\n var eleSep = inEle.children[indx - (indx - sepPri) - 1];\n var ignoreCheck = (!isNOU(eleSep) && checkClass(eleSep, CLS_TBARIGNORE));\n if ((!isNOU(eleSep) && checkClass(eleSep, CLS_SEPARATOR) && !isVisible(eleSep)) || ignoreCheck) {\n eleSep.style.display = 'unset';\n var eleSepWidth = eleSep.offsetWidth + (parseFloat(window.getComputedStyle(eleSep).marginRight) * 2);\n var prevSep = eleSep.previousElementSibling;\n if ((elWid + eleSepWidth) < wid || des) {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n if (!isNOU(prevSep)) {\n prevSep.style.display = '';\n }\n }\n else {\n setStyle(el, eleStyles);\n if (prevSep.classList.contains(CLS_SEPARATOR)) {\n prevSep.style.display = 'none';\n }\n }\n eleSep.style.display = '';\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n }\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - priEleCnt]);\n }\n };\n Toolbar.prototype.popupRefresh = function (popupEle, destroy) {\n var _this = this;\n var ele = this.element;\n var isVer = this.isVertical;\n var innerEle = ele.querySelector('.' + CLS_ITEMS);\n var popNav = ele.querySelector('.' + CLS_TBARNAV);\n if (isNOU(popNav)) {\n return;\n }\n innerEle.removeAttribute('style');\n popupEle.style.display = 'block';\n var dimension;\n if (isVer) {\n dimension = ele.offsetHeight - (popNav.offsetHeight + innerEle.offsetHeight);\n }\n else {\n dimension = ele.offsetWidth - (popNav.offsetWidth + innerEle.offsetWidth);\n }\n var popupEleWidth = 0;\n [].slice.call(popupEle.children).forEach(function (el) {\n popupEleWidth += _this.popupEleWidth(el);\n setStyle(el, { 'position': '' });\n });\n if ((dimension + (isVer ? popNav.offsetHeight : popNav.offsetWidth)) > (popupEleWidth) && this.popupPriCount === 0) {\n destroy = true;\n }\n this.popupEleRefresh(dimension, popupEle, destroy);\n popupEle.style.display = '';\n if (popupEle.children.length === 0 && popNav && this.popObj) {\n detach(popNav);\n popNav = null;\n this.popObj.destroy();\n detach(this.popObj.element);\n this.popObj = null;\n }\n };\n Toolbar.prototype.ignoreEleFetch = function (index, innerEle) {\n var ignoreEle = [].slice.call(innerEle.querySelectorAll('.' + CLS_TBARIGNORE));\n var ignoreInx = [];\n var count = 0;\n if (ignoreEle.length > 0) {\n ignoreEle.forEach(function (ele) {\n ignoreInx.push([].slice.call(innerEle.children).indexOf(ele));\n });\n }\n else {\n return 0;\n }\n ignoreInx.forEach(function (val) {\n if (val <= index) {\n count++;\n }\n });\n return count;\n };\n Toolbar.prototype.checkPopupRefresh = function (root, popEle) {\n popEle.style.display = 'block';\n var elWid = this.popupEleWidth(popEle.firstElementChild);\n popEle.firstElementChild.style.removeProperty('Position');\n var tbarWidth = root.offsetWidth - root.querySelector('.' + CLS_TBARNAV).offsetWidth;\n var tbarItemsWid = root.querySelector('.' + CLS_ITEMS).offsetWidth;\n popEle.style.removeProperty('display');\n if (tbarWidth > (elWid + tbarItemsWid)) {\n return true;\n }\n return false;\n };\n Toolbar.prototype.popupEleWidth = function (el) {\n el.style.position = 'absolute';\n var elWidth = this.isVertical ? el.offsetHeight : el.offsetWidth;\n var btnText = el.querySelector('.' + CLS_TBARBTNTEXT);\n if (el.classList.contains('e-tbtn-align') || el.classList.contains(CLS_TBARTEXT)) {\n var btn = el.children[0];\n if (!isNOU(btnText) && el.classList.contains(CLS_TBARTEXT)) {\n btnText.style.display = 'none';\n }\n else if (!isNOU(btnText) && el.classList.contains(CLS_POPUPTEXT)) {\n btnText.style.display = 'block';\n }\n btn.style.minWidth = '0%';\n elWidth = parseFloat(!this.isVertical ? el.style.minWidth : el.style.minHeight);\n btn.style.minWidth = '';\n btn.style.minHeight = '';\n if (!isNOU(btnText)) {\n btnText.style.display = '';\n }\n }\n return elWidth;\n };\n Toolbar.prototype.popupEleRefresh = function (width, popupEle, destroy) {\n var popPriority = this.popupPriCount > 0;\n var eleSplice = this.tbarEle;\n var priEleCnt;\n var index;\n var innerEle = this.element.querySelector('.' + CLS_ITEMS);\n var ignoreCount = 0;\n var _loop_1 = function (el) {\n if (el.classList.contains(CLS_POPPRI) && popPriority && !destroy) {\n return \"continue\";\n }\n var elWidth = this_1.popupEleWidth(el);\n if (el === this_1.tbarEle[0]) {\n elWidth += this_1.tbarEleMrgn;\n }\n el.style.position = '';\n if (elWidth < width || destroy) {\n var inlineStyles = { minWidth: el.style.minWidth, height: el.style.height, minHeight: el.style.minHeight };\n setStyle(el, { minWidth: '', height: '', minHeight: '' });\n if (!el.classList.contains(CLS_POPOVERFLOW)) {\n el.classList.remove(CLS_POPUP);\n }\n index = this_1.tbarEle.indexOf(el);\n if (this_1.tbarAlign) {\n var pos = this_1.items[parseInt(index.toString(), 10)].align;\n index = this_1.tbarAlgEle[(pos + 's').toLowerCase()].indexOf(el);\n eleSplice = this_1.tbarAlgEle[(pos + 's').toLowerCase()];\n innerEle = this_1.element.querySelector('.' + CLS_ITEMS + ' .' + 'e-toolbar-' + pos.toLowerCase());\n }\n var sepBeforePri_1 = 0;\n if (this_1.overflowMode !== 'Extended') {\n eleSplice.slice(0, index).forEach(function (el) {\n if (el.classList.contains(CLS_TBAROVERFLOW) || el.classList.contains(CLS_SEPARATOR)) {\n if (el.classList.contains(CLS_SEPARATOR)) {\n el.style.display = '';\n width -= el.offsetWidth;\n }\n sepBeforePri_1++;\n }\n });\n }\n ignoreCount = this_1.ignoreEleFetch(index, innerEle);\n if (el.classList.contains(CLS_TBAROVERFLOW)) {\n this_1.tbarPriRef(innerEle, index, sepBeforePri_1, el, destroy, elWidth, width, ignoreCount, inlineStyles);\n width -= el.offsetWidth;\n }\n else if (index === 0) {\n innerEle.insertBefore(el, innerEle.firstChild);\n width -= el.offsetWidth;\n }\n else {\n priEleCnt = selectAll('.' + CLS_TBAROVERFLOW, this_1.popObj.element).length;\n innerEle.insertBefore(el, innerEle.children[(index + ignoreCount) - priEleCnt]);\n width -= el.offsetWidth;\n }\n el.style.height = '';\n }\n else {\n return \"break\";\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = [].slice.call(popupEle.children); _i < _a.length; _i++) {\n var el = _a[_i];\n var state_1 = _loop_1(el);\n if (state_1 === \"break\")\n break;\n }\n var checkOverflow = this.checkOverflow(this.element, this.element.getElementsByClassName(CLS_ITEMS)[0]);\n if (checkOverflow && !destroy) {\n this.renderOverflowMode();\n }\n };\n Toolbar.prototype.removePositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n this.remove(item, CLS_TBARPOS);\n var innerItem = [].slice.call(item.childNodes);\n innerItem[1].removeAttribute('style');\n innerItem[2].removeAttribute('style');\n };\n Toolbar.prototype.refreshPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n this.add(item, CLS_TBARPOS);\n this.itemPositioning();\n };\n Toolbar.prototype.itemPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n var margin;\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n var innerItem;\n if (this.scrollModule) {\n var trgClass = (this.isVertical) ? CLS_VSCROLLCNT : CLS_HSCROLLCNT;\n innerItem = [].slice.call(item.querySelector('.' + trgClass).children);\n }\n else {\n innerItem = [].slice.call(item.childNodes);\n }\n if (this.isVertical) {\n margin = innerItem[0].offsetHeight + innerItem[2].offsetHeight;\n }\n else {\n margin = innerItem[0].offsetWidth + innerItem[2].offsetWidth;\n }\n var tbarWid = this.isVertical ? this.element.offsetHeight : this.element.offsetWidth;\n if (popupNav) {\n tbarWid -= (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth);\n var popWid = (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth) + 'px';\n innerItem[2].removeAttribute('style');\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[2].style.top = popWid;\n }\n else {\n innerItem[2].style.bottom = popWid;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[2].style.left = popWid;\n }\n else {\n innerItem[2].style.right = popWid;\n }\n }\n }\n if (tbarWid <= margin) {\n return;\n }\n var value = (((tbarWid - margin)) - (!this.isVertical ? innerItem[1].offsetWidth : innerItem[1].offsetHeight)) / 2;\n innerItem[1].removeAttribute('style');\n var mrgn = ((!this.isVertical ? innerItem[0].offsetWidth : innerItem[0].offsetHeight) + value) + 'px';\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[1].style.marginBottom = mrgn;\n }\n else {\n innerItem[1].style.marginTop = mrgn;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[1].style.marginRight = mrgn;\n }\n else {\n innerItem[1].style.marginLeft = mrgn;\n }\n }\n };\n Toolbar.prototype.tbarItemAlign = function (item, itemEle, pos) {\n var _this = this;\n if (item.showAlwaysInPopup && item.overflow !== 'Show') {\n return;\n }\n var alignDiv = [];\n alignDiv.push(this.createElement('div', { className: CLS_TBARLEFT }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARCENTER }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARRIGHT }));\n if (pos === 0 && item.align !== 'Left') {\n alignDiv.forEach(function (ele) {\n itemEle.appendChild(ele);\n });\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n else if (item.align !== 'Left') {\n var alignEle = itemEle.childNodes;\n var leftAlign_1 = alignDiv[0];\n [].slice.call(alignEle).forEach(function (el) {\n _this.tbarAlgEle.lefts.push(el);\n leftAlign_1.appendChild(el);\n });\n itemEle.appendChild(leftAlign_1);\n itemEle.appendChild(alignDiv[1]);\n itemEle.appendChild(alignDiv[2]);\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n };\n Toolbar.prototype.ctrlTemplate = function () {\n var _this = this;\n this.ctrlTem = this.trgtEle.cloneNode(true);\n this.add(this.trgtEle, CLS_ITEMS);\n this.tbarEle = [];\n var innerEle = [].slice.call(this.trgtEle.children);\n innerEle.forEach(function (ele) {\n if (ele.tagName === 'DIV') {\n _this.tbarEle.push(ele);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n _this.add(ele, CLS_ITEM);\n }\n });\n };\n Toolbar.prototype.renderItems = function () {\n var ele = this.element;\n var items = this.items;\n if (this.trgtEle != null) {\n this.ctrlTemplate();\n }\n else if (ele && items.length > 0) {\n var itemEleDom = void 0;\n if (ele && ele.children.length > 0) {\n itemEleDom = ele.querySelector('.' + CLS_ITEMS);\n }\n if (!itemEleDom) {\n itemEleDom = this.createElement('div', { className: CLS_ITEMS });\n }\n this.itemsAlign(items, itemEleDom);\n ele.appendChild(itemEleDom);\n }\n };\n Toolbar.prototype.setAttr = function (attr, element) {\n var key = Object.keys(attr);\n var keyVal;\n for (var i = 0; i < key.length; i++) {\n keyVal = key[parseInt(i.toString(), 10)];\n if (keyVal === 'class') {\n this.add(element, attr[\"\" + keyVal]);\n }\n else {\n element.setAttribute(keyVal, attr[\"\" + keyVal]);\n }\n }\n };\n /**\n * Enables or disables the specified Toolbar item.\n *\n * @param {number|HTMLElement|NodeList} items - DOM element or an array of items to be enabled or disabled.\n * @param {boolean} isEnable - Boolean value that determines whether the command should be enabled or disabled.\n * By default, `isEnable` is set to true.\n * @returns {void}.\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n var elements = items;\n var len = elements.length;\n var ele;\n if (isNOU(isEnable)) {\n isEnable = true;\n }\n var enable = function (isEnable, ele) {\n if (isEnable) {\n ele.classList.remove(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n }\n else {\n ele.classList.add(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'true');\n }\n }\n };\n if (!isNOU(len) && len >= 1) {\n for (var a = 0, element = [].slice.call(elements); a < len; a++) {\n var itemElement = element[parseInt(a.toString(), 10)];\n if (typeof (itemElement) === 'number') {\n ele = this.getElementByIndex(itemElement);\n if (isNOU(ele)) {\n return;\n }\n else {\n elements[parseInt(a.toString(), 10)] = ele;\n }\n }\n else {\n ele = itemElement;\n }\n enable(isEnable, ele);\n }\n if (isEnable) {\n removeClass(elements, CLS_DISABLE);\n }\n else {\n addClass(elements, CLS_DISABLE);\n }\n }\n else {\n if (typeof (elements) === 'number') {\n ele = this.getElementByIndex(elements);\n if (isNOU(ele)) {\n return;\n }\n }\n else {\n ele = items;\n }\n enable(isEnable, ele);\n }\n };\n Toolbar.prototype.getElementByIndex = function (index) {\n if (this.tbarEle[parseInt(index.toString(), 10)]) {\n return this.tbarEle[parseInt(index.toString(), 10)];\n }\n return null;\n };\n /**\n * Adds new items to the Toolbar that accepts an array as Toolbar items.\n *\n * @param {ItemModel[]} items - DOM element or an array of items to be added to the Toolbar.\n * @param {number} index - Number value that determines where the command is to be added. By default, index is 0.\n * @returns {void}.\n */\n Toolbar.prototype.addItems = function (items, index) {\n var innerItems;\n this.extendedOpen();\n var itemsDiv = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(itemsDiv)) {\n this.itemsRerender(items);\n return;\n }\n var innerEle;\n var itemAgn = 'Left';\n if (isNOU(index)) {\n index = 0;\n }\n items.forEach(function (e) {\n if (!isNOU(e.align) && e.align !== 'Left' && itemAgn === 'Left') {\n itemAgn = e.align;\n }\n });\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n if (isNOU(item.type)) {\n item.type = 'Button';\n }\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n item.align = itemAgn;\n innerEle = this.renderSubComponent(item, index);\n if (this.tbarEle.length >= index && innerItems.length >= 0) {\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var algIndex = item.align[0] === 'L' ? 0 : item.align[0] === 'C' ? 1 : 2;\n var ele = void 0;\n if (!this.tbarAlign && itemAgn !== 'Left') {\n this.tbarItemAlign(item, itemsDiv, 1);\n this.tbarAlign = true;\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.appendChild(innerEle);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].push(innerEle);\n this.refreshPositioning();\n }\n else if (this.tbarAlign) {\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.insertBefore(innerEle, ele.children[parseInt(index.toString(), 10)]);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].splice(index, 0, innerEle);\n this.refreshPositioning();\n }\n else if (innerItems.length === 0) {\n innerItems = selectAll('.' + CLS_ITEMS, this.element);\n innerItems[0].appendChild(innerEle);\n }\n else {\n innerItems[0].parentNode.insertBefore(innerEle, innerItems[parseInt(index.toString(), 10)]);\n }\n this.items.splice(index, 0, item);\n if (item.template) {\n this.tbarEle.splice(this.tbarEle.length - 1, 1);\n }\n this.tbarEle.splice(index, 0, innerEle);\n index++;\n this.offsetWid = itemsDiv.offsetWidth;\n }\n }\n itemsDiv.style.width = '';\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Removes the items from the Toolbar. Acceptable arguments are index of item/HTMLElement/node list.\n *\n * @param {number|HTMLElement|NodeList|HTMLElement[]} args\n * Index or DOM element or an Array of item which is to be removed from the Toolbar.\n * @returns {void}.\n */\n Toolbar.prototype.removeItems = function (args) {\n var elements = args;\n var index;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (typeof (elements) === 'number') {\n index = parseInt(args.toString(), 10);\n this.removeItemByIndex(index, innerItems);\n }\n else {\n if (elements && elements.length > 1) {\n for (var _i = 0, _a = [].slice.call(elements); _i < _a.length; _i++) {\n var ele = _a[_i];\n index = this.tbarEle.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n }\n }\n else {\n var ele = (elements && elements.length && elements.length === 1) ? elements[0] : args;\n index = innerItems.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n }\n }\n this.resize();\n };\n Toolbar.prototype.removeItemByIndex = function (index, innerItems) {\n if (this.tbarEle[parseInt(index.toString(), 10)] && innerItems[parseInt(index.toString(), 10)]) {\n var eleIdx = this.tbarEle.indexOf(innerItems[parseInt(index.toString(), 10)]);\n if (this.tbarAlign) {\n var indexAgn = this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].indexOf(this.tbarEle[parseInt(eleIdx.toString(), 10)]);\n this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].splice(parseInt(indexAgn.toString(), 10), 1);\n }\n if (this.isReact) {\n this.clearToolbarTemplate(innerItems[parseInt(index.toString(), 10)]);\n }\n var btnItem = innerItems[parseInt(index.toString(), 10)].querySelector('.e-control.e-btn');\n if (!isNOU(btnItem) && !isNOU(btnItem.ej2_instances[0]) && !(btnItem.ej2_instances[0].isDestroyed)) {\n btnItem.ej2_instances[0].destroy();\n }\n detach(innerItems[parseInt(index.toString(), 10)]);\n this.items.splice(eleIdx, 1);\n this.tbarEle.splice(eleIdx, 1);\n }\n };\n Toolbar.prototype.templateRender = function (templateProp, innerEle, item, index) {\n var itemType = item.type;\n var eleObj = templateProp;\n var isComponent;\n if (typeof (templateProp) === 'object') {\n isComponent = typeof (eleObj.appendTo) === 'function';\n }\n if (typeof (templateProp) === 'string' || !isComponent) {\n var templateFn = void 0;\n var val = templateProp;\n var regEx = new RegExp(/<(?=.*? .*?\\/ ?>|br|hr|input|!--|wbr)[a-z]+.*?>|<([a-z]+).*?<\\/\\1>/i);\n val = (typeof (templateProp) === 'string') ? templateProp.trim() : templateProp;\n try {\n if (typeof (templateProp) === 'object' && !isNOU(templateProp.tagName)) {\n innerEle.appendChild(templateProp);\n }\n else if (typeof (templateProp) === 'string' && regEx.test(val)) {\n innerEle.innerHTML = val;\n }\n else if (document.querySelectorAll(val).length) {\n var ele = document.querySelector(val);\n var tempStr = ele.outerHTML.trim();\n innerEle.appendChild(ele);\n ele.style.display = '';\n if (!isNOU(tempStr)) {\n this.tempId.push(val);\n }\n }\n else {\n templateFn = templateCompiler(val);\n }\n }\n catch (e) {\n templateFn = templateCompiler(val);\n }\n var tempArray = void 0;\n if (!isNOU(templateFn)) {\n var toolbarTemplateID = this.element.id + index + '_template';\n tempArray = templateFn({}, this, 'template', toolbarTemplateID, this.isStringTemplate, undefined, undefined, this.root);\n }\n if (!isNOU(tempArray) && tempArray.length > 0) {\n [].slice.call(tempArray).forEach(function (ele) {\n if (!isNOU(ele.tagName)) {\n ele.style.display = '';\n }\n innerEle.appendChild(ele);\n });\n }\n }\n else if (itemType === 'Input') {\n var ele = this.createElement('input');\n if (item.id) {\n ele.id = item.id;\n }\n else {\n ele.id = getUniqueID('tbr-ipt');\n }\n innerEle.appendChild(ele);\n eleObj.appendTo(ele);\n }\n this.add(innerEle, CLS_TEMPLATE);\n var firstChild = innerEle.firstElementChild;\n if (!isNOU(firstChild)) {\n firstChild.setAttribute('tabindex', isNOU(firstChild.getAttribute(\"tabIndex\")) ? '-1' : this.getDataTabindex(firstChild));\n firstChild.setAttribute('data-tabindex', isNOU(firstChild.getAttribute(\"tabIndex\")) ? '-1' : this.getDataTabindex(firstChild));\n }\n this.tbarEle.push(innerEle);\n };\n Toolbar.prototype.buttonRendering = function (item, innerEle) {\n var dom = this.createElement('button', { className: CLS_TBARBTN });\n dom.setAttribute('type', 'button');\n var textStr = item.text;\n var iconCss;\n var iconPos;\n if (item.id) {\n dom.id = item.id;\n }\n else {\n dom.id = getUniqueID('e-tbr-btn');\n }\n var btnTxt = this.createElement('span', { className: 'e-tbar-btn-text' });\n if (textStr) {\n btnTxt.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(textStr) : textStr;\n dom.appendChild(btnTxt);\n dom.classList.add('e-tbtn-txt');\n }\n else {\n this.add(innerEle, 'e-tbtn-align');\n }\n if (item.prefixIcon || item.suffixIcon) {\n if ((item.prefixIcon && item.suffixIcon) || item.prefixIcon) {\n iconCss = item.prefixIcon + ' e-icons';\n iconPos = 'Left';\n }\n else {\n iconCss = item.suffixIcon + ' e-icons';\n iconPos = 'Right';\n }\n }\n var btnObj = new Button({ iconCss: iconCss, iconPosition: iconPos });\n btnObj.createElement = this.createElement;\n btnObj.appendTo(dom);\n if (item.width) {\n setStyle(dom, { 'width': formatUnit(item.width) });\n }\n return dom;\n };\n Toolbar.prototype.renderSubComponent = function (item, index) {\n var dom;\n var innerEle = this.createElement('div', { className: CLS_ITEM });\n var tempDom = this.createElement('div', {\n innerHTML: this.enableHtmlSanitizer && !isNOU(item.tooltipText) ?\n SanitizeHtmlHelper.sanitize(item.tooltipText) : item.tooltipText\n });\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n if (item.htmlAttributes) {\n this.setAttr(item.htmlAttributes, innerEle);\n }\n if (item.tooltipText) {\n innerEle.setAttribute('title', tempDom.textContent);\n }\n if (item.cssClass) {\n innerEle.className = innerEle.className + ' ' + item.cssClass;\n }\n if (item.template) {\n this.templateRender(item.template, innerEle, item, index);\n }\n else {\n switch (item.type) {\n case 'Button':\n dom = this.buttonRendering(item, innerEle);\n dom.setAttribute('tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('data-tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('aria-label', (item.text || item.tooltipText));\n dom.setAttribute('aria-disabled', 'false');\n innerEle.appendChild(dom);\n innerEle.addEventListener('click', this.itemClick.bind(this));\n break;\n case 'Separator':\n this.add(innerEle, CLS_SEPARATOR);\n break;\n }\n }\n if (item.showTextOn) {\n var sTxt = item.showTextOn;\n if (sTxt === 'Toolbar') {\n this.add(innerEle, CLS_POPUPTEXT);\n this.add(innerEle, 'e-tbtn-align');\n }\n else if (sTxt === 'Overflow') {\n this.add(innerEle, CLS_TBARTEXT);\n }\n }\n if (item.overflow) {\n var overflow = item.overflow;\n if (overflow === 'Show') {\n this.add(innerEle, CLS_TBAROVERFLOW);\n }\n else if (overflow === 'Hide') {\n if (!innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPOVERFLOW);\n }\n }\n }\n if (item.overflow !== 'Show' && item.showAlwaysInPopup && !innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPPRI);\n this.popupPriCount++;\n }\n if (item.disabled) {\n this.add(innerEle, CLS_DISABLE);\n }\n if (item.visible === false) {\n this.add(innerEle, CLS_HIDDEN);\n }\n return innerEle;\n };\n Toolbar.prototype.getDataTabindex = function (ele) {\n return isNOU(ele.getAttribute('data-tabindex')) ? '-1' : ele.getAttribute('data-tabindex');\n };\n Toolbar.prototype.itemClick = function (e) {\n this.activeEleSwitch(e.currentTarget);\n };\n Toolbar.prototype.activeEleSwitch = function (ele) {\n this.activeEleRemove(ele.firstElementChild);\n this.activeEle.focus();\n };\n Toolbar.prototype.activeEleRemove = function (curEle) {\n var previousEle = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n if (!isNOU(this.activeEle)) {\n this.activeEle.setAttribute('tabindex', this.getDataTabindex(this.activeEle));\n if (previousEle) {\n previousEle.removeAttribute('tabindex');\n }\n previousEle = this.activeEle;\n }\n this.activeEle = curEle;\n if (this.getDataTabindex(this.activeEle) === '-1') {\n if (isNOU(this.trgtEle) && !curEle.parentElement.classList.contains(CLS_TEMPLATE)) {\n if (!isNOU(this.element.querySelector('.e-hor-nav')) && this.element.querySelector('.e-hor-nav').classList.contains('e-nav-active')) {\n this.updateTabIndex('0');\n this.getDataTabindex(previousEle) === '-1' ? previousEle.setAttribute('tabindex', '0') :\n previousEle.setAttribute('tabindex', this.getDataTabindex(previousEle));\n }\n else {\n this.updateTabIndex('-1');\n }\n curEle.removeAttribute('tabindex');\n }\n else {\n var tabIndex = parseInt(this.getDataTabindex(this.activeEle)) + 1;\n this.activeEle.setAttribute('tabindex', tabIndex.toString());\n }\n }\n };\n Toolbar.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - Returns the module name as string.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.itemsRerender = function (newProp) {\n this.items = this.tbarItemsCol;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n this.destroyMode();\n this.destroyItems();\n this.items = newProp;\n this.tbarItemsCol = this.items;\n this.renderItems();\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Toolbar.prototype.resize = function () {\n var ele = this.element;\n this.tbResize = true;\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.overflowMode === 'Popup') {\n this.popObj.hide();\n }\n var checkOverflow = this.checkOverflow(ele, ele.getElementsByClassName(CLS_ITEMS)[0]);\n if (!checkOverflow) {\n this.destroyScroll();\n var multirowele = ele.querySelector('.' + CLS_ITEMS);\n if (!isNOU(multirowele)) {\n this.remove(multirowele, CLS_MULTIROWPOS);\n if (this.tbarAlign) {\n this.add(multirowele, CLS_TBARPOS);\n }\n }\n }\n if (checkOverflow && this.scrollModule && (this.offsetWid === ele.offsetWidth)) {\n return;\n }\n if (this.offsetWid > ele.offsetWidth || checkOverflow) {\n this.renderOverflowMode();\n }\n if (this.popObj) {\n if (this.overflowMode === 'Extended') {\n this.popObj.width = this.getToolbarPopupWidth(this.element);\n }\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.popupRefresh(this.popObj.element, false);\n if (this.tbarAlign) {\n this.refreshPositioning();\n }\n }\n if (this.element.querySelector('.' + CLS_HSCROLLBAR)) {\n this.scrollStep = this.element.querySelector('.' + CLS_HSCROLLBAR).offsetWidth;\n }\n this.offsetWid = ele.offsetWidth;\n this.tbResize = false;\n this.separator();\n };\n Toolbar.prototype.orientationChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.resize();\n }, 500);\n };\n Toolbar.prototype.extendedOpen = function () {\n var sib = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && sib) {\n this.isExtendedOpen = sib.classList.contains(CLS_POPUPOPEN);\n }\n };\n Toolbar.prototype.updateHideEleTabIndex = function (ele, isHidden, isElement, eleIndex, innerItems) {\n if (isElement) {\n eleIndex = innerItems.indexOf(ele);\n }\n var nextEle = innerItems[++eleIndex];\n while (nextEle) {\n var skipEle = this.eleContains(nextEle);\n if (!skipEle) {\n var dataTabIndex = nextEle.firstElementChild.getAttribute('data-tabindex');\n if (isHidden && dataTabIndex === '-1') {\n nextEle.firstElementChild.setAttribute('tabindex', '0');\n }\n else if (dataTabIndex !== nextEle.firstElementChild.getAttribute('tabindex')) {\n nextEle.firstElementChild.setAttribute('tabindex', dataTabIndex);\n }\n break;\n }\n nextEle = innerItems[++eleIndex];\n }\n };\n Toolbar.prototype.clearToolbarTemplate = function (templateEle) {\n if (this.registeredTemplate && this.registeredTemplate[\"\" + 'template']) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[\"\" + 'template'].length; index++) {\n var registeredItem = registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], [registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)]]);\n break;\n }\n }\n }\n else if (this.portals && this.portals.length > 0) {\n var portals = this.portals;\n for (var index = 0; index < portals.length; index++) {\n var portalItem = portals[parseInt(index.toString(), 10)];\n var closestItem = closest(portalItem.containerInfo, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], index);\n break;\n }\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {ToolbarModel} newProp - It contains new value of the data.\n * @param {ToolbarModel} oldProp - It contains old value of the data.\n * @returns {void}\n * @private\n */\n Toolbar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var tEle = this.element;\n var wid = tEle.offsetWidth;\n this.extendedOpen();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProb = Object.keys(newProp.items);\n for (var i = 0; i < changedProb.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[parseInt(i.toString(), 10)], 10);\n var property = Object.keys(newProp.items[parseInt(index.toString(), 10)])[0];\n var newProperty = Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property];\n if (this.tbarAlign || property === 'align') {\n this.refresh();\n this.trigger('created');\n break;\n }\n var popupPriCheck = property === 'showAlwaysInPopup' && !newProperty;\n var booleanCheck = property === 'overflow' && this.popupPriCount !== 0;\n if ((popupPriCheck) || (this.items[parseInt(index.toString(), 10)].showAlwaysInPopup) && booleanCheck) {\n --this.popupPriCount;\n }\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var itemCol = [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, tEle));\n if (this.isReact && this.items[parseInt(index.toString(), 10)].template) {\n this.clearToolbarTemplate(itemCol[parseInt(index.toString(), 10)]);\n }\n detach(itemCol[parseInt(index.toString(), 10)]);\n this.tbarEle.splice(index, 1);\n this.addItems([this.items[parseInt(index.toString(), 10)]], index);\n this.items.splice(index, 1);\n if (this.items[parseInt(index.toString(), 10)].template) {\n this.tbarEle.splice(this.items.length, 1);\n }\n }\n }\n else {\n this.itemsRerender(newProp.items);\n }\n break;\n case 'width':\n setStyle(tEle, { 'width': formatUnit(newProp.width) });\n this.refreshOverflow();\n break;\n case 'height':\n setStyle(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'overflowMode':\n this.destroyMode();\n this.renderOverflowMode();\n if (this.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n this.refreshOverflow();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n else {\n this.remove(tEle, CLS_RTL);\n }\n if (!isNOU(this.scrollModule)) {\n if (newProp.enableRtl) {\n this.add(this.scrollModule.element, CLS_RTL);\n }\n else {\n this.remove(this.scrollModule.element, CLS_RTL);\n }\n }\n if (!isNOU(this.popObj)) {\n if (newProp.enableRtl) {\n this.add(this.popObj.element, CLS_RTL);\n }\n else {\n this.remove(this.popObj.element, CLS_RTL);\n }\n }\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n break;\n case 'scrollStep':\n if (this.scrollModule) {\n this.scrollModule.scrollStep = this.scrollStep;\n }\n break;\n case 'enableCollision':\n if (this.popObj) {\n this.popObj.collision = { Y: this.enableCollision ? 'flip' : 'none' };\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.split(' '));\n }\n break;\n case 'allowKeyboard':\n this.unwireKeyboardEvent();\n if (newProp.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n break;\n }\n }\n };\n /**\n * Shows or hides the Toolbar item that is in the specified index.\n *\n * @param {number | HTMLElement} index - Index value of target item or DOM element of items to be hidden or shown.\n * @param {boolean} value - Based on this Boolean value, item will be hide (true) or show (false). By default, value is false.\n * @returns {void}.\n */\n Toolbar.prototype.hideItem = function (index, value) {\n var isElement = (typeof (index) === 'object') ? true : false;\n var eleIndex = index;\n var ele;\n if (!isElement && isNOU(eleIndex)) {\n return;\n }\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n ele = index;\n }\n else if (this.tbarEle[parseInt(eleIndex.toString(), 10)]) {\n var innerItems_1 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n ele = innerItems_1[parseInt(eleIndex.toString(), 10)];\n }\n if (ele) {\n if (value) {\n ele.classList.add(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n if (isNOU(ele.firstElementChild.getAttribute('tabindex')) ||\n ele.firstElementChild.getAttribute('tabindex') !== '-1') {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n }\n else {\n ele.classList.remove(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n this.refreshOverflow();\n }\n };\n __decorate([\n Collection([], Item)\n ], Toolbar.prototype, \"items\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Toolbar.prototype, \"cssClass\", void 0);\n __decorate([\n Property('Scrollable')\n ], Toolbar.prototype, \"overflowMode\", void 0);\n __decorate([\n Property()\n ], Toolbar.prototype, \"scrollStep\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableCollision\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"clicked\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"beforeCreate\", void 0);\n Toolbar = __decorate([\n NotifyPropertyChanges\n ], Toolbar);\n return Toolbar;\n}(Component));\nexport { Toolbar };\n","import { EventHandler, extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { remove, select, removeClass } from '@syncfusion/ej2-base';\nimport { Toolbar as tool } from '@syncfusion/ej2-navigations';\nimport * as events from '../base/constant';\nimport { templateCompiler, appendChildren, parentsUntil, addRemoveEventListener, applyBiggerTheme } from '../base/util';\nimport { ResponsiveToolbarAction } from '../base/enum';\nimport { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { SearchBox } from '../services/focus-strategy';\n/**\n *\n * The `Toolbar` module is used to handle ToolBar actions.\n */\nvar Toolbar = /** @class */ (function () {\n function Toolbar(parent, serviceLocator) {\n this.predefinedItems = {};\n this.isSearched = false;\n this.items = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print', 'Search',\n 'ColumnChooser', 'PdfExport', 'ExcelExport', 'CsvExport', 'WordExport'];\n this.isRightToolbarMenu = false;\n this.parent = parent;\n this.gridID = parent.element.id;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n Toolbar.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n var preItems = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print',\n 'PdfExport', 'ExcelExport', 'WordExport', 'CsvExport'];\n var isAdaptive = this.parent.enableAdaptiveUI;\n var excludingItems = ['Edit', 'Delete', 'Update', 'Cancel'];\n for (var _i = 0, preItems_1 = preItems; _i < preItems_1.length; _i++) {\n var item = preItems_1[_i];\n var itemStr = item.toLowerCase();\n var localeName = itemStr[0].toUpperCase() + itemStr.slice(1);\n this.predefinedItems[\"\" + item] = {\n id: this.gridID + '_' + itemStr, prefixIcon: 'e-' + itemStr,\n text: this.l10n.getConstant(localeName), tooltipText: this.l10n.getConstant(localeName)\n };\n if (isAdaptive) {\n this.predefinedItems[\"\" + item].text = '';\n this.predefinedItems[\"\" + item].visible = excludingItems.indexOf(item) === -1;\n }\n }\n this.predefinedItems.Search = {\n id: this.gridID + '_search',\n tooltipText: this.l10n.getConstant('Search'), align: 'Right', cssClass: 'e-search-wrapper',\n type: 'Input'\n };\n this.isRightToolbarMenu = false;\n if (this.parent.enableAdaptiveUI && this.isResponsiveToolbarMenuItems(true) && ((this.parent.rowRenderingMode === 'Horizontal') ||\n (this.parent.rowRenderingMode === 'Vertical' && !this.parent.allowFiltering && !this.parent.allowSorting))) {\n this.isRightToolbarMenu = true;\n }\n if (isAdaptive && this.isResponsiveToolbarMenuItems(false)) {\n this.predefinedItems.responsiveToolbarItems = {\n id: this.gridID + '_' + 'responsivetoolbaritems', cssClass: 'e-responsive-toolbar-items e-menu-toolbar', suffixIcon: 'e-' + 'responsivetoolbaritems-btn',\n align: this.isRightToolbarMenu ? 'Left' : 'Right'\n };\n }\n else {\n this.predefinedItems.ColumnChooser = {\n id: this.gridID + '_' + 'columnchooser', cssClass: 'e-cc e-ccdiv e-cc-toolbar', suffixIcon: 'e-' + 'columnchooser-btn',\n text: isAdaptive ? '' : this.l10n.getConstant('Columnchooser'),\n tooltipText: this.l10n.getConstant('Columnchooser'), align: 'Right'\n };\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n if (this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') {\n this.predefinedItems.responsiveFilter = {\n id: this.gridID + '_' + 'responsivefilter', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resfilter-icon', tooltipText: this.l10n.getConstant('FilterButton')\n };\n }\n if (this.parent.allowSorting) {\n this.predefinedItems.responsiveSort = {\n id: this.gridID + '_' + 'responsivesort', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'ressort-icon', tooltipText: this.l10n.getConstant('Sort')\n };\n }\n }\n if (this.parent.enableAdaptiveUI && this.parent.toolbar && this.parent.toolbar.indexOf('Search') > -1) {\n this.predefinedItems.responsiveBack = {\n id: this.gridID + '_' + 'responsiveback', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resback-icon', visible: false\n };\n }\n this.createToolbar();\n if (this.parent.enableAdaptiveUI) {\n if (isNullOrUndefined(this.responsiveToolbarMenu)) {\n this.renderResponsiveToolbarpopup();\n }\n if (this.toolbar.element) {\n this.toolbar.refreshOverflow();\n }\n }\n };\n Toolbar.prototype.isResponsiveToolbarMenuItems = function (isRight) {\n var items = isRight ? ['Add', 'Edit', 'Delete', 'Search'] : ['Print', 'ColumnChooser', 'PdfExport', 'ExcelExport', 'CsvExport'];\n var toolbarItems = this.parent.toolbar || [];\n for (var i = 0; i < items.length; i++) {\n if (toolbarItems.indexOf(items[parseInt(i.toString(), 10)]) >= 0) {\n return isRight ? false : true;\n }\n }\n return isRight ? true : false;\n };\n /**\n * Gets the toolbar of the Grid.\n *\n * @returns {Element} returns the element\n * @hidden\n */\n Toolbar.prototype.getToolbar = function () {\n return this.toolbar.element;\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n */\n Toolbar.prototype.destroy = function () {\n if (this.toolbar && !this.toolbar.isDestroyed) {\n if (this.responsiveToolbarMenu) {\n this.responsiveToolbarMenu.destroy();\n }\n if (!this.toolbar.element) {\n this.parent.destroyTemplate(['toolbarTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n this.toolbar.off('render-react-toolbar-template', this.addReactToolbarPortals);\n this.toolbar.destroy();\n }\n this.unWireEvent();\n this.removeEventListener();\n if (this.element.parentNode) {\n remove(this.element);\n }\n }\n };\n Toolbar.prototype.bindSearchEvents = function () {\n this.searchElement = select('#' + this.gridID + '_searchbar', this.element);\n this.wireEvent();\n this.refreshToolbarItems();\n if (this.parent.searchSettings) {\n this.updateSearchBox();\n }\n };\n Toolbar.prototype.toolbarCreated = function (isNormal) {\n if (this.element.querySelector('.e-search-wrapper')) {\n if (!this.parent.enableAdaptiveUI || isNormal) {\n var classList = this.parent.cssClass ? 'e-input-group e-search ' + this.parent.cssClass\n : 'e-input-group e-search';\n this.element.querySelector('.e-search-wrapper').innerHTML = '
    \\\n \\\n \\\n \\\n
    ';\n }\n else {\n this.element.querySelector('.e-search-wrapper').innerHTML = '\\\n \\\n
    ';\n }\n }\n if (this.element.querySelector('.e-responsive-toolbar-items')) {\n this.element.querySelector('.e-responsive-toolbar-items').innerHTML = '\n * ```\n * ```typescript\n * \n * ```\n */\nvar SplitButton = /** @class */ (function (_super) {\n __extends(SplitButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {SplitButtonModel} options - Specifies the splitbutton model\n * @param {string|HTMLButtonElement} element - Specifies the element\n * @hidden\n */\n function SplitButton(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize Angular support.\n *\n * @private\n * @returns {void}\n */\n SplitButton.prototype.preRender = function () {\n var ele = this.element;\n if (ele.tagName === TAGNAME) {\n var ejInstance = getValue('ej2_instances', ele);\n var btn = this.createElement('button', { attrs: { 'type': 'button' } });\n var wrapper = this.createElement(TAGNAME, { className: 'e-' + this.getModuleName() + '-wrapper' });\n for (var idx = 0, len = ele.attributes.length; idx < len; idx++) {\n btn.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = btn;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.wrapper = wrapper;\n this.element = ele;\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Initialize the Component rendering.\n *\n * @returns {void}\n * @private\n */\n SplitButton.prototype.render = function () {\n this.initWrapper();\n this.createPrimaryButton();\n this.renderControl();\n };\n SplitButton.prototype.renderControl = function () {\n this.createSecondaryButton();\n this.setActiveElem([this.element, this.secondaryBtnObj.element]);\n this.setAria();\n this.wireEvents();\n this.renderComplete();\n };\n /**\n * Adds a new item to the menu. By default, new item appends to the list as the last item,\n * but you can insert based on the text parameter.\n *\n * @param { ItemModel[] } items - Specifies an array of JSON data.\n * @param { string } text - Specifies the text to insert the newly added item in the menu.\n * @returns {void}.\n */\n SplitButton.prototype.addItems = function (items, text) {\n _super.prototype.addItems.call(this, items, text);\n this.secondaryBtnObj.items = this.items;\n };\n /**\n * Removes the items from the menu.\n *\n * @param { string[] } items - Specifies an array of string to remove the items.\n * @param { string } isUniqueId - Set `true` if specified items is a collection of unique id.\n * @returns {void}.\n */\n SplitButton.prototype.removeItems = function (items, isUniqueId) {\n _super.prototype.removeItems.call(this, items, isUniqueId);\n this.secondaryBtnObj.items = this.items;\n };\n SplitButton.prototype.initWrapper = function () {\n if (!this.wrapper) {\n this.wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n this.element.parentNode.insertBefore(this.wrapper, this.element);\n }\n this.element.classList.remove('e-' + this.getModuleName());\n if (this.enableRtl) {\n this.wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([this.wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n };\n SplitButton.prototype.createPrimaryButton = function () {\n var btnModel = {\n cssClass: this.cssClass,\n enableRtl: this.enableRtl,\n iconCss: this.iconCss,\n iconPosition: this.iconPosition,\n content: this.content,\n disabled: this.disabled\n };\n this.primaryBtnObj = new Button(btnModel);\n this.primaryBtnObj.createElement = this.createElement;\n this.primaryBtnObj.appendTo(this.element);\n this.element.classList.add('e-' + this.getModuleName());\n this.element.type = 'button';\n this.wrapper.appendChild(this.element);\n };\n SplitButton.prototype.createSecondaryButton = function () {\n var _this = this;\n var btnElem = this.createElement('button', {\n className: 'e-icon-btn',\n attrs: { 'tabindex': '-1' },\n id: this.element.id + '_dropdownbtn'\n });\n this.wrapper.appendChild(btnElem);\n var dropDownBtnModel = {\n cssClass: this.cssClass,\n disabled: this.disabled,\n enableRtl: this.enableRtl,\n items: this.items,\n target: this.target,\n createPopupOnClick: this.createPopupOnClick\n };\n dropDownBtnModel.beforeItemRender = function (args) {\n if (_this.createPopupOnClick) {\n _this.secondaryBtnObj.dropDown.relateTo = _this.wrapper;\n _this.dropDown = _this.secondaryBtnObj.dropDown;\n }\n _this.trigger('beforeItemRender', args);\n };\n dropDownBtnModel.open = function (args) {\n _this.trigger('open', args);\n };\n dropDownBtnModel.close = function (args) {\n _this.trigger('close', args);\n };\n dropDownBtnModel.select = function (args) {\n _this.trigger('select', args);\n };\n dropDownBtnModel.beforeOpen = function (args) {\n if (_this.createPopupOnClick && _this.items.length == 0) {\n _this.secondaryBtnObj.dropDown.relateTo = _this.wrapper;\n _this.dropDown = _this.secondaryBtnObj.dropDown;\n }\n var callBackPromise = new Deferred();\n _this.trigger('beforeOpen', args, function (observedArgs) {\n callBackPromise.resolve(observedArgs);\n });\n return callBackPromise;\n };\n dropDownBtnModel.beforeClose = function (args) {\n var callBackPromise = new Deferred();\n _this.trigger('beforeClose', args, function (observedArgs) {\n callBackPromise.resolve(observedArgs);\n });\n return callBackPromise;\n };\n this.secondaryBtnObj = new DropDownButton(dropDownBtnModel);\n this.secondaryBtnObj.createElement = this.createElement;\n this.secondaryBtnObj.appendTo(btnElem);\n if (!this.createPopupOnClick) {\n this.secondaryBtnObj.dropDown.relateTo = this.wrapper;\n this.dropDown = this.secondaryBtnObj.dropDown;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.isPopupCreated = this.secondaryBtnObj.isPopupCreated;\n this.secondaryBtnObj.activeElem = [this.element, this.secondaryBtnObj.element];\n this.secondaryBtnObj.element.querySelector('.e-btn-icon').classList.remove('e-icon-right');\n if (this.disabled) {\n this.wrapper.classList.add('e-splitbtn-disabled');\n }\n };\n SplitButton.prototype.setAria = function () {\n attributes(this.element, {\n 'aria-expanded': 'false', 'aria-haspopup': 'true',\n 'aria-label': this.element.textContent ? this.element.textContent + ' splitbutton' : 'splitbutton', 'aria-owns': this.element.id + '_dropdownbtn-popup'\n });\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n SplitButton.prototype.getModuleName = function () {\n return 'split-btn';\n };\n /**\n * To open/close SplitButton popup based on current state of the SplitButton.\n *\n * @returns {void}\n */\n SplitButton.prototype.toggle = function () {\n this.secondaryBtnObj.toggle();\n };\n SplitButton.prototype.destroy = function () {\n var _this = this;\n var classList = [RTL];\n if (this.cssClass) {\n classList = classList.concat(this.cssClass.split(' '));\n }\n if (this.element) {\n var element = document.getElementById(this.element.id);\n if (element && element.parentElement === this.wrapper) {\n if (this.wrapper.tagName === TAGNAME) {\n this.wrapper.innerHTML = '';\n removeClass([this.wrapper], ['e-rtl', 'e-' + this.getModuleName() + '-wrapper']);\n removeClass([this.wrapper], this.cssClass.split(' '));\n }\n else {\n removeClass([this.element], classList);\n ['aria-label', 'aria-haspopup', 'aria-expanded', 'aria-owns', 'type'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n this.wrapper.parentNode.insertBefore(this.element, this.wrapper);\n remove(this.wrapper);\n }\n this.unWireEvents();\n }\n }\n this.primaryBtnObj.destroy();\n this.secondaryBtnObj.destroy();\n _super.prototype.destroy.call(this);\n if (this.element && !this.element.getAttribute('class')) {\n this.element.removeAttribute('class');\n }\n if (this.refreshing && this.isAngular) {\n this.element = this.wrapper;\n ['e-control', 'e-split-btn', 'e-lib'].forEach(function (key) {\n _this.element.classList.add(key);\n });\n setValue('ej2_instances', [this], this.element);\n }\n this.wrapper = null;\n };\n SplitButton.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.primaryBtnClickHandler, this);\n new KeyboardEvents(this.element, {\n keyAction: this.btnKeyBoardHandler.bind(this),\n keyConfigs: {\n altdownarrow: 'alt+downarrow',\n enter: 'enter'\n }\n });\n };\n SplitButton.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'click', this.primaryBtnClickHandler);\n getInstance(this.element, KeyboardEvents).destroy();\n };\n SplitButton.prototype.primaryBtnClickHandler = function () {\n this.trigger('click', { element: this.element });\n };\n SplitButton.prototype.btnKeyBoardHandler = function (e) {\n switch (e.action) {\n case 'altdownarrow':\n this.clickHandler(e);\n break;\n case 'enter':\n this.clickHandler(e);\n if (this.getPopUpElement() && !this.getPopUpElement().classList.contains('e-popup-close')) {\n this.element.classList.remove('e-active');\n this.secondaryBtnObj.element.classList.add('e-active');\n }\n else {\n this.secondaryBtnObj.element.classList.remove('e-active');\n }\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {SplitButtonModel} newProp - Specifies new properties\n * @param {SplitButtonModel} oldProp - Specifies old properties\n * @returns {void}\n */\n SplitButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var model = ['content', 'iconCss', 'iconPosition', 'cssClass', 'disabled', 'enableRtl'];\n this.primaryBtnObj.setProperties(getModel(newProp, model));\n model = ['beforeOpen', 'beforeItemRender', 'select', 'open',\n 'close', 'cssClass', 'disabled', 'enableRtl', 'createPopupOnClick'];\n if (Object.keys(newProp).indexOf('items') > -1) {\n this.secondaryBtnObj.items = newProp.items;\n this.secondaryBtnObj.dataBind();\n }\n this.secondaryBtnObj.setProperties(getModel(newProp, model));\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.wrapper], oldProp.cssClass.split(' '));\n }\n addClass([this.wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n addClass([this.wrapper], RTL);\n }\n else {\n removeClass([this.wrapper], RTL);\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n addClass([this.wrapper], 'e-splitbtn-disabled');\n }\n else {\n removeClass([this.wrapper], 'e-splitbtn-disabled');\n }\n }\n }\n };\n /**\n * Sets the focus to SplitButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n SplitButton.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('')\n ], SplitButton.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], SplitButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], SplitButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], SplitButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property('Left')\n ], SplitButton.prototype, \"iconPosition\", void 0);\n __decorate([\n Property(false)\n ], SplitButton.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Collection([], Item)\n ], SplitButton.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], SplitButton.prototype, \"target\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"created\", void 0);\n SplitButton = __decorate([\n NotifyPropertyChanges\n ], SplitButton);\n return SplitButton;\n}(DropDownButton));\nexport { SplitButton };\n/**\n * Deferred is used to handle asynchronous operation.\n */\nvar Deferred = /** @class */ (function () {\n function Deferred() {\n var _this = this;\n /**\n * Promise is an object that represents a value that may not be available yet, but will be resolved at some point in the future.\n */\n this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n /**\n * Defines the callback function triggers when the Deferred object is rejected.\n */\n this.catch = this.promise.catch.bind(this.promise);\n /**\n * Defines the callback function triggers when the Deferred object is resolved.\n */\n this.then = this.promise.then.bind(this.promise);\n }\n return Deferred;\n}());\nexport { Deferred };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, Property, Event, Complex, Collection } from '@syncfusion/ej2-base';\nimport { L10n, Internationalization } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, setStyleAttribute, detach, closest } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, Browser, SanitizeHtmlHelper, initializeCSPTemplate } from '@syncfusion/ej2-base';\nimport { Tooltip, getZindexPartial } from '@syncfusion/ej2-popups';\n/**\n * Configures the ticks data of the Slider.\n */\nvar TicksData = /** @class */ (function (_super) {\n __extends(TicksData, _super);\n function TicksData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('None')\n ], TicksData.prototype, \"placement\", void 0);\n __decorate([\n Property(10)\n ], TicksData.prototype, \"largeStep\", void 0);\n __decorate([\n Property(1)\n ], TicksData.prototype, \"smallStep\", void 0);\n __decorate([\n Property(false)\n ], TicksData.prototype, \"showSmallTicks\", void 0);\n __decorate([\n Property(null)\n ], TicksData.prototype, \"format\", void 0);\n return TicksData;\n}(ChildProperty));\nexport { TicksData };\n/**\n * It illustrates the color track data in slider.\n * {% codeBlock src='slider/colorrange/index.md' %}{% endcodeBlock %}\n */\nvar ColorRangeData = /** @class */ (function (_super) {\n __extends(ColorRangeData, _super);\n function ColorRangeData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ColorRangeData.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], ColorRangeData.prototype, \"start\", void 0);\n __decorate([\n Property(null)\n ], ColorRangeData.prototype, \"end\", void 0);\n return ColorRangeData;\n}(ChildProperty));\nexport { ColorRangeData };\n/**\n * It illustrates the limit data in slider.\n * {% codeBlock src='slider/limits/index.md' %}{% endcodeBlock %}\n */\nvar LimitData = /** @class */ (function (_super) {\n __extends(LimitData, _super);\n function LimitData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], LimitData.prototype, \"enabled\", void 0);\n __decorate([\n Property(null)\n ], LimitData.prototype, \"minStart\", void 0);\n __decorate([\n Property(null)\n ], LimitData.prototype, \"minEnd\", void 0);\n __decorate([\n Property(null)\n ], LimitData.prototype, \"maxStart\", void 0);\n __decorate([\n Property(null)\n ], LimitData.prototype, \"maxEnd\", void 0);\n __decorate([\n Property(false)\n ], LimitData.prototype, \"startHandleFixed\", void 0);\n __decorate([\n Property(false)\n ], LimitData.prototype, \"endHandleFixed\", void 0);\n return LimitData;\n}(ChildProperty));\nexport { LimitData };\n/**\n * It illustrates the tooltip data in slider.\n */\nvar TooltipData = /** @class */ (function (_super) {\n __extends(TooltipData, _super);\n function TooltipData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], TooltipData.prototype, \"cssClass\", void 0);\n __decorate([\n Property('Before')\n ], TooltipData.prototype, \"placement\", void 0);\n __decorate([\n Property('Focus')\n ], TooltipData.prototype, \"showOn\", void 0);\n __decorate([\n Property(false)\n ], TooltipData.prototype, \"isVisible\", void 0);\n __decorate([\n Property(null)\n ], TooltipData.prototype, \"format\", void 0);\n return TooltipData;\n}(ChildProperty));\nexport { TooltipData };\nvar bootstrapTooltipOffset = 6;\nvar bootstrap4TooltipOffset = 3;\nvar classNames = {\n root: 'e-slider',\n rtl: 'e-rtl',\n sliderHiddenInput: 'e-slider-input',\n controlWrapper: 'e-control-wrapper',\n sliderHandle: 'e-handle',\n rangeBar: 'e-range',\n sliderButton: 'e-slider-button',\n firstButton: 'e-first-button',\n secondButton: 'e-second-button',\n scale: 'e-scale',\n tick: 'e-tick',\n large: 'e-large',\n tickValue: 'e-tick-value',\n sliderTooltip: 'e-slider-tooltip',\n sliderHover: 'e-slider-hover',\n sliderFirstHandle: 'e-handle-first',\n sliderSecondHandle: 'e-handle-second',\n sliderDisabled: 'e-disabled',\n sliderContainer: 'e-slider-container',\n horizontalTooltipBefore: 'e-slider-horizontal-before',\n horizontalTooltipAfter: 'e-slider-horizontal-after',\n verticalTooltipBefore: 'e-slider-vertical-before',\n verticalTooltipAfter: 'e-slider-vertical-after',\n materialTooltip: 'e-material-tooltip',\n materialTooltipOpen: 'e-material-tooltip-open',\n materialTooltipActive: 'e-tooltip-active',\n materialSlider: 'e-material-slider',\n sliderTrack: 'e-slider-track',\n sliderHorizantalColor: 'e-slider-horizantal-color',\n sliderVerticalColor: 'e-slider-vertical-color',\n sliderHandleFocused: 'e-handle-focused',\n verticalSlider: 'e-vertical',\n horizontalSlider: 'e-horizontal',\n sliderHandleStart: 'e-handle-start',\n sliderTooltipStart: 'e-material-tooltip-start',\n sliderTabHandle: 'e-tab-handle',\n sliderButtonIcon: 'e-button-icon',\n sliderSmallSize: 'e-small-size',\n sliderTickPosition: 'e-tick-pos',\n sliderFirstTick: 'e-first-tick',\n sliderLastTick: 'e-last-tick',\n sliderButtonClass: 'e-slider-btn',\n sliderTooltipWrapper: 'e-tooltip-wrap',\n sliderTabTrack: 'e-tab-track',\n sliderTabRange: 'e-tab-range',\n sliderActiveHandle: 'e-handle-active',\n sliderMaterialHandle: 'e-material-handle',\n sliderMaterialRange: 'e-material-range',\n sliderMaterialDefault: 'e-material-default',\n materialTooltipShow: 'e-material-tooltip-show',\n materialTooltipHide: 'e-material-tooltip-hide',\n readonly: 'e-read-only',\n limits: 'e-limits',\n limitBarDefault: 'e-limit-bar',\n limitBarFirst: 'e-limit-first',\n limitBarSecond: 'e-limit-second',\n dragHorizontal: 'e-drag-horizontal',\n dragVertical: 'e-drag-vertical'\n};\n/**\n * The Slider component allows the user to select a value or range\n * of values in-between a min and max range, by dragging the handle over the slider bar.\n * ```html\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar Slider = /** @class */ (function (_super) {\n __extends(Slider, _super);\n function Slider(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.horDir = 'left';\n _this.verDir = 'bottom';\n _this.transition = {\n handle: 'left .4s cubic-bezier(.25, .8, .25, 1), right .4s cubic-bezier(.25, .8, .25, 1), ' +\n 'top .4s cubic-bezier(.25, .8, .25, 1) , bottom .4s cubic-bezier(.25, .8, .25, 1)',\n rangeBar: 'all .4s cubic-bezier(.25, .8, .25, 1)'\n };\n _this.transitionOnMaterialTooltip = {\n handle: 'left 1ms ease-out, right 1ms ease-out, bottom 1ms ease-out, top 1ms ease-out',\n rangeBar: 'left 1ms ease-out, right 1ms ease-out, bottom 1ms ease-out, width 1ms ease-out, height 1ms ease-out'\n };\n _this.scaleTransform = 'transform .4s cubic-bezier(.25, .8, .25, 1)';\n _this.customAriaText = null;\n _this.drag = true;\n _this.isDragComplete = false;\n _this.initialTooltip = true;\n return _this;\n }\n Slider.prototype.preRender = function () {\n // eslint-disable-next-line\n var localeText = { incrementTitle: 'Increase', decrementTitle: 'Decrease' };\n this.l10n = new L10n('slider', localeText, this.locale);\n this.isElementFocused = false;\n this.tickElementCollection = [];\n this.tooltipFormatInfo = {};\n this.ticksFormatInfo = {};\n this.initCultureInfo();\n this.initCultureFunc();\n this.formChecker();\n };\n Slider.prototype.formChecker = function () {\n var formElement = closest(this.element, 'form');\n if (formElement) {\n this.isForm = true;\n // this condition needs to be checked, if the slider is going to be refreshed by `refresh()`\n // then we need to revert the slider `value` back to `formResetValue` to preserve the initial value\n if (!isNullOrUndefined(this.formResetValue)) {\n this.setProperties({ 'value': this.formResetValue }, true);\n }\n this.formResetValue = this.value;\n if (this.type === 'Range' &&\n (isNullOrUndefined(this.formResetValue) || typeof (this.formResetValue) !== 'object')) {\n this.formResetValue = [parseFloat(formatUnit(this.min)), parseFloat(formatUnit(this.max))];\n }\n else if (isNullOrUndefined(this.formResetValue)) {\n this.formResetValue = parseFloat(formatUnit(this.min));\n }\n this.formElement = formElement;\n }\n else {\n this.isForm = false;\n }\n };\n Slider.prototype.initCultureFunc = function () {\n this.internationalization = new Internationalization(this.locale);\n };\n Slider.prototype.initCultureInfo = function () {\n this.tooltipFormatInfo.format = (!isNullOrUndefined(this.tooltip.format)) ? this.tooltip.format : null;\n this.ticksFormatInfo.format = (!isNullOrUndefined(this.ticks.format)) ? this.ticks.format : null;\n };\n Slider.prototype.formatString = function (value, formatInfo) {\n var formatValue = null;\n var formatString = null;\n if ((value || value === 0)) {\n formatValue = this.formatNumber(value);\n var numberOfDecimals = this.numberOfDecimals(value);\n formatString = this.internationalization.getNumberFormat(formatInfo)(this.makeRoundNumber(value, numberOfDecimals));\n }\n return { elementVal: formatValue, formatString: formatString };\n };\n Slider.prototype.formatNumber = function (value) {\n var numberOfDecimals = this.numberOfDecimals(value);\n return this.internationalization.getNumberFormat({\n maximumFractionDigits: numberOfDecimals,\n minimumFractionDigits: numberOfDecimals, useGrouping: false\n })(value);\n };\n Slider.prototype.numberOfDecimals = function (value) {\n var decimalPart = value.toString().split('.')[1];\n var numberOfDecimals = !decimalPart || !decimalPart.length ? 0 : decimalPart.length;\n return numberOfDecimals;\n };\n Slider.prototype.makeRoundNumber = function (value, precision) {\n var decimals = precision || 0;\n return Number(value.toFixed(decimals));\n };\n Slider.prototype.fractionalToInteger = function (value) {\n value = (this.numberOfDecimals(value) === 0) ? Number(value).toFixed(this.noOfDecimals) : value;\n var tens = 1;\n for (var i = 0; i < this.noOfDecimals; i++) {\n tens *= 10;\n }\n value = Number((value * tens).toFixed(0));\n return value;\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n */\n Slider.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.initRender();\n this.wireEvents();\n this.setZindex();\n this.renderComplete();\n if (this.element.tagName === 'EJS-SLIDER') {\n if (this.getTheme(this.sliderContainer) == 'none') {\n setTimeout(function () {\n _this.refresh();\n }, 0);\n }\n }\n };\n Slider.prototype.initialize = function () {\n addClass([this.element], classNames.root);\n this.setCSSClass();\n };\n Slider.prototype.setElementWidth = function (width) {\n if (!isNullOrUndefined(width) && !isNullOrUndefined(this.sliderContainer)) {\n if (typeof width === 'number') {\n this.sliderContainer.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.sliderContainer.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n Slider.prototype.setCSSClass = function (oldCSSClass) {\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Slider.prototype.setEnabled = function () {\n if (!this.enabled) {\n addClass([this.sliderContainer], [classNames.sliderDisabled]);\n if (this.tooltip.isVisible && this.tooltipElement && this.tooltip.showOn === 'Always') {\n this.tooltipElement.classList.add(classNames.sliderDisabled);\n }\n this.unwireEvents();\n }\n else {\n removeClass([this.sliderContainer], [classNames.sliderDisabled]);\n if (this.tooltip.isVisible && this.tooltipElement && this.tooltip.showOn === 'Always') {\n this.tooltipElement.classList.remove(classNames.sliderDisabled);\n }\n this.wireEvents();\n }\n };\n Slider.prototype.getTheme = function (container) {\n var theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n };\n /**\n * Initialize the rendering\n *\n * @private\n */\n Slider.prototype.initRender = function () {\n this.sliderContainer = this.createElement('div', { className: classNames.sliderContainer + ' ' + classNames.controlWrapper });\n this.element.parentNode.insertBefore(this.sliderContainer, this.element);\n this.sliderContainer.appendChild(this.element);\n this.sliderTrack = this.createElement('div', { className: classNames.sliderTrack });\n this.element.appendChild(this.sliderTrack);\n this.setElementWidth(this.width);\n this.element.tabIndex = -1;\n this.getThemeInitialization();\n this.setHandler();\n this.createRangeBar();\n if (this.limits.enabled) {\n this.createLimitBar();\n }\n this.setOrientClass();\n this.hiddenInput = (this.createElement('input', {\n attrs: {\n type: 'hidden', value: (isNullOrUndefined(this.value) ? this.min.toString() : this.value.toString()),\n name: this.element.getAttribute('name') || this.element.getAttribute('id') ||\n '_' + (Math.random() * 1000).toFixed(0) + 'slider', class: classNames.sliderHiddenInput\n }\n }));\n this.hiddenInput.tabIndex = -1;\n this.sliderContainer.appendChild(this.hiddenInput);\n if (this.showButtons) {\n this.setButtons();\n }\n this.setEnableRTL();\n if (this.type === 'Range') {\n this.rangeValueUpdate();\n }\n else {\n this.value = isNullOrUndefined(this.value) ? parseFloat(formatUnit(this.min.toString())) : this.value;\n }\n this.previousVal = this.type !== 'Range' ? this.checkHandleValue(parseFloat(formatUnit(this.value.toString()))) :\n [this.checkHandleValue(parseFloat(formatUnit(this.value[0].toString()))),\n this.checkHandleValue(parseFloat(formatUnit(this.value[1].toString())))];\n this.previousChanged = this.previousVal;\n if (!isNullOrUndefined(this.element.hasAttribute('name'))) {\n this.element.removeAttribute('name');\n }\n this.setValue();\n if (this.limits.enabled) {\n this.setLimitBar();\n }\n if (this.ticks.placement !== 'None') {\n this.renderScale();\n }\n if (this.tooltip.isVisible) {\n this.renderTooltip();\n }\n if (!this.enabled) {\n addClass([this.sliderContainer], [classNames.sliderDisabled]);\n }\n else {\n removeClass([this.sliderContainer], [classNames.sliderDisabled]);\n }\n if (this.readonly) {\n addClass([this.sliderContainer], [classNames.readonly]);\n }\n else {\n removeClass([this.sliderContainer], [classNames.readonly]);\n }\n };\n Slider.prototype.getThemeInitialization = function () {\n this.isMaterial = this.getTheme(this.sliderContainer) === 'material'\n || this.getTheme(this.sliderContainer) === 'material-dark';\n this.isMaterial3 = this.getTheme(this.sliderContainer) === 'Material3'\n || this.getTheme(this.sliderContainer) === 'Material3-dark';\n this.isBootstrap = this.getTheme(this.sliderContainer) === 'bootstrap'\n || this.getTheme(this.sliderContainer) === 'bootstrap-dark';\n this.isBootstrap4 = this.getTheme(this.sliderContainer) === 'bootstrap4';\n this.isTailwind = this.getTheme(this.sliderContainer) === 'tailwind' || this.getTheme(this.sliderContainer) === 'tailwind-dark';\n this.isBootstrap5 = this.getTheme(this.sliderContainer) === 'bootstrap5';\n this.isFluent = this.getTheme(this.sliderContainer) === 'FluentUI';\n this.isMaterialTooltip = (this.isMaterial || this.isMaterial3) && this.type !== 'Range' && this.tooltip.isVisible;\n };\n Slider.prototype.createRangeBar = function () {\n if (this.type !== 'Default') {\n this.rangeBar = (this.createElement('div', { attrs: { class: classNames.rangeBar } }));\n this.element.appendChild(this.rangeBar);\n if (this.drag && this.type === 'Range') {\n if (this.orientation === 'Horizontal') {\n this.rangeBar.classList.add(classNames.dragHorizontal);\n }\n else {\n this.rangeBar.classList.add(classNames.dragVertical);\n }\n }\n }\n };\n Slider.prototype.createLimitBar = function () {\n var firstElementClassName = this.type !== 'Range' ? classNames.limitBarDefault :\n classNames.limitBarFirst;\n firstElementClassName += ' ' + classNames.limits;\n this.limitBarFirst = (this.createElement('div', {\n attrs: { class: firstElementClassName }\n }));\n this.element.appendChild(this.limitBarFirst);\n if (this.type === 'Range') {\n this.limitBarSecond = (this.createElement('div', {\n attrs: {\n class: classNames.limitBarSecond + ' ' + classNames.limits\n }\n }));\n this.element.appendChild(this.limitBarSecond);\n }\n };\n Slider.prototype.setOrientClass = function () {\n if (this.orientation !== 'Vertical') {\n this.sliderContainer.classList.remove(classNames.verticalSlider);\n this.sliderContainer.classList.add(classNames.horizontalSlider);\n this.firstHandle.setAttribute('aria-orientation', 'horizontal');\n if (this.type === 'Range') {\n this.secondHandle.setAttribute('aria-orientation', 'horizontal');\n }\n }\n else {\n this.sliderContainer.classList.remove(classNames.horizontalSlider);\n this.sliderContainer.classList.add(classNames.verticalSlider);\n this.firstHandle.setAttribute('aria-orientation', 'vertical');\n if (this.type === 'Range') {\n this.secondHandle.setAttribute('aria-orientation', 'vertical');\n }\n }\n };\n Slider.prototype.setAriaAttributes = function (element) {\n var _this = this;\n var min = this.min;\n var max = this.max;\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n min = this.customValues[0];\n max = this.customValues[this.customValues.length - 1];\n }\n if (this.type !== 'Range') {\n attributes(element, {\n 'aria-valuemin': min.toString(), 'aria-valuemax': max.toString()\n });\n }\n else {\n var range = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 ?\n [[min.toString(), (this.customValues[this.value[1]]).toString()],\n [(this.customValues[this.value[0]]).toString(), max.toString()]] :\n [[min.toString(), this.value[1].toString()], [this.value[0].toString(), max.toString()]];\n range.forEach(function (range, index) {\n var element = index === 0 ? _this.firstHandle : _this.secondHandle;\n if (element) {\n attributes(element, {\n 'aria-valuemin': range[0], 'aria-valuemax': range[1]\n });\n }\n });\n }\n };\n Slider.prototype.createSecondHandle = function () {\n this.secondHandle = this.createElement('div', {\n attrs: {\n class: classNames.sliderHandle, 'role': 'slider', tabIndex: '0', 'aria-label': 'slider'\n }\n });\n this.secondHandle.classList.add(classNames.sliderSecondHandle);\n this.element.appendChild(this.secondHandle);\n };\n Slider.prototype.createFirstHandle = function () {\n this.firstHandle = this.createElement('div', {\n attrs: {\n class: classNames.sliderHandle, 'role': 'slider', tabIndex: '0', 'aria-label': 'slider'\n }\n });\n this.firstHandle.classList.add(classNames.sliderFirstHandle);\n this.element.appendChild(this.firstHandle);\n if (this.isMaterialTooltip) {\n this.materialHandle = this.createElement('div', {\n attrs: {\n class: classNames.sliderHandle + ' ' +\n classNames.sliderMaterialHandle\n }\n });\n this.element.appendChild(this.materialHandle);\n }\n };\n Slider.prototype.wireFirstHandleEvt = function (destroy) {\n if (!destroy) {\n EventHandler.add(this.firstHandle, 'mousedown touchstart', this.handleFocus, this);\n EventHandler.add(this.firstHandle, 'transitionend', this.transitionEnd, this);\n EventHandler.add(this.firstHandle, 'mouseenter touchenter', this.handleOver, this);\n EventHandler.add(this.firstHandle, 'mouseleave touchend', this.handleLeave, this);\n }\n else {\n EventHandler.remove(this.firstHandle, 'mousedown touchstart', this.handleFocus);\n EventHandler.remove(this.firstHandle, 'transitionend', this.transitionEnd);\n EventHandler.remove(this.firstHandle, 'mouseenter touchenter', this.handleOver);\n EventHandler.remove(this.firstHandle, 'mouseleave touchend', this.handleLeave);\n }\n };\n Slider.prototype.wireSecondHandleEvt = function (destroy) {\n if (!destroy) {\n EventHandler.add(this.secondHandle, 'mousedown touchstart', this.handleFocus, this);\n EventHandler.add(this.secondHandle, 'transitionend', this.transitionEnd, this);\n EventHandler.add(this.secondHandle, 'mouseenter touchenter', this.handleOver, this);\n EventHandler.add(this.secondHandle, 'mouseleave touchend', this.handleLeave, this);\n }\n else {\n EventHandler.remove(this.secondHandle, 'mousedown touchstart', this.handleFocus);\n EventHandler.remove(this.secondHandle, 'transitionend', this.transitionEnd);\n EventHandler.remove(this.secondHandle, 'mouseenter touchenter', this.handleOver);\n EventHandler.remove(this.secondHandle, 'mouseleave touchend', this.handleLeave);\n }\n };\n Slider.prototype.handleStart = function () {\n if (this.type !== 'Range') {\n this.firstHandle.classList[this.handlePos1 === 0 ? 'add' : 'remove'](classNames.sliderHandleStart);\n if (this.isMaterialTooltip) {\n this.materialHandle.classList[this.handlePos1 === 0 ? 'add' : 'remove'](classNames.sliderHandleStart);\n if (this.tooltipElement) {\n this.tooltipElement.classList[this.handlePos1 === 0 ? 'add' : 'remove'](classNames.sliderTooltipStart);\n }\n }\n }\n };\n Slider.prototype.transitionEnd = function (e) {\n if (e.propertyName !== 'transform') {\n this.handleStart();\n if (!this.enableAnimation) {\n this.getHandle().style.transition = 'none';\n }\n if (this.type !== 'Default') {\n this.rangeBar.style.transition = 'none';\n }\n if ((this.isMaterial || this.isMaterial3) && this.tooltip.isVisible && this.type === 'Default') {\n this.tooltipElement.style.transition = this.transition.handle;\n }\n this.tooltipToggle(this.getHandle());\n this.closeTooltip();\n }\n };\n Slider.prototype.handleFocusOut = function () {\n if (this.firstHandle.classList.contains(classNames.sliderHandleFocused)) {\n this.firstHandle.classList.remove(classNames.sliderHandleFocused);\n }\n if (this.type === 'Range') {\n if (this.secondHandle.classList.contains(classNames.sliderHandleFocused)) {\n this.secondHandle.classList.remove(classNames.sliderHandleFocused);\n }\n }\n };\n Slider.prototype.handleFocus = function (e) {\n this.focusSliderElement();\n this.sliderBarClick(e);\n if (e.currentTarget === this.firstHandle) {\n this.firstHandle.classList.add(classNames.sliderHandleFocused);\n this.firstHandle.classList.add(classNames.sliderTabHandle);\n }\n else {\n this.secondHandle.classList.add(classNames.sliderHandleFocused);\n this.secondHandle.classList.add(classNames.sliderTabHandle);\n }\n EventHandler.add(document, 'mousemove touchmove', this.sliderBarMove, this);\n EventHandler.add(document, 'mouseup touchend', this.sliderBarUp, this);\n };\n Slider.prototype.handleOver = function (e) {\n if (this.tooltip.isVisible && this.tooltip.showOn === 'Hover') {\n this.tooltipToggle(e.currentTarget);\n }\n if (this.type === 'Default') {\n this.tooltipToggle(this.getHandle());\n }\n };\n Slider.prototype.handleLeave = function (e) {\n if (this.tooltip.isVisible && this.tooltip.showOn === 'Hover' &&\n !e.currentTarget.classList.contains(classNames.sliderHandleFocused) &&\n !e.currentTarget.classList.contains(classNames.sliderTabHandle)) {\n this.closeTooltip();\n }\n };\n Slider.prototype.setHandler = function () {\n this.createFirstHandle();\n if (this.type === 'Range') {\n this.createSecondHandle();\n }\n };\n Slider.prototype.setEnableRTL = function () {\n this.enableRtl && this.orientation !== 'Vertical' ? addClass([this.sliderContainer], classNames.rtl) :\n removeClass([this.sliderContainer], classNames.rtl);\n var preDir = (this.orientation !== 'Vertical') ? this.horDir : this.verDir;\n if (this.enableRtl) {\n this.horDir = 'right';\n this.verDir = 'bottom';\n }\n else {\n this.horDir = 'left';\n this.verDir = 'bottom';\n }\n var currDir = (this.orientation !== 'Vertical') ? this.horDir : this.verDir;\n if (preDir !== currDir) {\n if (this.orientation === 'Horizontal') {\n setStyleAttribute(this.firstHandle, { 'right': '', 'left': 'auto' });\n if (this.type === 'Range') {\n setStyleAttribute(this.secondHandle, { 'top': '', 'left': 'auto' });\n }\n }\n }\n this.setBarColor();\n };\n Slider.prototype.tooltipValue = function () {\n var _this = this;\n var text;\n var args = {\n value: this.value,\n text: ''\n };\n if (this.initialTooltip) {\n this.initialTooltip = false;\n this.setTooltipContent();\n args.text = text = (typeof (this.tooltipObj.content) === 'function' ? this.tooltipObj.content() : this.tooltipObj.content);\n this.trigger('tooltipChange', args, function (observedArgs) {\n _this.addTooltipClass(observedArgs.text);\n if (text !== observedArgs.text) {\n _this.customAriaText = observedArgs.text;\n if (_this.enableHtmlSanitizer) {\n observedArgs.text = SanitizeHtmlHelper.sanitize(observedArgs.text.toString());\n }\n else {\n observedArgs.text = observedArgs.text.toString();\n }\n var contentTemp = function () {\n return observedArgs.text;\n };\n _this.tooltipObj.content = initializeCSPTemplate(contentTemp);\n _this.setAriaAttrValue(_this.firstHandle);\n if (_this.type === 'Range') {\n _this.setAriaAttrValue(_this.secondHandle);\n }\n }\n });\n if (this.isMaterialTooltip) {\n this.setPreviousVal('change', this.value);\n }\n }\n };\n Slider.prototype.setTooltipContent = function () {\n var content;\n content = this.formatContent(this.tooltipFormatInfo, false);\n var contentTemp = function () {\n return content;\n };\n this.tooltipObj.content = initializeCSPTemplate(contentTemp);\n };\n Slider.prototype.formatContent = function (formatInfo, ariaContent) {\n var content = '';\n var handle1 = this.handleVal1;\n var handle2 = this.handleVal2;\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n handle1 = this.customValues[this.handleVal1];\n handle2 = this.customValues[this.handleVal2];\n }\n if (!ariaContent) {\n if (this.type === 'Range') {\n if (this.enableRtl && this.orientation !== 'Vertical') {\n content = (!isNullOrUndefined(formatInfo.format)) ? (this.formatString(handle2, formatInfo)\n .formatString + ' - ' + this.formatString(handle1, formatInfo).formatString) :\n (handle2.toString() + ' - ' + handle1.toString());\n }\n else {\n content = (!isNullOrUndefined(formatInfo.format)) ? (this.formatString(handle1, formatInfo)\n .formatString + ' - ' + this.formatString(handle2, formatInfo).formatString) :\n (handle1.toString() + ' - ' + handle2.toString());\n }\n }\n else {\n if (!isNullOrUndefined(handle1)) {\n content = (!isNullOrUndefined(formatInfo.format)) ?\n this.formatString(handle1, formatInfo).formatString : handle1.toString();\n }\n }\n return content;\n }\n else {\n if (this.type === 'Range') {\n if (this.enableRtl && this.orientation !== 'Vertical') {\n content = (!isNullOrUndefined(this.tooltip) && !isNullOrUndefined(this.tooltip.format)) ?\n (this.formatString(handle2, formatInfo).elementVal + ' - ' +\n this.formatString(handle1, formatInfo).elementVal) :\n (handle2.toString() + ' - ' + handle1.toString());\n }\n else {\n content = (!isNullOrUndefined(this.tooltip) && !isNullOrUndefined(this.tooltip.format)) ?\n (this.formatString(handle1, formatInfo).elementVal + ' - ' +\n this.formatString(handle2, formatInfo).elementVal) :\n (handle1.toString() + ' - ' + handle2.toString());\n }\n }\n else {\n if (!isNullOrUndefined(handle1)) {\n content = (!isNullOrUndefined(this.tooltip) && !isNullOrUndefined(this.tooltip.format)) ?\n this.formatString(handle1, formatInfo).elementVal : handle1.toString();\n }\n }\n return content;\n }\n };\n Slider.prototype.addTooltipClass = function (content) {\n if (this.isMaterialTooltip) {\n var count = content.toString().length;\n if (!this.tooltipElement) {\n var cssClass = count > 4 ? classNames.sliderMaterialRange : classNames.sliderMaterialDefault;\n this.tooltipObj.cssClass = classNames.sliderTooltip + ' ' + cssClass;\n }\n else {\n var cssClass = count > 4 ?\n { oldCss: classNames.sliderMaterialDefault, newCss: classNames.sliderMaterialRange } :\n { oldCss: classNames.sliderMaterialRange, newCss: classNames.sliderMaterialDefault };\n this.tooltipElement.classList.remove(cssClass.oldCss);\n if (!this.tooltipElement.classList.contains(cssClass.newCss)) {\n this.tooltipElement.classList.add(cssClass.newCss);\n this.tooltipElement.style.transform = count > 4 ? 'scale(1)' :\n this.getTooltipTransformProperties(this.previousTooltipClass).rotate;\n }\n }\n }\n };\n Slider.prototype.tooltipPlacement = function () {\n return this.orientation === 'Horizontal' ? (this.tooltip.placement === 'Before' ? 'TopCenter' : 'BottomCenter') :\n (this.tooltip.placement === 'Before' ? 'LeftCenter' : 'RightCenter');\n };\n Slider.prototype.tooltipBeforeOpen = function (args) {\n this.tooltipElement = args.element;\n if (this.tooltip.cssClass) {\n addClass([this.tooltipElement], this.tooltip.cssClass.split(' ').filter(function (css) { return css; }));\n }\n args.target.removeAttribute('aria-describedby');\n if (this.isMaterialTooltip) {\n this.tooltipElement.firstElementChild.classList.add(classNames.materialTooltipHide);\n this.handleStart();\n this.setTooltipTransform();\n }\n };\n Slider.prototype.tooltipCollision = function (position) {\n if (this.isBootstrap || this.isBootstrap4 || ((this.isMaterial || this.isMaterial3) && !this.isMaterialTooltip)) {\n var tooltipOffsetValue = this.isBootstrap4 ? bootstrap4TooltipOffset : bootstrapTooltipOffset;\n switch (position) {\n case 'TopCenter':\n this.tooltipObj.setProperties({ 'offsetY': -(tooltipOffsetValue) }, false);\n break;\n case 'BottomCenter':\n this.tooltipObj.setProperties({ 'offsetY': tooltipOffsetValue }, false);\n break;\n case 'LeftCenter':\n this.tooltipObj.setProperties({ 'offsetX': -(tooltipOffsetValue) }, false);\n break;\n case 'RightCenter':\n this.tooltipObj.setProperties({ 'offsetX': tooltipOffsetValue }, false);\n break;\n }\n }\n };\n Slider.prototype.materialTooltipEventCallBack = function (event) {\n this.sliderBarClick(event);\n EventHandler.add(document, 'mousemove touchmove', this.sliderBarMove, this);\n EventHandler.add(document, 'mouseup touchend', this.sliderBarUp, this);\n };\n Slider.prototype.wireMaterialTooltipEvent = function (destroy) {\n if (this.isMaterialTooltip) {\n if (!destroy) {\n EventHandler.add(this.tooltipElement, 'mousedown touchstart', this.materialTooltipEventCallBack, this);\n }\n else {\n EventHandler.remove(this.tooltipElement, 'mousedown touchstart', this.materialTooltipEventCallBack);\n }\n }\n };\n Slider.prototype.tooltipPositionCalculation = function (position) {\n var cssClass;\n switch (position) {\n case 'TopCenter':\n cssClass = classNames.horizontalTooltipBefore;\n break;\n case 'BottomCenter':\n cssClass = classNames.horizontalTooltipAfter;\n break;\n case 'LeftCenter':\n cssClass = classNames.verticalTooltipBefore;\n break;\n case 'RightCenter':\n cssClass = classNames.verticalTooltipAfter;\n break;\n }\n return cssClass;\n };\n Slider.prototype.getTooltipTransformProperties = function (className) {\n var transformProperties;\n if (this.tooltipElement) {\n var position = this.orientation === 'Horizontal' ?\n ((this.tooltipElement.clientHeight + 14) - (this.tooltipElement.clientHeight / 2)) :\n ((this.tooltipElement.clientWidth + 14) - (this.tooltipElement.clientWidth / 2));\n transformProperties = this.orientation === 'Horizontal' ?\n (className === classNames.horizontalTooltipBefore ? { rotate: 'rotate(45deg)', translate: \"translateY(\" + position + \"px)\" } :\n { rotate: 'rotate(225deg)', translate: \"translateY(\" + -(position) + \"px)\" }) :\n (className === classNames.verticalTooltipBefore ? { rotate: 'rotate(-45deg)', translate: \"translateX(\" + position + \"px)\" } :\n { rotate: 'rotate(-225deg)', translate: \"translateX(\" + (-position) + \"px)\" });\n }\n return transformProperties;\n };\n Slider.prototype.openMaterialTooltip = function () {\n var _this = this;\n if (this.isMaterialTooltip) {\n this.refreshTooltip(this.firstHandle);\n var tooltipContentElement = this.tooltipElement.firstElementChild;\n tooltipContentElement.classList.remove(classNames.materialTooltipHide);\n tooltipContentElement.classList.add(classNames.materialTooltipShow);\n this.firstHandle.style.cursor = 'default';\n this.tooltipElement.style.transition = this.scaleTransform;\n this.tooltipElement.classList.add(classNames.materialTooltipOpen);\n this.materialHandle.style.transform = 'scale(0)';\n if (tooltipContentElement.innerText.length > 4) {\n this.tooltipElement.style.transform = 'scale(1)';\n }\n else {\n this.tooltipElement.style.transform = this.getTooltipTransformProperties(this.previousTooltipClass).rotate;\n }\n if (this.type === 'Default') {\n setTimeout(function () { if (_this.tooltipElement)\n _this.tooltipElement.style.transition = _this.transition.handle; }, 2500);\n }\n else {\n setTimeout(function () { if (_this.tooltipElement)\n _this.tooltipElement.style.transition = 'none'; }, 2500);\n }\n }\n };\n Slider.prototype.closeMaterialTooltip = function () {\n var _this = this;\n if (this.isMaterialTooltip) {\n var tooltipContentElement = this.tooltipElement.firstElementChild;\n this.tooltipElement.style.transition = this.scaleTransform;\n tooltipContentElement.classList.remove(classNames.materialTooltipShow);\n tooltipContentElement.classList.add(classNames.materialTooltipHide);\n this.firstHandle.style.cursor = '-webkit-grab';\n this.firstHandle.style.cursor = 'grab';\n if (this.materialHandle) {\n this.materialHandle.style.transform = 'scale(1)';\n }\n this.tooltipElement.classList.remove(classNames.materialTooltipOpen);\n this.setTooltipTransform();\n this.tooltipTarget = undefined;\n setTimeout(function () { if (_this.tooltipElement)\n _this.tooltipElement.style.transition = 'none'; }, 2500);\n }\n };\n Slider.prototype.checkTooltipPosition = function (args) {\n var tooltipClass = this.tooltipPositionCalculation(args.collidedPosition);\n if (this.tooltipCollidedPosition === undefined ||\n this.tooltipCollidedPosition !== args.collidedPosition || !args.element.classList.contains(tooltipClass)) {\n if (this.isMaterialTooltip) {\n if (tooltipClass !== undefined) {\n args.element.classList.remove(this.previousTooltipClass);\n args.element.classList.add(tooltipClass);\n this.previousTooltipClass = tooltipClass;\n }\n if (args.element.style.transform && args.element.classList.contains(classNames.materialTooltipOpen) &&\n args.element.firstElementChild.innerText.length <= 4) {\n args.element.style.transform = this.getTooltipTransformProperties(this.previousTooltipClass).rotate;\n }\n }\n this.tooltipCollidedPosition = args.collidedPosition;\n }\n if (this.isMaterialTooltip && this.tooltipElement && this.tooltipElement.style.transform.indexOf('translate') !== -1) {\n this.setTooltipTransform();\n }\n };\n Slider.prototype.setTooltipTransform = function () {\n var transformProperties = this.getTooltipTransformProperties(this.previousTooltipClass);\n if (isNullOrUndefined(this.tooltipElement))\n return;\n if (this.tooltipElement.firstElementChild.innerText.length > 4) {\n this.tooltipElement.style.transform = transformProperties.translate + \" scale(0.01)\";\n }\n else {\n this.tooltipElement.style.transform = transformProperties.translate + \" \" + transformProperties.rotate + \" scale(0.01)\";\n }\n };\n Slider.prototype.renderTooltip = function () {\n this.tooltipObj = new Tooltip({\n showTipPointer: this.isBootstrap || this.isMaterial || this.isMaterial3 || this.isBootstrap4 || this.isTailwind || this.isBootstrap5 || this.isFluent,\n cssClass: classNames.sliderTooltip,\n height: (this.isMaterial || this.isMaterial3) ? 30 : 'auto',\n animation: { open: { effect: 'None' }, close: { effect: 'FadeOut', duration: 500 } },\n opensOn: 'Custom',\n beforeOpen: this.tooltipBeforeOpen.bind(this),\n beforeCollision: this.checkTooltipPosition.bind(this),\n beforeClose: this.tooltipBeforeClose.bind(this),\n enableHtmlSanitizer: this.enableHtmlSanitizer\n });\n this.tooltipObj.appendTo(this.firstHandle);\n this.initializeTooltipProps();\n };\n Slider.prototype.initializeTooltipProps = function () {\n var tooltipShowOn = (this.tooltip.showOn === 'Auto' ? 'Hover' : this.tooltip.showOn);\n this.setProperties({ tooltip: { showOn: tooltipShowOn } }, true);\n this.tooltipObj.position = this.tooltipPlacement();\n this.tooltipCollision(this.tooltipObj.position);\n [this.firstHandle, this.rangeBar, this.secondHandle].forEach(function (handle) {\n if (!isNullOrUndefined(handle)) {\n handle.style.transition = 'none';\n }\n });\n if (this.isMaterialTooltip) {\n this.sliderContainer.classList.add(classNames.materialSlider);\n this.tooltipValue();\n this.tooltipObj.animation.close.effect = 'None';\n this.tooltipObj.open(this.firstHandle);\n }\n };\n Slider.prototype.tooltipBeforeClose = function () {\n this.tooltipElement = undefined;\n this.tooltipCollidedPosition = undefined;\n };\n Slider.prototype.setButtons = function () {\n this.firstBtn = this.createElement('div', { className: classNames.sliderButton + ' ' + classNames.firstButton });\n this.firstBtn.appendChild(this.createElement('span', { className: classNames.sliderButtonIcon }));\n if (this.isTailwind) {\n this.firstBtn.querySelector('span').classList.add('e-icons');\n }\n this.firstBtn.tabIndex = -1;\n this.secondBtn = this.createElement('div', { className: classNames.sliderButton + ' ' + classNames.secondButton });\n this.secondBtn.appendChild(this.createElement('span', { className: classNames.sliderButtonIcon }));\n if (this.isTailwind) {\n this.secondBtn.querySelector('span').classList.add('e-icons');\n }\n this.secondBtn.tabIndex = -1;\n this.sliderContainer.classList.add(classNames.sliderButtonClass);\n this.sliderContainer.appendChild(this.firstBtn);\n this.sliderContainer.appendChild(this.secondBtn);\n this.sliderContainer.appendChild(this.element);\n this.buttonTitle();\n };\n Slider.prototype.buttonTitle = function () {\n var enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n this.l10n.setLocale(this.locale);\n var decrementTitle = this.l10n.getConstant('decrementTitle');\n var incrementTitle = this.l10n.getConstant('incrementTitle');\n attributes(enabledRTL ? this.secondBtn : this.firstBtn, { 'aria-label': decrementTitle, title: decrementTitle });\n attributes(enabledRTL ? this.firstBtn : this.secondBtn, { 'aria-label': incrementTitle, title: incrementTitle });\n };\n Slider.prototype.buttonFocusOut = function () {\n if (this.isMaterial || this.isMaterial3) {\n this.getHandle().classList.remove('e-large-thumb-size');\n }\n };\n Slider.prototype.repeatButton = function (args) {\n var hVal = this.handleValueUpdate();\n var enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n var value;\n if (args.target.parentElement.classList.contains(classNames.firstButton)\n || args.target.classList.contains(classNames.firstButton)) {\n enabledRTL ? (value = this.add(hVal, parseFloat(this.step.toString()), true)) :\n (value = this.add(hVal, parseFloat(this.step.toString()), false));\n }\n else if (args.target.parentElement.classList.contains(classNames.secondButton)\n || (args.target.classList.contains(classNames.secondButton))) {\n enabledRTL ? (value = this.add(hVal, parseFloat(this.step.toString()), false)) :\n (value = this.add(hVal, parseFloat(this.step.toString()), true));\n }\n if (this.limits.enabled) {\n value = this.getLimitCorrectedValues(value);\n }\n if (value >= this.min && value <= this.max) {\n this.changeHandleValue(value);\n this.tooltipToggle(this.getHandle());\n }\n };\n Slider.prototype.repeatHandlerMouse = function (args) {\n args.preventDefault();\n if (args.type === ('mousedown') || args.type === ('touchstart')) {\n this.buttonClick(args);\n this.repeatInterval = setInterval(this.repeatButton.bind(this), 180, args);\n }\n };\n Slider.prototype.materialChange = function () {\n if (!this.getHandle().classList.contains('e-large-thumb-size')) {\n this.getHandle().classList.add('e-large-thumb-size');\n }\n };\n Slider.prototype.focusHandle = function () {\n if (!this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.getHandle().classList.add(classNames.sliderTabHandle);\n }\n };\n Slider.prototype.repeatHandlerUp = function (e) {\n this.changeEvent('changed', e);\n this.closeTooltip();\n clearInterval(this.repeatInterval);\n this.getHandle().focus();\n };\n Slider.prototype.customTickCounter = function (bigNum) {\n var tickCount = 4;\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n if (bigNum > 4) {\n tickCount = 3;\n }\n if (bigNum > 7) {\n tickCount = 2;\n }\n if (bigNum > 14) {\n tickCount = 1;\n }\n if (bigNum > 28) {\n tickCount = 0;\n }\n }\n return tickCount;\n };\n // tslint:disable-next-line:max-func-body-length\n Slider.prototype.renderScale = function () {\n var liElementPosition = 0;\n var orien = this.orientation === 'Vertical' ? 'v' : 'h';\n var spanText;\n this.noOfDecimals = this.numberOfDecimals(this.step);\n this.ul = this.createElement('ul', {\n className: classNames.scale + ' ' + 'e-' + orien + '-scale ' + classNames.tick + '-' + this.ticks.placement.toLowerCase(),\n attrs: { role: 'presentation', tabIndex: '-1', 'aria-hidden': 'true' }\n });\n this.ul.style.zIndex = '-1';\n if (Browser.isAndroid && orien === 'h') {\n this.ul.classList.add(classNames.sliderTickPosition);\n }\n var smallStep = this.ticks.smallStep;\n if (!this.ticks.showSmallTicks) {\n this.ticks.largeStep > 0 ? (smallStep = this.ticks.largeStep) :\n (smallStep = (parseFloat(formatUnit(this.max))) - (parseFloat(formatUnit(this.min))));\n }\n else if (smallStep <= 0) {\n smallStep = parseFloat(formatUnit(this.step));\n }\n var min = this.fractionalToInteger(this.min);\n var max = this.fractionalToInteger(this.max);\n var steps = this.fractionalToInteger(smallStep);\n var bigNum = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 && this.customValues.length - 1;\n var customStep = this.customTickCounter(bigNum);\n var count = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 ?\n (bigNum * customStep) + bigNum : Math.abs((max - min) / steps);\n this.element.appendChild(this.ul);\n var li;\n var start = parseFloat(this.min.toString());\n if (orien === 'v') {\n start = parseFloat(this.max.toString());\n }\n var left = 0;\n var islargeTick;\n var tickWidth = 100 / count;\n if (tickWidth === Infinity) {\n tickWidth = 5;\n }\n for (var i = 0, y = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 ?\n this.customValues.length - 1 : 0, k = 0; i <= count; i++) {\n li = (this.createElement('li', {\n attrs: {\n class: classNames.tick, role: 'presentation', tabIndex: '-1',\n 'aria-hidden': 'true'\n }\n }));\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n islargeTick = i % (customStep + 1) === 0;\n if (islargeTick) {\n if (orien === 'h') {\n start = this.customValues[k];\n k++;\n }\n else {\n start = this.customValues[y];\n y--;\n }\n li.setAttribute('title', start.toString());\n }\n }\n else {\n li.setAttribute('title', start.toString());\n if (this.numberOfDecimals(this.max) === 0 && this.numberOfDecimals(this.min) === 0 &&\n this.numberOfDecimals(this.step) === 0) {\n if (orien === 'h') {\n islargeTick = ((start - parseFloat(this.min.toString())) % this.ticks.largeStep === 0) ? true : false;\n }\n else {\n islargeTick = (Math.abs(start - parseFloat(this.max.toString())) % this.ticks.largeStep === 0) ? true : false;\n }\n }\n else {\n var largestep = this.fractionalToInteger(this.ticks.largeStep);\n var startValue = this.fractionalToInteger(start);\n if (orien === 'h') {\n islargeTick = ((startValue - min) % largestep === 0) ? true : false;\n }\n else {\n islargeTick = (Math.abs(startValue - parseFloat(max.toString())) % largestep === 0) ? true : false;\n }\n }\n }\n if (islargeTick) {\n li.classList.add(classNames.large);\n }\n (orien === 'h') ? (li.style.width = tickWidth + '%') : (li.style.height = tickWidth + '%');\n var repeat = islargeTick ? (this.ticks.placement === 'Both' ? 2 : 1) : 0;\n if (islargeTick) {\n for (var j = 0; j < repeat; j++) {\n this.createTick(li, start, tickWidth);\n }\n }\n else if (isNullOrUndefined(this.customValues)) {\n this.formatTicksValue(li, start);\n }\n this.ul.appendChild(li);\n this.tickElementCollection.push(li);\n var decimalPoints = void 0;\n if (isNullOrUndefined(this.customValues)) {\n if (this.numberOfDecimals(smallStep) > this.numberOfDecimals(start)) {\n decimalPoints = this.numberOfDecimals(smallStep);\n }\n else {\n decimalPoints = this.numberOfDecimals(start);\n }\n if (orien === 'h') {\n start = this.makeRoundNumber(start + smallStep, decimalPoints);\n }\n else {\n if (this.min > this.max) {\n start = this.makeRoundNumber(start + smallStep, decimalPoints);\n }\n else {\n start = this.makeRoundNumber(start - smallStep, decimalPoints);\n }\n }\n left = this.makeRoundNumber(left + smallStep, decimalPoints);\n }\n }\n this.ticksAlignment(orien, tickWidth);\n };\n Slider.prototype.ticksAlignment = function (orien, tickWidth, triggerEvent) {\n if (triggerEvent === void 0) { triggerEvent = true; }\n this.firstChild = this.ul.firstElementChild;\n this.lastChild = this.ul.lastElementChild;\n this.firstChild.classList.add(classNames.sliderFirstTick);\n this.lastChild.classList.add(classNames.sliderLastTick);\n this.sliderContainer.classList.add(classNames.scale + '-' + this.ticks.placement.toLowerCase());\n if (orien === 'h') {\n this.firstChild.style.width = tickWidth / 2 + '%';\n this.lastChild.style.width = tickWidth / 2 + '%';\n }\n else {\n this.firstChild.style.height = tickWidth / 2 + '%';\n this.lastChild.style.height = tickWidth / 2 + '%';\n }\n var eventArgs = { ticksWrapper: this.ul, tickElements: this.tickElementCollection };\n if (triggerEvent) {\n this.trigger('renderedTicks', eventArgs);\n }\n this.scaleAlignment();\n };\n Slider.prototype.createTick = function (li, start, tickWidth) {\n var span = this.createElement('span', {\n className: classNames.tickValue + ' ' + classNames.tick + '-' + this.ticks.placement.toLowerCase(),\n attrs: { role: 'presentation', tabIndex: '-1', 'aria-hidden': 'true' }\n });\n li.appendChild(span);\n if (isNullOrUndefined(this.customValues)) {\n this.formatTicksValue(li, start, span, tickWidth);\n }\n else {\n if (this.enableHtmlSanitizer) {\n span.innerHTML = SanitizeHtmlHelper.sanitize(start.toString());\n }\n else {\n span.innerHTML = start.toString();\n }\n }\n };\n Slider.prototype.formatTicksValue = function (li, start, spanElement, tickWidth) {\n var _this = this;\n var tickText = this.formatNumber(start);\n var text = !isNullOrUndefined(this.ticks) && !isNullOrUndefined(this.ticks.format) ?\n this.formatString(start, this.ticksFormatInfo).formatString : tickText;\n var eventArgs = { value: start, text: text, tickElement: li };\n this.trigger('renderingTicks', eventArgs, function (observedArgs) {\n li.setAttribute('title', observedArgs.text.toString());\n if (spanElement) {\n if (_this.enableHtmlSanitizer) {\n spanElement.innerHTML = SanitizeHtmlHelper.sanitize(observedArgs.text.toString());\n }\n else {\n spanElement.innerHTML = observedArgs.text.toString();\n }\n }\n });\n };\n Slider.prototype.scaleAlignment = function () {\n this.tickValuePosition();\n var smallTick = 12;\n var largeTick = 20;\n var half = largeTick / 2;\n var orien = this.orientation === 'Vertical' ? 'v' : 'h';\n if (this.orientation === 'Vertical') {\n (this.element.getBoundingClientRect().width <= 15) ?\n this.sliderContainer.classList.add(classNames.sliderSmallSize) :\n this.sliderContainer.classList.remove(classNames.sliderSmallSize);\n }\n else {\n (this.element.getBoundingClientRect().height <= 15) ?\n this.sliderContainer.classList.add(classNames.sliderSmallSize) :\n this.sliderContainer.classList.remove(classNames.sliderSmallSize);\n }\n };\n Slider.prototype.tickValuePosition = function () {\n this.firstChild = this.element.querySelector('ul').children[0];\n var first = this.firstChild.getBoundingClientRect();\n var firstChild;\n var otherChild;\n var smallStep = this.ticks.smallStep;\n var count = Math.abs((parseFloat(formatUnit(this.max))) - (parseFloat(formatUnit(this.min)))) / smallStep;\n if (this.firstChild.children.length > 0) {\n firstChild = this.firstChild.children[0].getBoundingClientRect();\n }\n var tickElements = [this.sliderContainer.querySelectorAll('.' + classNames.tick + '.' +\n classNames.large + ' .' + classNames.tickValue)];\n var other;\n if (this.ticks.placement === 'Both') {\n other = [].slice.call(tickElements[0], 2);\n }\n else {\n other = [].slice.call(tickElements[0], 1);\n }\n var tickWidth = this.orientation === 'Vertical' ?\n (first.height * 2) : (first.width * 2);\n for (var i = 0; i < this.firstChild.children.length; i++) {\n if (this.orientation === 'Vertical') {\n this.firstChild.children[i].style.top = -(firstChild.height / 2) + 'px';\n }\n else {\n if (!this.enableRtl) {\n this.firstChild.children[i].style.left = -(firstChild.width / 2) + 'px';\n }\n else {\n this.firstChild.children[i].style.left = (tickWidth -\n this.firstChild.children[i].getBoundingClientRect().width) / 2 + 'px';\n }\n }\n }\n for (var i = 0; i < other.length; i++) {\n otherChild = other[i].getBoundingClientRect();\n if (this.orientation === 'Vertical') {\n setStyleAttribute(other[i], { top: (tickWidth - otherChild.height) / 2 + 'px' });\n }\n else {\n setStyleAttribute(other[i], { left: (tickWidth - otherChild.width) / 2 + 'px' });\n }\n }\n if (this.enableRtl && this.lastChild.children.length && count !== 0) {\n this.lastChild.children[0].style.left = -(this.lastChild.getBoundingClientRect().width / 2) + 'px';\n if (this.ticks.placement === 'Both') {\n this.lastChild.children[1].style.left = -(this.lastChild.getBoundingClientRect().width / 2) + 'px';\n }\n }\n if (count === 0) {\n if (this.orientation === 'Horizontal') {\n if (!this.enableRtl) {\n this.firstChild.classList.remove(classNames.sliderLastTick);\n this.firstChild.style.left = this.firstHandle.style.left;\n }\n else {\n this.firstChild.classList.remove(classNames.sliderLastTick);\n this.firstChild.style.right = this.firstHandle.style.right;\n this.firstChild.children[0].style.left =\n (this.firstChild.getBoundingClientRect().width / 2) + 2 + 'px';\n if (this.ticks.placement === 'Both') {\n this.firstChild.children[1].style.left =\n (this.firstChild.getBoundingClientRect().width / 2) + 2 + 'px';\n }\n }\n }\n if (this.orientation === 'Vertical') {\n this.firstChild.classList.remove(classNames.sliderLastTick);\n }\n }\n };\n Slider.prototype.setAriaAttrValue = function (element) {\n var ariaValueText;\n var isTickFormatted = ((!isNullOrUndefined(this.ticks) && !isNullOrUndefined(this.ticks.format))) ? true : false;\n var text = !isTickFormatted ?\n this.formatContent(this.ticksFormatInfo, false) : this.formatContent(this.tooltipFormatInfo, false);\n var valuenow = isTickFormatted ? this.formatContent(this.ticksFormatInfo, true) :\n this.formatContent(this.tooltipFormatInfo, true);\n text = (!this.customAriaText) ? (text) : (this.customAriaText);\n if (text.split(' - ').length === 2) {\n ariaValueText = text.split(' - ');\n }\n else {\n ariaValueText = [text, text];\n }\n this.setAriaAttributes(element);\n if (this.type !== 'Range') {\n attributes(element, { 'aria-valuenow': valuenow, 'aria-valuetext': text });\n }\n else {\n // eslint-disable-next-line\n (!this.enableRtl) ? ((element === this.firstHandle) ?\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[0], 'aria-valuetext': ariaValueText[0] }) :\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[1], 'aria-valuetext': ariaValueText[1] })) :\n ((element === this.firstHandle) ?\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[1], 'aria-valuetext': ariaValueText[1] }) :\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[0], 'aria-valuetext': ariaValueText[0] }));\n }\n };\n Slider.prototype.handleValueUpdate = function () {\n var hVal;\n if (this.type === 'Range') {\n if (this.activeHandle === 1) {\n hVal = this.handleVal1;\n }\n else {\n hVal = this.handleVal2;\n }\n }\n else {\n hVal = this.handleVal1;\n }\n return hVal;\n };\n Slider.prototype.getLimitCorrectedValues = function (value) {\n if (this.type === 'MinRange' || this.type === 'Default') {\n value = (this.getLimitValueAndPosition(value, this.limits.minStart, this.limits.minEnd))[0];\n }\n else {\n if (this.activeHandle === 1) {\n value = (this.getLimitValueAndPosition(value, this.limits.minStart, this.limits.minEnd))[0];\n }\n else {\n value = (this.getLimitValueAndPosition(value, this.limits.maxStart, this.limits.maxEnd))[0];\n }\n }\n return value;\n };\n Slider.prototype.focusSliderElement = function () {\n if (!this.isElementFocused) {\n this.element.focus();\n this.isElementFocused = true;\n }\n };\n Slider.prototype.buttonClick = function (args) {\n this.focusSliderElement();\n var value;\n var enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n var hVal = this.handleValueUpdate();\n if ((args.keyCode === 40) || (args.keyCode === 37)\n || args.currentTarget.classList.contains(classNames.firstButton)) {\n // eslint-disable-next-line\n enabledRTL ? (value = this.add(hVal, parseFloat(this.step.toString()), true)) :\n (value = this.add(hVal, parseFloat(this.step.toString()), false));\n }\n else if ((args.keyCode === 38) || (args.keyCode === 39) ||\n args.currentTarget.classList.contains(classNames.secondButton)) {\n // eslint-disable-next-line\n enabledRTL ? (value = this.add(hVal, parseFloat(this.step.toString()), false)) :\n (value = this.add(hVal, parseFloat(this.step.toString()), true));\n }\n else if ((args.keyCode === 33\n || args.currentTarget.classList.contains(classNames.firstButton))) {\n // eslint-disable-next-line\n enabledRTL ? (value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), false)) :\n (value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), true));\n }\n else if ((args.keyCode === 34) ||\n args.currentTarget.classList.contains(classNames.secondButton)) {\n // eslint-disable-next-line\n enabledRTL ? (value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), true)) :\n (value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), false));\n }\n else if ((args.keyCode === 36)) {\n value = parseFloat(this.min < this.max ? this.min.toString() : this.max.toString());\n }\n else if ((args.keyCode === 35)) {\n value = parseFloat(this.min < this.max ? this.max.toString() : this.min.toString());\n }\n if (this.limits.enabled) {\n value = this.getLimitCorrectedValues(value);\n }\n this.changeHandleValue(value);\n if ((this.isMaterial || this.isMaterial3) && !this.tooltip.isVisible &&\n !this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.materialChange();\n }\n this.tooltipToggle(this.getHandle());\n this.getHandle().focus();\n this.focusHandle();\n if (args.currentTarget.classList.contains(classNames.firstButton)) {\n EventHandler.add(this.firstBtn, 'mouseup touchend', this.buttonUp, this);\n }\n if (args.currentTarget.classList.contains(classNames.secondButton)) {\n EventHandler.add(this.secondBtn, 'mouseup touchend', this.buttonUp, this);\n }\n };\n Slider.prototype.tooltipToggle = function (target) {\n if (this.isMaterialTooltip) {\n // eslint-disable-next-line\n !this.tooltipElement.classList.contains(classNames.materialTooltipOpen) ?\n this.openMaterialTooltip() : this.refreshTooltip(this.firstHandle);\n }\n else {\n // eslint-disable-next-line\n !this.tooltipElement ? this.openTooltip(target) : this.refreshTooltip(target);\n }\n };\n Slider.prototype.buttonUp = function (args) {\n if (args.currentTarget.classList.contains(classNames.firstButton)) {\n EventHandler.remove(this.firstBtn, 'mouseup touchend', this.buttonUp);\n }\n if (args.currentTarget.classList.contains(classNames.secondButton)) {\n EventHandler.remove(this.secondBtn, 'mouseup touchend', this.buttonUp);\n }\n };\n Slider.prototype.setRangeBar = function () {\n if (this.orientation === 'Horizontal' && !isNullOrUndefined(this.rangeBar)) {\n if (this.type === 'MinRange') {\n // eslint-disable-next-line\n this.enableRtl ? (this.rangeBar.style.right = '0px') : (this.rangeBar.style.left = '0px');\n setStyleAttribute(this.rangeBar, { 'width': isNullOrUndefined(this.handlePos1) ? 0 : this.handlePos1 + 'px' });\n }\n else {\n // eslint-disable-next-line\n this.enableRtl ? (this.rangeBar.style.right =\n this.handlePos1 + 'px') : (this.rangeBar.style.left = this.handlePos1 + 'px');\n setStyleAttribute(this.rangeBar, { 'width': this.handlePos2 - this.handlePos1 + 'px' });\n }\n }\n else if (!isNullOrUndefined(this.rangeBar)) {\n if (this.type === 'MinRange') {\n this.rangeBar.style.bottom = this.min > this.max ? this.handlePos1 + 'px' : '0px';\n setStyleAttribute(this.rangeBar, { 'height': isNullOrUndefined(this.handlePos1) ? 0 : this.min > this.max ? this.element.clientHeight - this.handlePos1 + 'px' : this.handlePos1 + 'px' });\n }\n else {\n this.rangeBar.style.bottom = this.min > this.max ? this.handlePos2 + 'px' : this.handlePos1 + 'px';\n setStyleAttribute(this.rangeBar, { 'height': this.min > this.max ? this.handlePos1 - this.handlePos2 + 'px' : this.handlePos2 - this.handlePos1 + 'px' });\n }\n }\n };\n Slider.prototype.checkValidValueAndPos = function (value) {\n value = this.checkHandleValue(value);\n value = this.checkHandlePosition(value);\n return value;\n };\n Slider.prototype.setLimitBarPositions = function (fromMinPostion, fromMaxpostion, toMinPostion, toMaxpostion) {\n if (this.orientation === 'Horizontal') {\n if (!this.enableRtl) {\n this.limitBarFirst.style.left = fromMinPostion + 'px';\n this.limitBarFirst.style.width = (fromMaxpostion - fromMinPostion) + 'px';\n }\n else {\n this.limitBarFirst.style.right = fromMinPostion + 'px';\n this.limitBarFirst.style.width = (fromMaxpostion - fromMinPostion) + 'px';\n }\n }\n else {\n this.limitBarFirst.style.bottom = (this.min < this.max ? fromMinPostion : fromMaxpostion) + 'px';\n this.limitBarFirst.style.height = (this.min < this.max ? (fromMaxpostion - fromMinPostion) : (fromMinPostion - fromMaxpostion)) + 'px';\n }\n if (this.type === 'Range') {\n if (this.orientation === 'Horizontal') {\n if (!this.enableRtl) {\n this.limitBarSecond.style.left = toMinPostion + 'px';\n this.limitBarSecond.style.width = (toMaxpostion - toMinPostion) + 'px';\n }\n else {\n this.limitBarSecond.style.right = toMinPostion + 'px';\n this.limitBarSecond.style.width = (toMaxpostion - toMinPostion) + 'px';\n }\n }\n else {\n this.limitBarSecond.style.bottom = (this.min < this.max ? toMinPostion : toMaxpostion) + 'px';\n this.limitBarSecond.style.height = (this.min < this.max ? (toMaxpostion - toMinPostion) : (toMinPostion - toMaxpostion)) + 'px';\n }\n }\n };\n Slider.prototype.setLimitBar = function () {\n if (this.type === 'Default' || this.type === 'MinRange') {\n var fromPosition = (this.getLimitValueAndPosition(this.limits.minStart, this.limits.minStart, this.limits.minEnd, true))[0];\n fromPosition = this.checkValidValueAndPos(fromPosition);\n var toPosition = (this.getLimitValueAndPosition(this.limits.minEnd, this.limits.minStart, this.limits.minEnd, true))[0];\n toPosition = this.checkValidValueAndPos(toPosition);\n this.setLimitBarPositions(fromPosition, toPosition);\n }\n else if (this.type === 'Range') {\n var fromMinPostion = (this.getLimitValueAndPosition(this.limits.minStart, this.limits.minStart, this.limits.minEnd, true))[0];\n fromMinPostion = this.checkValidValueAndPos(fromMinPostion);\n var fromMaxpostion = (this.getLimitValueAndPosition(this.limits.minEnd, this.limits.minStart, this.limits.minEnd, true))[0];\n fromMaxpostion = this.checkValidValueAndPos(fromMaxpostion);\n var toMinPostion = (this.getLimitValueAndPosition(this.limits.maxStart, this.limits.maxStart, this.limits.maxEnd, true))[0];\n toMinPostion = this.checkValidValueAndPos(toMinPostion);\n var toMaxpostion = (this.getLimitValueAndPosition(this.limits.maxEnd, this.limits.maxStart, this.limits.maxEnd, true))[0];\n toMaxpostion = this.checkValidValueAndPos(toMaxpostion);\n this.setLimitBarPositions(fromMinPostion, fromMaxpostion, toMinPostion, toMaxpostion);\n }\n };\n Slider.prototype.getLimitValueAndPosition = function (currentValue, minValue, maxValue, limitBar) {\n if (isNullOrUndefined(minValue)) {\n minValue = this.min < this.max ? this.min : this.max;\n if (isNullOrUndefined(currentValue) && limitBar) {\n currentValue = minValue;\n }\n }\n if (isNullOrUndefined(maxValue)) {\n maxValue = this.min < this.max ? this.max : this.min;\n if (isNullOrUndefined(currentValue) && limitBar) {\n currentValue = maxValue;\n }\n }\n if (currentValue < minValue) {\n currentValue = minValue;\n }\n if (currentValue > maxValue) {\n currentValue = maxValue;\n }\n return [currentValue, this.checkHandlePosition(currentValue)];\n };\n Slider.prototype.setValue = function () {\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n this.min = 0;\n this.max = this.customValues.length - 1;\n this.setBarColor();\n }\n this.setAriaAttributes(this.firstHandle);\n this.handleVal1 = isNullOrUndefined(this.value) ? this.checkHandleValue(parseFloat(this.min.toString())) :\n this.checkHandleValue(parseFloat(this.value.toString()));\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n this.preHandlePos1 = this.handlePos1;\n // eslint-disable-next-line\n isNullOrUndefined(this.activeHandle) ? (this.type === 'Range' ? this.activeHandle = 2 : this.activeHandle = 1) :\n // eslint-disable-next-line no-self-assign\n this.activeHandle = this.activeHandle;\n if (this.type === 'Default' || this.type === 'MinRange') {\n if (this.limits.enabled) {\n var values = this.getLimitValueAndPosition(this.handleVal1, this.limits.minStart, this.limits.minEnd);\n this.handleVal1 = values[0];\n this.handlePos1 = values[1];\n this.preHandlePos1 = this.handlePos1;\n }\n this.setHandlePosition(null);\n this.handleStart();\n this.value = this.handleVal1;\n this.setAriaAttrValue(this.firstHandle);\n this.changeEvent('changed', null);\n }\n else {\n this.validateRangeValue();\n }\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n if (this.limits.enabled) {\n this.setLimitBar();\n }\n };\n Slider.prototype.rangeValueUpdate = function () {\n if (this.value === null || typeof (this.value) !== 'object') {\n this.value = [parseFloat(formatUnit(this.min)), parseFloat(formatUnit(this.max))];\n }\n };\n Slider.prototype.validateRangeValue = function () {\n this.rangeValueUpdate();\n this.setRangeValue();\n };\n Slider.prototype.modifyZindex = function () {\n if (this.type === 'Range' && !isNullOrUndefined(this.firstHandle) && !isNullOrUndefined(this.secondHandle)) {\n if (this.activeHandle === 1) {\n this.firstHandle.style.zIndex = (this.zIndex + 4) + '';\n this.secondHandle.style.zIndex = (this.zIndex + 3) + '';\n }\n else {\n this.firstHandle.style.zIndex = (this.zIndex + 3) + '';\n this.secondHandle.style.zIndex = (this.zIndex + 4) + '';\n }\n }\n else if (this.isMaterialTooltip && this.tooltipElement) {\n this.tooltipElement.style.zIndex = getZindexPartial(this.element) + '';\n }\n };\n Slider.prototype.setHandlePosition = function (event) {\n var _this = this;\n var handle;\n var pos = (this.activeHandle === 1) ? this.handlePos1 : this.handlePos2;\n if (this.isMaterialTooltip) {\n handle = [this.firstHandle, this.materialHandle];\n }\n else {\n handle = [this.getHandle()];\n }\n this.handleStart();\n handle.forEach(function (handle) {\n if (_this.orientation === 'Horizontal') {\n // eslint-disable-next-line\n _this.enableRtl ? (handle.style.right =\n pos + \"px\") : (handle.style.left = pos + \"px\");\n }\n else {\n handle.style.bottom = pos + \"px\";\n }\n });\n this.changeEvent('change', event);\n };\n Slider.prototype.getHandle = function () {\n return (this.activeHandle === 1) ? this.firstHandle : this.secondHandle;\n };\n Slider.prototype.setRangeValue = function () {\n this.updateRangeValue();\n this.activeHandle = 1;\n this.setHandlePosition(null);\n this.activeHandle = 2;\n this.setHandlePosition(null);\n this.activeHandle = 1;\n };\n Slider.prototype.changeEvent = function (eventName, e) {\n var previous = eventName === 'change' ? this.previousVal : this.previousChanged;\n if (this.type !== 'Range') {\n this.setProperties({ 'value': this.handleVal1 }, true);\n if (previous !== this.value && (!this.isMaterialTooltip || !this.initialTooltip)) {\n this.trigger(eventName, this.changeEventArgs(eventName, e));\n this.initialTooltip = true;\n this.setPreviousVal(eventName, this.value);\n }\n this.setAriaAttrValue(this.firstHandle);\n }\n else {\n var value = this.value = [this.handleVal1, this.handleVal2];\n this.setProperties({ 'value': value }, true);\n if (previous.length === this.value.length\n && this.value[0] !== previous[0] || this.value[1] !== previous[1]) {\n this.initialTooltip = false;\n this.trigger(eventName, this.changeEventArgs(eventName, e));\n this.initialTooltip = true;\n this.setPreviousVal(eventName, this.value);\n }\n this.setAriaAttrValue(this.getHandle());\n }\n this.hiddenInput.value = this.value.toString();\n };\n Slider.prototype.changeEventArgs = function (eventName, e) {\n var eventArgs;\n if (this.tooltip.isVisible && this.tooltipObj && this.initialTooltip) {\n this.tooltipValue();\n eventArgs = {\n value: this.value,\n previousValue: eventName === 'change' ? this.previousVal : this.previousChanged,\n action: eventName, text: (typeof (this.tooltipObj.content) === 'function' ? this.tooltipObj.content() : this.tooltipObj.content), isInteracted: isNullOrUndefined(e) ? false : true\n };\n }\n else {\n eventArgs = {\n value: this.value,\n previousValue: eventName === 'change' ? this.previousVal : this.previousChanged,\n action: eventName, text: isNullOrUndefined(this.ticksFormatInfo.format) ? this.value.toString() :\n (this.type !== 'Range' ? this.formatString(this.value, this.ticksFormatInfo).formatString :\n (this.formatString(this.value[0], this.ticksFormatInfo).formatString + ' - ' +\n this.formatString(this.value[1], this.ticksFormatInfo).formatString)),\n isInteracted: isNullOrUndefined(e) ? false : true\n };\n }\n return eventArgs;\n };\n Slider.prototype.setPreviousVal = function (eventName, value) {\n if (eventName === 'change') {\n this.previousVal = value;\n }\n else {\n this.previousChanged = value;\n }\n };\n Slider.prototype.updateRangeValue = function () {\n var values = this.value.toString().split(',').map(Number);\n if ((this.enableRtl && this.orientation !== 'Vertical') || this.rtl) {\n this.value = [values[1], values[0]];\n }\n else {\n this.value = [values[0], values[1]];\n }\n if (this.enableRtl && this.orientation !== 'Vertical') {\n this.handleVal1 = this.checkHandleValue(this.value[1]);\n this.handleVal2 = this.checkHandleValue(this.value[0]);\n }\n else {\n this.handleVal1 = this.checkHandleValue(this.value[0]);\n this.handleVal2 = this.checkHandleValue(this.value[1]);\n }\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n if (this.min < this.max && this.handlePos1 > this.handlePos2) {\n this.handlePos1 = this.handlePos2;\n this.handleVal1 = this.handleVal2;\n }\n if (this.min > this.max && this.handlePos1 < this.handlePos2) {\n this.handlePos2 = this.handlePos1;\n this.handleVal2 = this.handleVal1;\n }\n this.preHandlePos1 = this.handlePos1;\n this.preHandlePos2 = this.handlePos2;\n if (this.limits.enabled) {\n this.activeHandle = 1;\n var values_1 = this.getLimitValueAndPosition(this.handleVal1, this.limits.minStart, this.limits.minEnd);\n this.handleVal1 = values_1[0];\n this.handlePos1 = values_1[1];\n this.preHandlePos1 = this.handlePos1;\n this.activeHandle = 2;\n values_1 = this.getLimitValueAndPosition(this.handleVal2, this.limits.maxStart, this.limits.maxEnd);\n this.handleVal2 = values_1[0];\n this.handlePos2 = values_1[1];\n this.preHandlePos2 = this.handlePos2;\n }\n };\n Slider.prototype.checkHandlePosition = function (value) {\n var pos;\n value = (100 *\n (value - (parseFloat(formatUnit(this.min))))) / ((parseFloat(formatUnit(this.max))) - (parseFloat(formatUnit(this.min))));\n if (this.orientation === 'Horizontal') {\n pos = this.element.getBoundingClientRect().width * (value / 100);\n }\n else {\n pos = this.element.getBoundingClientRect().height * (value / 100);\n }\n if (((parseFloat(formatUnit(this.max))) === (parseFloat(formatUnit(this.min))))) {\n if (this.orientation === 'Horizontal') {\n pos = this.element.getBoundingClientRect().width;\n }\n else {\n pos = this.element.getBoundingClientRect().height;\n }\n }\n return pos;\n };\n Slider.prototype.checkHandleValue = function (value) {\n if (this.min === this.max) {\n return (parseFloat(formatUnit(this.max)));\n }\n var handle = this.tempStartEnd();\n if (value < handle.start) {\n value = handle.start;\n }\n else if (value > handle.end) {\n value = handle.end;\n }\n return value;\n };\n /**\n * It is used to reposition slider.\n *\n * @returns void\n */\n Slider.prototype.reposition = function () {\n var _this = this;\n if (!isNullOrUndefined(this.firstHandle))\n this.firstHandle.style.transition = 'none';\n if (this.type !== 'Default' && !isNullOrUndefined(this.rangeBar)) {\n this.rangeBar.style.transition = 'none';\n }\n if (this.type === 'Range' && !isNullOrUndefined(this.secondHandle)) {\n this.secondHandle.style.transition = 'none';\n }\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n if (this.handleVal2) {\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n }\n if (this.orientation === 'Horizontal') {\n // eslint-disable-next-line\n this.enableRtl ? this.firstHandle.style.right =\n this.handlePos1 + \"px\" : this.firstHandle.style.left = this.handlePos1 + \"px\";\n if (this.isMaterialTooltip && !isNullOrUndefined(this.materialHandle)) {\n // eslint-disable-next-line\n this.enableRtl ? this.materialHandle.style.right =\n this.handlePos1 + \"px\" : this.materialHandle.style.left = this.handlePos1 + \"px\";\n }\n if (this.type === 'MinRange' && !isNullOrUndefined(this.rangeBar)) {\n // eslint-disable-next-line\n this.enableRtl ? (this.rangeBar.style.right = '0px') : (this.rangeBar.style.left = '0px');\n setStyleAttribute(this.rangeBar, { 'width': isNullOrUndefined(this.handlePos1) ? 0 : this.handlePos1 + 'px' });\n }\n else if (this.type === 'Range' && !isNullOrUndefined(this.secondHandle) && !isNullOrUndefined(this.rangeBar)) {\n // eslint-disable-next-line\n this.enableRtl ? this.secondHandle.style.right =\n this.handlePos2 + \"px\" : this.secondHandle.style.left = this.handlePos2 + \"px\";\n // eslint-disable-next-line\n this.enableRtl ? (this.rangeBar.style.right =\n this.handlePos1 + 'px') : (this.rangeBar.style.left = this.handlePos1 + 'px');\n setStyleAttribute(this.rangeBar, { 'width': this.handlePos2 - this.handlePos1 + 'px' });\n }\n }\n else {\n this.firstHandle.style.bottom = this.handlePos1 + \"px\";\n if (this.isMaterialTooltip) {\n this.materialHandle.style.bottom = this.handlePos1 + \"px\";\n }\n if (this.type === 'MinRange') {\n this.rangeBar.style.bottom = this.min > this.max ? this.handlePos1 + 'px' : '0px';\n setStyleAttribute(this.rangeBar, { 'height': isNullOrUndefined(this.handlePos1) ? 0 : this.min > this.max ? this.element.clientHeight - this.handlePos1 + 'px' : this.handlePos1 + 'px' });\n }\n else if (this.type === 'Range') {\n this.secondHandle.style.bottom = this.handlePos2 + \"px\";\n this.rangeBar.style.bottom = this.min > this.max ? this.handlePos2 + 'px' : this.handlePos1 + 'px';\n setStyleAttribute(this.rangeBar, { 'height': this.min > this.max ? this.handlePos1 - this.handlePos2 + 'px' : this.handlePos2 - this.handlePos1 + 'px' });\n }\n }\n if (this.limits.enabled) {\n this.setLimitBar();\n }\n if (this.ticks.placement !== 'None' && this.ul) {\n this.removeElement(this.ul);\n this.ul = undefined;\n this.renderScale();\n }\n this.handleStart();\n if (!this.tooltip.isVisible) {\n setTimeout(function () {\n if (!isNullOrUndefined(_this.firstHandle))\n _this.firstHandle.style.transition = _this.scaleTransform;\n if (_this.type === 'Range' && !isNullOrUndefined(_this.secondHandle)) {\n _this.secondHandle.style.transition = _this.scaleTransform;\n }\n });\n }\n this.refreshTooltip(this.tooltipTarget);\n this.setBarColor();\n };\n Slider.prototype.changeHandleValue = function (value) {\n var position = null;\n if (this.activeHandle === 1) {\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n this.handleVal1 = this.checkHandleValue(value);\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n if (this.type === 'Range' && ((this.handlePos1 > this.handlePos2 && this.min < this.max) || (this.handlePos1 < this.handlePos2 && this.min > this.max))) {\n this.handlePos1 = this.handlePos2;\n this.handleVal1 = this.handleVal2;\n }\n if (this.handlePos1 !== this.preHandlePos1) {\n position = this.preHandlePos1 = this.handlePos1;\n }\n }\n this.modifyZindex();\n }\n else {\n if (!(this.limits.enabled && this.limits.endHandleFixed)) {\n this.handleVal2 = this.checkHandleValue(value);\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n if (this.type === 'Range' && ((this.handlePos2 < this.handlePos1 && this.min < this.max) || (this.handlePos2 > this.handlePos1 && this.min > this.max))) {\n this.handlePos2 = this.handlePos1;\n this.handleVal2 = this.handleVal1;\n }\n if (this.handlePos2 !== this.preHandlePos2) {\n position = this.preHandlePos2 = this.handlePos2;\n }\n }\n this.modifyZindex();\n }\n if (position !== null) {\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n this.setHandlePosition(null);\n }\n };\n // eslint-disable-next-line\n Slider.prototype.tempStartEnd = function () {\n if (this.min > this.max) {\n return {\n start: this.max,\n end: this.min\n };\n }\n else {\n return {\n start: this.min,\n end: this.max\n };\n }\n };\n // eslint-disable-next-line\n Slider.prototype.xyToPosition = function (position) {\n var pos;\n if (this.min === this.max) {\n return 100;\n }\n if (this.orientation === 'Horizontal') {\n var left = position.x - this.element.getBoundingClientRect().left;\n var num = this.element.offsetWidth / 100;\n this.val = (left / num);\n }\n else {\n var top_1 = position.y - this.element.getBoundingClientRect().top;\n var num = this.element.offsetHeight / 100;\n this.val = 100 - (top_1 / num);\n }\n var val = this.stepValueCalculation(this.val);\n if (val < 0) {\n val = 0;\n }\n else if (val > 100) {\n val = 100;\n }\n if (this.enableRtl && this.orientation !== 'Vertical') {\n val = 100 - val;\n }\n if (this.orientation === 'Horizontal') {\n pos = this.element.getBoundingClientRect().width * (val / 100);\n }\n else {\n pos = this.element.getBoundingClientRect().height * (val / 100);\n }\n return pos;\n };\n Slider.prototype.stepValueCalculation = function (value) {\n if (this.step === 0) {\n this.step = 1;\n }\n var percentStep = (parseFloat(formatUnit(this.step))) / ((parseFloat(formatUnit(this.max)) - parseFloat(formatUnit(this.min))) / 100);\n var remain = value % Math.abs(percentStep);\n if (remain !== 0) {\n if ((percentStep / 2) > remain) {\n value -= remain;\n }\n else {\n value += Math.abs(percentStep) - remain;\n }\n }\n return value;\n };\n Slider.prototype.add = function (a, b, addition) {\n var precision;\n var x = Math.pow(10, precision || 3);\n var val;\n if (addition) {\n val = (Math.round(a * x) + Math.round(b * x)) / x;\n }\n else {\n val = (Math.round(a * x) - Math.round(b * x)) / x;\n }\n return val;\n };\n Slider.prototype.positionToValue = function (pos) {\n var val;\n var diff = parseFloat(formatUnit(this.max)) - parseFloat(formatUnit(this.min));\n if (this.orientation === 'Horizontal') {\n val = (pos / this.element.getBoundingClientRect().width) * diff;\n }\n else {\n val = (pos / this.element.getBoundingClientRect().height) * diff;\n }\n var total = this.add(val, parseFloat(this.min.toString()), true);\n return (total);\n };\n Slider.prototype.sliderBarClick = function (evt) {\n evt.preventDefault();\n // eslint-disable-next-line\n var pos;\n if (evt.type === 'mousedown' || evt.type === 'mouseup' || evt.type === 'click') {\n pos = { x: evt.clientX, y: evt.clientY };\n }\n else if (evt.type === 'touchend' || evt.type === 'touchstart') {\n pos = { x: evt.changedTouches[0].clientX, y: evt.changedTouches[0].clientY };\n }\n var handlepos = this.xyToPosition(pos);\n var handleVal = this.positionToValue(handlepos);\n if (this.type === 'Range' && (this.min < (this.max) && (this.handlePos2 - handlepos) < (handlepos - this.handlePos1) || (this.min > this.max) && (this.handlePos1 - handlepos) > (handlepos - this.handlePos2))) {\n this.activeHandle = 2;\n if (!(this.limits.enabled && this.limits.endHandleFixed)) {\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(handleVal, this.limits.maxStart, this.limits.maxEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.secondHandle.classList.add(classNames.sliderActiveHandle);\n this.handlePos2 = this.preHandlePos2 = handlepos;\n this.handleVal2 = handleVal;\n }\n this.modifyZindex();\n this.secondHandle.focus();\n }\n else {\n this.activeHandle = 1;\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(handleVal, this.limits.minStart, this.limits.minEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.firstHandle.classList.add(classNames.sliderActiveHandle);\n this.handlePos1 = this.preHandlePos1 = handlepos;\n this.handleVal1 = handleVal;\n }\n this.modifyZindex();\n this.firstHandle.focus();\n }\n if (this.isMaterialTooltip) {\n this.tooltipElement.classList.add(classNames.materialTooltipActive);\n }\n var focusedElement = this.element.querySelector('.' + classNames.sliderTabHandle);\n if (focusedElement && this.getHandle() !== focusedElement) {\n focusedElement.classList.remove(classNames.sliderTabHandle);\n }\n var handle = this.activeHandle === 1 ? this.firstHandle : this.secondHandle;\n var behindElement;\n if ((evt.type === 'click' || evt.type === 'mousedown') && evt.target === handle) {\n var eventX = evt.clientX, eventY = evt.clientY;\n behindElement = document.elementFromPoint(eventX, eventY);\n }\n if (evt.target === handle && behindElement != handle) {\n if ((this.isMaterial || this.isMaterial3) && !this.tooltip.isVisible &&\n !this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.materialChange();\n }\n this.sliderBarUp(evt);\n this.tooltipToggle(this.getHandle());\n return;\n }\n if (!this.checkRepeatedValue(handleVal)) {\n return;\n }\n var transition = (this.isMaterial || this.isMaterial3) && this.tooltip.isVisible ?\n this.transitionOnMaterialTooltip : this.transition;\n this.getHandle().style.transition = transition.handle;\n if (this.type !== 'Default') {\n this.rangeBar.style.transition = transition.rangeBar;\n }\n this.setHandlePosition(evt);\n if (this.isMaterialTooltip) {\n this.initialTooltip = false;\n }\n if (evt.target != handle) {\n this.changeEvent('changed', evt);\n }\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n };\n Slider.prototype.handleValueAdjust = function (handleValue, assignValue, handleNumber) {\n if (handleNumber === 1) {\n this.handleVal1 = assignValue;\n this.handleVal2 = this.handleVal1 + this.minDiff;\n }\n else if (handleNumber === 2) {\n this.handleVal2 = assignValue;\n this.handleVal1 = this.handleVal2 - this.minDiff;\n }\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n };\n Slider.prototype.dragRangeBarMove = function (event) {\n var _a, _b;\n if (event.type !== 'touchmove') {\n event.preventDefault();\n }\n this.rangeBarDragged = true;\n var pos;\n this.rangeBar.style.transition = 'none';\n this.firstHandle.style.transition = 'none';\n this.secondHandle.style.transition = 'none';\n var xPostion;\n var yPostion;\n if (event.type === 'mousemove') {\n _a = [event.clientX, event.clientY], xPostion = _a[0], yPostion = _a[1];\n }\n else {\n _b = [event.changedTouches[0].clientX, event.changedTouches[0].clientY], xPostion = _b[0], yPostion = _b[1];\n }\n if (!(this.limits.enabled && this.limits.startHandleFixed) && !(this.limits.enabled && this.limits.endHandleFixed)) {\n if (!this.enableRtl) {\n pos = { x: xPostion - this.firstPartRemain, y: yPostion + this.secondPartRemain };\n }\n else {\n pos = { x: xPostion + this.secondPartRemain, y: yPostion + this.secondPartRemain };\n }\n if (this.min > this.max) {\n this.handlePos2 = this.xyToPosition(pos);\n this.handleVal2 = this.positionToValue(this.handlePos2);\n }\n else {\n this.handlePos1 = this.xyToPosition(pos);\n this.handleVal1 = this.positionToValue(this.handlePos1);\n }\n if (!this.enableRtl) {\n pos = { x: xPostion + this.secondPartRemain, y: yPostion - this.firstPartRemain };\n }\n else {\n pos = { x: xPostion - this.firstPartRemain, y: yPostion - this.firstPartRemain };\n }\n if (this.min > this.max) {\n this.handlePos1 = this.xyToPosition(pos);\n this.handleVal1 = this.positionToValue(this.handlePos1);\n }\n else {\n this.handlePos2 = this.xyToPosition(pos);\n this.handleVal2 = this.positionToValue(this.handlePos2);\n }\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(this.handleVal1, this.limits.minStart, this.limits.minEnd);\n this.handleVal1 = value[0];\n this.handlePos1 = value[1];\n if (this.handleVal1 === this.limits.minEnd) {\n this.handleValueAdjust(this.handleVal1, this.limits.minEnd, 1);\n }\n if (this.handleVal1 === this.limits.minStart) {\n this.handleValueAdjust(this.handleVal1, this.limits.minStart, 1);\n }\n value = this.getLimitValueAndPosition(this.handleVal2, this.limits.maxStart, this.limits.maxEnd);\n this.handleVal2 = value[0];\n this.handlePos2 = value[1];\n if (this.handleVal2 === this.limits.maxStart) {\n this.handleValueAdjust(this.handleVal2, this.limits.maxStart, 2);\n }\n if (this.handleVal2 === this.limits.maxEnd) {\n this.handleValueAdjust(this.handleVal2, this.limits.maxEnd, 2);\n }\n }\n if (this.handleVal2 === (this.min > this.max ? this.min : this.max)) {\n this.handleValueAdjust(this.handleVal2, (this.min > this.max ? this.min : this.max), 2);\n }\n if (this.handleVal1 === (this.min > this.max ? this.max : this.min)) {\n this.handleValueAdjust(this.handleVal1, (this.min > this.max ? this.max : this.min), 1);\n }\n }\n this.activeHandle = 1;\n this.setHandlePosition(event);\n this.activeHandle = 2;\n this.setHandlePosition(event);\n this.tooltipToggle(this.rangeBar);\n this.setRangeBar();\n };\n Slider.prototype.sliderBarUp = function (event) {\n this.changeEvent('changed', event);\n this.handleFocusOut();\n this.firstHandle.classList.remove(classNames.sliderActiveHandle);\n if (this.type === 'Range') {\n this.initialTooltip = false;\n this.secondHandle.classList.remove(classNames.sliderActiveHandle);\n }\n this.closeTooltip();\n if (this.isMaterial || this.isMaterial3) {\n this.getHandle().classList.remove('e-large-thumb-size');\n if (this.isMaterialTooltip) {\n this.tooltipElement.classList.remove(classNames.materialTooltipActive);\n }\n }\n EventHandler.remove(document, 'mousemove touchmove', this.sliderBarMove);\n EventHandler.remove(document, 'mouseup touchend', this.sliderBarUp);\n };\n Slider.prototype.sliderBarMove = function (evt) {\n if (evt.type !== 'touchmove') {\n evt.preventDefault();\n }\n var pos;\n if (evt.type === 'mousemove') {\n pos = { x: evt.clientX, y: evt.clientY };\n }\n else {\n pos = { x: evt.changedTouches[0].clientX, y: evt.changedTouches[0].clientY };\n }\n var handlepos = this.xyToPosition(pos);\n var handleVal = this.positionToValue(handlepos);\n handlepos = Math.round(handlepos);\n if (this.type !== 'Range' && this.activeHandle === 1) {\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n if (this.limits.enabled) {\n var valueAndPostion = this.getLimitValueAndPosition(handleVal, this.limits.minStart, this.limits.minEnd);\n handlepos = valueAndPostion[1];\n handleVal = valueAndPostion[0];\n }\n this.handlePos1 = handlepos;\n this.handleVal1 = handleVal;\n }\n this.firstHandle.classList.add(classNames.sliderActiveHandle);\n }\n if (this.type === 'Range') {\n if (this.activeHandle === 1) {\n this.firstHandle.classList.add(classNames.sliderActiveHandle);\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n if ((this.min < this.max && handlepos > this.handlePos2 || (this.min > this.max && handlepos < this.handlePos2))) {\n handlepos = this.handlePos2;\n handleVal = this.handleVal2;\n }\n if (handlepos !== this.preHandlePos1) {\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(handleVal, this.limits.minStart, this.limits.minEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.handlePos1 = this.preHandlePos1 = handlepos;\n this.handleVal1 = handleVal;\n this.activeHandle = 1;\n }\n }\n }\n else if (this.activeHandle === 2) {\n this.secondHandle.classList.add(classNames.sliderActiveHandle);\n if (!(this.limits.enabled && this.limits.endHandleFixed)) {\n if ((this.min < this.max && handlepos < this.handlePos1) || (this.min > this.max && handlepos > this.handlePos1)) {\n handlepos = this.handlePos1;\n handleVal = this.handleVal1;\n }\n if (handlepos !== this.preHandlePos2) {\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(handleVal, this.limits.maxStart, this.limits.maxEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.handlePos2 = this.preHandlePos2 = handlepos;\n this.handleVal2 = handleVal;\n this.activeHandle = 2;\n }\n }\n }\n }\n if (!this.checkRepeatedValue(handleVal)) {\n return;\n }\n this.getHandle().style.transition = this.scaleTransform;\n if (this.type !== 'Default') {\n this.rangeBar.style.transition = 'none';\n }\n this.setHandlePosition(evt);\n if ((this.isMaterial || this.isMaterial3) && !this.tooltip.isVisible &&\n !this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.materialChange();\n }\n this.tooltipToggle(this.getHandle());\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n };\n Slider.prototype.dragRangeBarUp = function (event) {\n if (!this.rangeBarDragged) {\n this.focusSliderElement();\n this.sliderBarClick(event);\n }\n else {\n this.isDragComplete = true;\n }\n this.changeEvent('changed', event);\n this.closeTooltip();\n EventHandler.remove(document, 'mousemove touchmove', this.dragRangeBarMove);\n EventHandler.remove(document, 'mouseup touchend', this.dragRangeBarUp);\n this.rangeBarDragged = false;\n };\n Slider.prototype.checkRepeatedValue = function (currentValue) {\n if (this.type === 'Range') {\n var previousVal = this.enableRtl && this.orientation !== 'Vertical' ? (this.activeHandle === 1 ?\n this.previousVal[1] : this.previousVal[0]) :\n (this.activeHandle === 1 ? this.previousVal[0] : this.previousVal[1]);\n if (currentValue === previousVal) {\n return 0;\n }\n }\n else {\n if (currentValue === this.previousVal) {\n return 0;\n }\n }\n return 1;\n };\n Slider.prototype.refreshTooltip = function (target) {\n if (this.tooltip.isVisible && this.tooltipObj) {\n this.tooltipValue();\n if (target) {\n this.tooltipObj.refresh(target);\n this.tooltipTarget = target;\n }\n }\n };\n Slider.prototype.openTooltip = function (target) {\n if (this.tooltip.isVisible && this.tooltipObj && !this.isMaterialTooltip) {\n this.tooltipValue();\n this.tooltipObj.open(target);\n this.tooltipTarget = target;\n }\n };\n Slider.prototype.closeTooltip = function () {\n if (this.tooltip.isVisible && this.tooltipObj && this.tooltip.showOn !== 'Always' && !this.isMaterialTooltip) {\n this.tooltipValue();\n this.tooltipObj.close();\n this.tooltipTarget = undefined;\n }\n };\n Slider.prototype.keyDown = function (event) {\n switch (event.keyCode) {\n case 37:\n case 38:\n case 39:\n case 40:\n case 33:\n case 34:\n case 36:\n case 35:\n event.preventDefault();\n this.buttonClick(event);\n break;\n }\n };\n Slider.prototype.wireButtonEvt = function (destroy) {\n if (!destroy) {\n EventHandler.add(this.firstBtn, 'mouseleave touchleave', this.buttonFocusOut, this);\n EventHandler.add(this.secondBtn, 'mouseleave touchleave', this.buttonFocusOut, this);\n EventHandler.add(this.firstBtn, 'mousedown touchstart', this.repeatHandlerMouse, this);\n EventHandler.add(this.firstBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp, this);\n EventHandler.add(this.secondBtn, 'mousedown touchstart', this.repeatHandlerMouse, this);\n EventHandler.add(this.secondBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp, this);\n EventHandler.add(this.firstBtn, 'focusout', this.sliderFocusOut, this);\n EventHandler.add(this.secondBtn, 'focusout', this.sliderFocusOut, this);\n }\n else {\n EventHandler.remove(this.firstBtn, 'mouseleave touchleave', this.buttonFocusOut);\n EventHandler.remove(this.secondBtn, 'mouseleave touchleave', this.buttonFocusOut);\n EventHandler.remove(this.firstBtn, 'mousedown touchstart', this.repeatHandlerMouse);\n EventHandler.remove(this.firstBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp);\n EventHandler.remove(this.secondBtn, 'mousedown touchstart', this.repeatHandlerMouse);\n EventHandler.remove(this.secondBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp);\n EventHandler.remove(this.firstBtn, 'focusout', this.sliderFocusOut);\n EventHandler.remove(this.secondBtn, 'focusout', this.sliderFocusOut);\n }\n };\n Slider.prototype.rangeBarMousedown = function (event) {\n var _a, _b;\n event.preventDefault();\n this.focusSliderElement();\n if (this.type === 'Range' && this.drag && event.target === this.rangeBar) {\n var xPostion = void 0;\n var yPostion = void 0;\n if (event.type === 'mousedown') {\n _a = [event.clientX, event.clientY], xPostion = _a[0], yPostion = _a[1];\n }\n else if (event.type === 'touchstart') {\n _b = [event.changedTouches[0].clientX, event.changedTouches[0].clientY], xPostion = _b[0], yPostion = _b[1];\n }\n if (this.orientation === 'Horizontal') {\n this.firstPartRemain = xPostion - this.rangeBar.getBoundingClientRect().left;\n this.secondPartRemain = this.rangeBar.getBoundingClientRect().right - xPostion;\n }\n else {\n this.firstPartRemain = yPostion - this.rangeBar.getBoundingClientRect().top;\n this.secondPartRemain = this.rangeBar.getBoundingClientRect().bottom - yPostion;\n }\n this.minDiff = this.handleVal2 - this.handleVal1;\n this.tooltipToggle(this.rangeBar);\n var focusedElement = this.element.querySelector('.' + classNames.sliderTabHandle);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.sliderTabHandle);\n }\n EventHandler.add(document, 'mousemove touchmove', this.dragRangeBarMove, this);\n EventHandler.add(document, 'mouseup touchend', this.dragRangeBarUp, this);\n }\n };\n Slider.prototype.elementClick = function (event) {\n if (this.isDragComplete) {\n this.isDragComplete = false;\n return;\n }\n event.preventDefault();\n this.focusSliderElement();\n this.sliderBarClick(event);\n this.focusHandle();\n };\n Slider.prototype.wireEvents = function () {\n this.onresize = this.reposition.bind(this);\n window.addEventListener('resize', this.onresize);\n if (this.enabled && !this.readonly) {\n EventHandler.add(this.element, 'click', this.elementClick, this);\n if (this.type === 'Range' && this.drag) {\n EventHandler.add(this.rangeBar, 'mousedown touchstart', this.rangeBarMousedown, this);\n }\n EventHandler.add(this.sliderContainer, 'keydown', this.keyDown, this);\n EventHandler.add(this.sliderContainer, 'keyup', this.keyUp, this);\n EventHandler.add(this.element, 'focusout', this.sliderFocusOut, this);\n EventHandler.add(this.sliderContainer, 'mouseover mouseout touchstart touchend', this.hover, this);\n this.wireFirstHandleEvt(false);\n if (this.type === 'Range') {\n this.wireSecondHandleEvt(false);\n }\n if (this.showButtons) {\n this.wireButtonEvt(false);\n }\n this.wireMaterialTooltipEvent(false);\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n }\n };\n Slider.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.elementClick);\n if (this.type === 'Range' && this.drag) {\n EventHandler.remove(this.rangeBar, 'mousedown touchstart', this.rangeBarMousedown);\n }\n EventHandler.remove(this.sliderContainer, 'keydown', this.keyDown);\n EventHandler.remove(this.sliderContainer, 'keyup', this.keyUp);\n EventHandler.remove(this.element, 'focusout', this.sliderFocusOut);\n EventHandler.remove(this.sliderContainer, 'mouseover mouseout touchstart touchend', this.hover);\n this.wireFirstHandleEvt(true);\n if (this.type === 'Range') {\n this.wireSecondHandleEvt(true);\n }\n if (this.showButtons) {\n this.wireButtonEvt(true);\n }\n this.wireMaterialTooltipEvent(true);\n EventHandler.remove(this.element, 'reset', this.formResetHandler);\n };\n Slider.prototype.formResetHandler = function () {\n this.setProperties({ 'value': this.formResetValue }, true);\n this.setValue();\n };\n Slider.prototype.keyUp = function (event) {\n if (event.keyCode === 9 && event.target.classList.contains(classNames.sliderHandle)) {\n this.focusSliderElement();\n if (!event.target.classList.contains(classNames.sliderTabHandle)) {\n if (this.element.querySelector('.' + classNames.sliderTabHandle)) {\n this.element.querySelector('.' + classNames.sliderTabHandle).classList.remove(classNames.sliderTabHandle);\n }\n event.target.classList.add(classNames.sliderTabHandle);\n var parentElement = event.target.parentElement;\n if (parentElement === this.element) {\n parentElement.querySelector('.' + classNames.sliderTrack).classList.add(classNames.sliderTabTrack);\n if (this.type === 'Range' || this.type === 'MinRange') {\n parentElement.querySelector('.' + classNames.rangeBar).classList.add(classNames.sliderTabRange);\n }\n }\n if (this.type === 'Range') {\n (event.target.previousSibling).classList.contains(classNames.sliderHandle) ?\n this.activeHandle = 2 : this.activeHandle = 1;\n }\n this.getHandle().focus();\n this.tooltipToggle(this.getHandle());\n }\n }\n this.closeTooltip();\n this.changeEvent('changed', event);\n };\n Slider.prototype.hover = function (event) {\n if (!isNullOrUndefined(event)) {\n if (event.type === 'mouseover' || event.type === 'touchmove' || event.type === 'mousemove' ||\n event.type === 'pointermove' || event.type === 'touchstart') {\n this.sliderContainer.classList.add(classNames.sliderHover);\n }\n else {\n this.sliderContainer.classList.remove(classNames.sliderHover);\n var curTarget = event.currentTarget;\n if (this.tooltip.isVisible && this.tooltip.showOn !== 'Always' && this.tooltipObj && this.isMaterialTooltip &&\n !curTarget.classList.contains(classNames.sliderHandleFocused) &&\n !curTarget.classList.contains(classNames.sliderTabHandle)) {\n this.closeMaterialTooltip();\n }\n }\n }\n };\n Slider.prototype.sliderFocusOut = function (event) {\n if (event.relatedTarget !== this.secondHandle && event.relatedTarget !== this.firstHandle &&\n event.relatedTarget !== this.element && event.relatedTarget !== this.firstBtn && event.relatedTarget !== this.secondBtn) {\n this.closeMaterialTooltip();\n this.closeTooltip();\n if (this.element.querySelector('.' + classNames.sliderTabHandle)) {\n this.element.querySelector('.' + classNames.sliderTabHandle).classList.remove(classNames.sliderTabHandle);\n }\n if (this.element.querySelector('.' + classNames.sliderTabTrack)) {\n this.element.querySelector('.' + classNames.sliderTabTrack).classList.remove(classNames.sliderTabTrack);\n if ((this.type === 'Range' || this.type === 'MinRange') &&\n this.element.querySelector('.' + classNames.sliderTabRange)) {\n this.element.querySelector('.' + classNames.sliderTabRange).classList.remove(classNames.sliderTabRange);\n }\n }\n this.hiddenInput.focus();\n this.hiddenInput.blur();\n this.isElementFocused = false;\n }\n };\n Slider.prototype.removeElement = function (element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n };\n Slider.prototype.changeSliderType = function (type, args) {\n if (this.isMaterialTooltip && this.materialHandle) {\n this.sliderContainer.classList.remove(classNames.materialSlider);\n this.removeElement(this.materialHandle);\n this.materialHandle = undefined;\n }\n this.removeElement(this.firstHandle);\n this.firstHandle = undefined;\n if (type !== 'Default') {\n if (type === 'Range') {\n this.removeElement(this.secondHandle);\n this.secondHandle = undefined;\n }\n this.removeElement(this.rangeBar);\n this.rangeBar = undefined;\n }\n if (this.tooltip.isVisible && !isNullOrUndefined(this.tooltipObj)) {\n this.tooltipObj.destroy();\n this.tooltipElement = undefined;\n this.tooltipCollidedPosition = undefined;\n }\n if (this.limits.enabled) {\n if (type === 'MinRange' || type === 'Default') {\n if (!isNullOrUndefined(this.limitBarFirst)) {\n this.removeElement(this.limitBarFirst);\n this.limitBarFirst = undefined;\n }\n }\n else {\n if (!isNullOrUndefined(this.limitBarSecond)) {\n this.removeElement(this.limitBarSecond);\n this.limitBarSecond = undefined;\n }\n }\n }\n this.activeHandle = 1;\n this.getThemeInitialization();\n if (this.type === 'Range') {\n this.rangeValueUpdate();\n }\n this.createRangeBar();\n if (this.limits.enabled) {\n this.createLimitBar();\n }\n this.setHandler();\n this.setOrientClass();\n this.wireFirstHandleEvt(false);\n if (this.type === 'Range') {\n this.wireSecondHandleEvt(false);\n }\n this.setValue();\n if (this.tooltip.isVisible) {\n this.renderTooltip();\n this.wireMaterialTooltipEvent(false);\n }\n this.setBarColor();\n if (args !== 'tooltip') {\n this.updateConfig();\n }\n if (this.readonly) {\n this.sliderContainer.classList.remove(classNames.readonly);\n this.setReadOnly();\n }\n };\n Slider.prototype.changeRtl = function () {\n if (!this.enableRtl && this.type === 'Range') {\n this.value = [this.handleVal2, this.handleVal1];\n }\n this.updateConfig();\n if (this.tooltip.isVisible) {\n this.tooltipObj.refresh(this.firstHandle);\n }\n if (this.showButtons) {\n var enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n attributes(enabledRTL ? this.secondBtn : this.firstBtn, { 'aria-label': 'Decrease', title: 'Decrease' });\n attributes(enabledRTL ? this.firstBtn : this.secondBtn, { 'aria-label': 'Increase', title: 'Increase' });\n }\n };\n Slider.prototype.changeOrientation = function () {\n this.changeSliderType(this.type, 'null');\n };\n Slider.prototype.updateConfig = function () {\n this.setEnableRTL();\n this.setValue();\n if (this.tooltip.isVisible) {\n this.refreshTooltip(this.tooltipTarget);\n }\n if (this.ticks.placement !== 'None') {\n if (this.ul) {\n this.removeElement(this.ul);\n this.ul = undefined;\n this.renderScale();\n }\n }\n this.limitsPropertyChange();\n };\n Slider.prototype.limitsPropertyChange = function () {\n if (this.limits.enabled) {\n if (isNullOrUndefined(this.limitBarFirst) && this.type !== 'Range') {\n this.createLimitBar();\n }\n if (isNullOrUndefined(this.limitBarFirst) && isNullOrUndefined(this.limitBarSecond) && this.type === 'Range') {\n this.createLimitBar();\n }\n this.setLimitBar();\n this.setValue();\n }\n else {\n if (!isNullOrUndefined(this.limitBarFirst)) {\n detach(this.limitBarFirst);\n }\n if (!isNullOrUndefined(this.limitBarSecond)) {\n detach(this.limitBarSecond);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @private\n */\n Slider.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it removes the attributes and classes.\n *\n * @method destroy\n * @return {void}\n */\n Slider.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.unwireEvents();\n window.removeEventListener('resize', this.onresize);\n removeClass([this.sliderContainer], [classNames.sliderDisabled]);\n this.firstHandle.removeAttribute('aria-orientation');\n if (this.type === 'Range') {\n this.secondHandle.removeAttribute('aria-orientation');\n }\n this.sliderContainer.parentNode.insertBefore(this.element, this.sliderContainer);\n detach(this.sliderContainer);\n if (this.tooltip.isVisible) {\n this.tooltipObj.destroy();\n }\n this.element.innerHTML = '';\n this.hiddenInput = null;\n this.sliderContainer = null;\n this.sliderTrack = null;\n this.rangeBar = null;\n this.firstHandle = null;\n this.secondHandle = null;\n this.tickElementCollection = null;\n this.ul = null;\n this.firstBtn = null;\n this.secondBtn = null;\n this.materialHandle = null;\n this.tooltipObj = null;\n this.tooltipTarget = null;\n this.limitBarFirst = null;\n this.limitBarSecond = null;\n this.firstChild = null;\n this.lastChild = null;\n this.tooltipElement = null;\n };\n /**\n * Calls internally if any of the property value is changed.\n *\n * @private\n */\n // tslint:disable-next-line\n Slider.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'value':\n if (newProp && oldProp) {\n var value = isNullOrUndefined(newProp.value) ?\n (this.type === 'Range' ? [this.min, this.max] : this.min) : newProp.value;\n this.setProperties({ 'value': value }, true);\n if (!isNullOrUndefined(oldProp.value) && oldProp.value.toString() !== value.toString()) {\n this.setValue();\n this.refreshTooltip(this.tooltipTarget);\n if (this.type === 'Range') {\n if (isNullOrUndefined(newProp.value) || oldProp.value[1] === value[1]) {\n this.activeHandle = 1;\n }\n else {\n this.activeHandle = 2;\n }\n }\n }\n }\n break;\n case 'min':\n case 'step':\n case 'max':\n this.setMinMaxValue();\n break;\n case 'tooltip':\n if (!isNullOrUndefined(newProp.tooltip) && !isNullOrUndefined(oldProp.tooltip)) {\n this.initialTooltip = true;\n this.setTooltip(prop);\n if (!this.showButtons) {\n this.wireEvents();\n }\n }\n break;\n case 'type':\n if (!isNullOrUndefined(oldProp) && Object.keys(oldProp).length\n && !isNullOrUndefined(oldProp.type)) {\n this.changeSliderType(oldProp.type, prop);\n this.setZindex();\n }\n break;\n case 'enableRtl':\n if (oldProp.enableRtl !== newProp.enableRtl && this.orientation !== 'Vertical') {\n this.rtl = oldProp.enableRtl;\n this.changeRtl();\n }\n break;\n case 'limits':\n this.limitsPropertyChange();\n break;\n case 'orientation':\n this.changeOrientation();\n break;\n case 'ticks':\n if (!isNullOrUndefined(this.sliderContainer.querySelector('.' + classNames.scale))) {\n detach(this.ul);\n Array.prototype.forEach.call(this.sliderContainer.classList, function (className) {\n if (className.match(/e-scale-/)) {\n _this.sliderContainer.classList.remove(className);\n }\n });\n }\n if (this.ticks.placement !== 'None') {\n this.renderScale();\n this.setZindex();\n }\n break;\n case 'locale':\n if (this.showButtons) {\n this.buttonTitle();\n }\n break;\n case 'showButtons':\n if (newProp.showButtons) {\n this.setButtons();\n this.reposition();\n if (this.enabled && !this.readonly) {\n this.wireButtonEvt(false);\n }\n }\n else {\n if (this.firstBtn && this.secondBtn) {\n this.sliderContainer.removeChild(this.firstBtn);\n this.sliderContainer.removeChild(this.secondBtn);\n this.sliderContainer.classList.remove(classNames.sliderButtonClass);\n this.firstBtn = undefined;\n this.secondBtn = undefined;\n this.reposition();\n }\n }\n break;\n case 'enabled':\n this.setEnabled();\n break;\n case 'readonly':\n this.setReadOnly();\n break;\n case 'customValues':\n this.setValue();\n this.reposition();\n break;\n case 'colorRange':\n this.reposition();\n break;\n case 'width':\n this.setElementWidth(newProp.width);\n this.setMinMaxValue();\n if (this.limits) {\n this.limitsPropertyChange();\n }\n break;\n }\n }\n };\n Slider.prototype.setReadOnly = function () {\n if (this.readonly) {\n this.unwireEvents();\n this.sliderContainer.classList.add(classNames.readonly);\n }\n else {\n this.wireEvents();\n this.sliderContainer.classList.remove(classNames.readonly);\n }\n };\n Slider.prototype.setMinMaxValue = function () {\n var _this = this;\n this.setValue();\n this.refreshTooltip(this.tooltipTarget);\n if (!isNullOrUndefined(this.sliderContainer.querySelector('.' + classNames.scale))) {\n if (this.ul) {\n detach(this.ul);\n Array.prototype.forEach.call(this.sliderContainer.classList, function (className) {\n if (className.match(/e-scale-/)) {\n _this.sliderContainer.classList.remove(className);\n }\n });\n }\n }\n if (this.ticks.placement !== 'None') {\n this.renderScale();\n this.setZindex();\n }\n };\n Slider.prototype.setZindex = function () {\n this.zIndex = 6;\n if (!isNullOrUndefined(this.ticks) && this.ticks.placement !== 'None' && !isNullOrUndefined(this.ul) && !isNullOrUndefined(this.element)) {\n this.ul.style.zIndex = (this.zIndex + -7) + '';\n this.element.style.zIndex = (this.zIndex + 2) + '';\n }\n if (!this.isMaterial && !this.isMaterial3 && !isNullOrUndefined(this.ticks) && this.ticks.placement === 'Both') {\n this.element.style.zIndex = (this.zIndex + 2) + '';\n }\n if (!isNullOrUndefined(this.firstHandle))\n this.firstHandle.style.zIndex = (this.zIndex + 3) + '';\n if (this.type === 'Range' && !isNullOrUndefined(this.secondHandle)) {\n this.secondHandle.style.zIndex = (this.zIndex + 4) + '';\n }\n };\n Slider.prototype.setTooltip = function (args) {\n this.changeSliderType(this.type, args);\n };\n Slider.prototype.setBarColor = function () {\n var trackPosition;\n var trackClassName;\n var child = this.sliderTrack.lastElementChild;\n while (child) {\n this.sliderTrack.removeChild(child);\n child = this.sliderTrack.lastElementChild;\n }\n for (var i = 0; i < this.colorRange.length; i++) {\n if (!isNullOrUndefined(this.colorRange[i].start) && !isNullOrUndefined(this.colorRange[i].end)) {\n if (this.colorRange[i].end > this.colorRange[i].start) {\n if (this.colorRange[i].start < this.min) {\n this.colorRange[i].start = this.min;\n }\n if (this.colorRange[i].end > this.max) {\n this.colorRange[i].end = this.max;\n }\n var startingPosition = this.checkHandlePosition(this.colorRange[i].start);\n var endPosition = this.checkHandlePosition(this.colorRange[i].end);\n var trackContainer = this.createElement('div');\n trackContainer.style.backgroundColor = this.colorRange[i].color;\n trackContainer.style.border = '1px solid ' + this.colorRange[i].color;\n if (this.orientation === 'Horizontal') {\n trackClassName = classNames.sliderHorizantalColor;\n if (this.enableRtl) {\n if (isNullOrUndefined(this.customValues)) {\n trackPosition = this.checkHandlePosition(this.max) - this.checkHandlePosition(this.colorRange[i].end);\n }\n else {\n trackPosition = this.checkHandlePosition(this.customValues.length - this.colorRange[i].end - 1);\n }\n }\n else {\n trackPosition = this.checkHandlePosition(this.colorRange[i].start);\n }\n trackContainer.style.width = endPosition - startingPosition + 'px';\n trackContainer.style.left = trackPosition + 'px';\n }\n else {\n trackClassName = classNames.sliderVerticalColor;\n trackPosition = this.checkHandlePosition(this.colorRange[i].start);\n trackContainer.style.height = endPosition - startingPosition + 'px';\n trackContainer.style.bottom = trackPosition + 'px';\n }\n trackContainer.classList.add(trackClassName);\n this.sliderTrack.appendChild(trackContainer);\n }\n }\n }\n };\n /**\n * Gets the component name\n *\n * @private\n */\n Slider.prototype.getModuleName = function () {\n return 'slider';\n };\n __decorate([\n Property(null)\n ], Slider.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], Slider.prototype, \"customValues\", void 0);\n __decorate([\n Property(1)\n ], Slider.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], Slider.prototype, \"width\", void 0);\n __decorate([\n Property(0)\n ], Slider.prototype, \"min\", void 0);\n __decorate([\n Property(100)\n ], Slider.prototype, \"max\", void 0);\n __decorate([\n Property(false)\n ], Slider.prototype, \"readonly\", void 0);\n __decorate([\n Property('Default')\n ], Slider.prototype, \"type\", void 0);\n __decorate([\n Collection([{}], ColorRangeData)\n ], Slider.prototype, \"colorRange\", void 0);\n __decorate([\n Complex({}, TicksData)\n ], Slider.prototype, \"ticks\", void 0);\n __decorate([\n Complex({}, LimitData)\n ], Slider.prototype, \"limits\", void 0);\n __decorate([\n Property(true)\n ], Slider.prototype, \"enabled\", void 0);\n __decorate([\n Complex({}, TooltipData)\n ], Slider.prototype, \"tooltip\", void 0);\n __decorate([\n Property(false)\n ], Slider.prototype, \"showButtons\", void 0);\n __decorate([\n Property(true)\n ], Slider.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property('Horizontal')\n ], Slider.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Slider.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Slider.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"changed\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"renderingTicks\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"renderedTicks\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"tooltipChange\", void 0);\n Slider = __decorate([\n NotifyPropertyChanges\n ], Slider);\n return Slider;\n}(Component));\nexport { Slider };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable prefer-spread */\nimport { Component, Event, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { Browser, closest, detach, EventHandler, getInstance, select, selectAll, formatUnit } from '@syncfusion/ej2-base';\nimport { addClass, attributes, classList, isNullOrUndefined, L10n } from '@syncfusion/ej2-base';\nimport { remove, removeClass, rippleEffect } from '@syncfusion/ej2-base';\nimport { SplitButton, getModel } from '@syncfusion/ej2-splitbuttons';\nimport { Deferred } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip, getZindexPartial, Popup, isCollide } from '@syncfusion/ej2-popups';\nimport { Input } from './../input/index';\nimport { NumericTextBox } from './../numerictextbox/index';\nimport { Slider } from './../slider/slider';\nvar APPLY = 'e-apply';\nvar CANCEL = 'e-cancel';\nvar CURRENT = 'e-current';\nvar CONTAINER = 'e-container';\nvar CTRLBTN = 'e-ctrl-btn';\nvar CTRLSWITCH = 'e-switch-ctrl-btn';\nvar DISABLED = 'e-disabled';\nvar FORMATSWITCH = 'e-value-switch-btn';\nvar HANDLER = 'e-handler';\nvar HEX = 'e-hex';\nvar HIDEHEX = 'e-hide-hex-value';\nvar HIDEOPACITY = 'e-hide-opacity';\nvar HIDERGBA = 'e-hide-switchable-value';\nvar HIDEVALUE = 'e-hide-value';\nvar HIDEVALUESWITCH = 'e-hide-valueswitcher';\nvar HSVAREA = 'e-hsv-color';\nvar HSVCONTAINER = 'e-hsv-container';\nvar INPUTWRAPPER = 'e-selected-value';\nvar MODESWITCH = 'e-mode-switch-btn';\nvar NOCOLOR = 'e-nocolor-item';\nvar OPACITY = 'e-opacity-value';\nvar PALETTES = 'e-palette';\nvar PALETTECONTENT = 'e-color-palette';\nvar PICKERCONTENT = 'e-color-picker';\nvar PREVIEW = 'e-preview-container';\nvar PREVIOUS = 'e-previous';\nvar RTL = 'e-rtl';\nvar SHOWVALUE = 'e-show-value';\nvar SELECT = 'e-selected';\nvar SPLITPREVIEW = 'e-split-preview';\nvar TILE = 'e-tile';\nvar presets = {\n default: ['#000000', '#f44336', '#e91e63', '#9c27b0', '#673ab7', '#2196f3', '#03a9f4', '#00bcd4', '#009688', '#ffeb3b',\n '#ffffff', '#ffebee', '#fce4ec', '#f3e5f5', '#ede7f6', '#e3f2fd', '#e1f5fe', '#e0f7fa', '#e0f2f1', '#fffde7',\n '#f2f2f2', '#ffcdd2', '#f8bbd0', '#e1bee7', '#d1c4e9', '#bbdefb', '#b3e5fc', '#b2ebf2', '#b2dfdb', '#fff9c4',\n '#e6e6e6', '#ef9a9a', '#f48fb1', '#ce93d8', '#b39ddb', '#90caf9', '#81d4fa', '#80deea', '#80cbc4', '#fff59d',\n '#cccccc', '#e57373', '#f06292', '#ba68c8', '#9575cd', '#64b5f6', '#4fc3f7', '#4dd0e1', '#4db6ac', '#fff176',\n '#b3b3b3', '#ef5350', '#ec407a', '#ab47bc', '#7e57c2', '#42a5f5', '#29b6f6', '#26c6da', '#26a69a', '#ffee58',\n '#999999', '#e53935', '#d81b60', '#8e24aa', '#5e35b1', '#1e88e5', '#039be5', '#00acc1', '#00897b', '#fdd835',\n '#808080', '#d32f2f', '#c2185b', '#7b1fa2', '#512da8', '#1976d2', '#0288d1', '#0097a7', '#00796b', '#fbc02d',\n '#666666', '#c62828', '#ad1457', '#6a1b9a', '#4527a0', '#1565c0', '#0277bd', '#00838f', '#00695c', '#f9a825',\n '#4d4d4d', '#b71c1c', '#880e4f', '#4a148c', '#311b92', '#0d47a1', '#01579b', '#006064', '#004d40', '#f57f17']\n};\n/**\n * ColorPicker component is a user interface to select and adjust color values. It provides supports for various\n * color specification like Red Green Blue, Hue Saturation Value and Hex codes.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar ColorPicker = /** @class */ (function (_super) {\n __extends(ColorPicker, _super);\n function ColorPicker(options, element) {\n return _super.call(this, options, element) || this;\n }\n ColorPicker.prototype.preRender = function () {\n var ele = this.element;\n this.formElement = closest(this.element, 'form');\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n var localeText = { Apply: 'Apply', Cancel: 'Cancel', ModeSwitcher: 'Switch Mode' };\n this.l10n = new L10n('colorpicker', localeText, this.locale);\n if (ele.getAttribute('ejs-for') && !ele.getAttribute('name')) {\n ele.setAttribute('name', ele.id);\n }\n };\n /**\n * To Initialize the component rendering\n *\n * @private\n * @returns {void}\n */\n ColorPicker.prototype.render = function () {\n this.initWrapper();\n if (this.inline) {\n this.createWidget();\n }\n else {\n this.createSplitBtn();\n }\n if (!this.enableOpacity) {\n addClass([this.container.parentElement], HIDEOPACITY);\n }\n this.renderComplete();\n };\n ColorPicker.prototype.initWrapper = function () {\n var wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n this.element.parentNode.insertBefore(wrapper, this.element);\n wrapper.appendChild(this.element);\n attributes(this.element, { 'tabindex': '-1', 'spellcheck': 'false', 'aria-label': 'colorpicker' });\n this.container = this.createElement('div', { className: CONTAINER });\n this.getWrapper().appendChild(this.container);\n var value = this.value ? this.roundValue(this.value).toLowerCase() : '#008000ff';\n if (this.noColor && this.mode === 'Palette' && this.value === '') {\n value = '';\n }\n var slicedValue = value.slice(0, 7);\n if (isNullOrUndefined(this.initialInputValue)) {\n this.initialInputValue = slicedValue;\n }\n this.element.value = slicedValue;\n if (this.enableOpacity) {\n this.setProperties({ 'value': value }, true);\n }\n else {\n this.setProperties({ 'value': slicedValue }, true);\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.tileRipple = rippleEffect(this.container, { selector: '.' + TILE });\n this.ctrlBtnRipple = rippleEffect(this.container, { selector: '.e-btn' });\n };\n ColorPicker.prototype.getWrapper = function () {\n return this.element.parentElement;\n };\n ColorPicker.prototype.createWidget = function () {\n if (this.mode === 'Palette') {\n this.createPalette();\n if (!this.inline) {\n this.firstPaletteFocus();\n }\n }\n else {\n this.createPicker();\n if (!this.inline) {\n this.getDragHandler().focus();\n }\n }\n this.isRgb = true;\n this.createInput();\n this.createCtrlBtn();\n if (!this.disabled) {\n this.wireEvents();\n }\n if (this.inline && this.disabled) {\n this.toggleDisabled(true);\n }\n if (Browser.isDevice) {\n this.refreshPopupPos();\n }\n };\n ColorPicker.prototype.createSplitBtn = function () {\n var _this = this;\n var splitButton = this.createElement('button', { className: 'e-split-colorpicker' });\n this.getWrapper().appendChild(splitButton);\n this.splitBtn = new SplitButton({\n iconCss: 'e-selected-color',\n target: this.container,\n disabled: this.disabled,\n enableRtl: this.enableRtl,\n createPopupOnClick: this.createPopupOnClick,\n open: this.onOpen.bind(this),\n click: function () {\n var ev = new MouseEvent('click', { bubbles: true, cancelable: false });\n _this.trigger('change', {\n currentValue: { hex: _this.value.slice(0, 7), rgba: _this.convertToRgbString(_this.hexToRgb(_this.value)) },\n previousValue: { hex: null, rgba: null }, value: _this.value, event: ev\n });\n }\n });\n this.splitBtn.createElement = this.createElement;\n this.splitBtn.appendTo(splitButton);\n var preview = this.createElement('span', { className: SPLITPREVIEW });\n select('.e-selected-color', splitButton).appendChild(preview);\n preview.style.backgroundColor = this.convertToRgbString(this.hexToRgb(this.value));\n var popupEle = this.getPopupEle();\n addClass([popupEle], 'e-colorpicker-popup');\n if (this.cssClass) {\n addClass([popupEle], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (Browser.isDevice && !this.createPopupOnClick) {\n var popupInst = this.getPopupInst();\n popupInst.relateTo = document.body;\n popupInst.position = { X: 'center', Y: 'center' };\n popupInst.targetType = 'container';\n popupInst.collision = { X: 'fit', Y: 'fit' };\n popupInst.offsetY = 4;\n popupEle.style.zIndex = getZindexPartial(this.splitBtn.element).toString();\n }\n this.bindCallBackEvent();\n };\n ColorPicker.prototype.onOpen = function () {\n this.trigger('open', { element: this.container });\n if (!Browser.isDevice) {\n var popupInst = this.getPopupInst();\n var collision = isCollide(popupInst.element);\n if (collision.length > 0) {\n popupInst.collision = { X: 'flip', Y: 'fit' };\n popupInst.position = { X: 'right', Y: 'bottom' };\n popupInst.targetType = 'container';\n }\n }\n };\n ColorPicker.prototype.getPopupInst = function () {\n return getInstance(this.getPopupEle(), Popup);\n };\n ColorPicker.prototype.bindCallBackEvent = function () {\n var _this = this;\n this.splitBtn.beforeOpen = function (args) {\n var callBackPromise = new Deferred();\n _this.trigger('beforeOpen', args, function (observeOpenArgs) {\n if (!observeOpenArgs.cancel) {\n var popupEle = _this.getPopupEle();\n popupEle.style.top = formatUnit(0 + pageYOffset);\n popupEle.style.left = formatUnit(0 + pageXOffset);\n popupEle.style.display = 'block';\n _this.createWidget();\n popupEle.style.display = '';\n if (Browser.isDevice) {\n if (_this.createPopupOnClick) {\n var popupInst = _this.getPopupInst();\n popupInst.relateTo = document.body;\n popupInst.position = { X: 'center', Y: 'center' };\n popupInst.targetType = 'container';\n popupInst.collision = { X: 'fit', Y: 'fit' };\n popupInst.offsetY = 4;\n popupEle.style.zIndex = getZindexPartial(_this.splitBtn.element).toString();\n }\n _this.modal = _this.createElement('div');\n _this.modal.className = 'e-' + _this.getModuleName() + ' e-modal';\n _this.modal.style.display = 'none';\n document.body.insertBefore(_this.modal, popupEle);\n document.body.className += ' e-colorpicker-overflow';\n _this.modal.style.display = 'block';\n _this.modal.style.zIndex = (Number(popupEle.style.zIndex) - 1).toString();\n }\n }\n args.cancel = observeOpenArgs.cancel;\n callBackPromise.resolve(observeOpenArgs);\n });\n return callBackPromise;\n };\n this.splitBtn.beforeClose = function (args) {\n var callBackPromise = new Deferred();\n if (!isNullOrUndefined(args.event)) {\n var beforeCloseArgs = { element: _this.container, event: args.event, cancel: false };\n _this.trigger('beforeClose', beforeCloseArgs, function (observedCloseArgs) {\n if (Browser.isDevice && args.event.target === _this.modal) {\n observedCloseArgs.cancel = true;\n }\n if (!observedCloseArgs.cancel) {\n _this.onPopupClose();\n }\n args.cancel = observedCloseArgs.cancel;\n callBackPromise.resolve(observedCloseArgs);\n });\n }\n else {\n callBackPromise.resolve(args);\n }\n return callBackPromise;\n };\n };\n ColorPicker.prototype.onPopupClose = function () {\n this.unWireEvents();\n this.destroyOtherComp();\n this.container.style.width = '';\n select('.' + SPLITPREVIEW, this.splitBtn.element).style.backgroundColor\n = this.convertToRgbString(this.hexToRgb(this.value));\n this.container.innerHTML = '';\n removeClass([this.container], [PICKERCONTENT, PALETTECONTENT]);\n if (Browser.isDevice && this.modal) {\n removeClass([document.body], 'e-colorpicker-overflow');\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n };\n ColorPicker.prototype.createPalette = function () {\n classList(this.container, [PALETTECONTENT], [PICKERCONTENT]);\n if (this.presetColors) {\n var paletteGroup = this.createElement('div', { className: 'e-custom-palette' });\n this.appendElement(paletteGroup);\n var keys = Object.keys(this.presetColors);\n if (keys.length === 1) {\n this.appendPalette(this.presetColors[keys[0]], keys[0], paletteGroup);\n }\n else {\n for (var i = 0, len = keys.length; i < len; i++) {\n this.appendPalette(this.presetColors[keys[i]], keys[i], paletteGroup);\n }\n }\n if (selectAll('.e-row', paletteGroup).length > 10) {\n addClass([paletteGroup], 'e-palette-group');\n }\n }\n else {\n this.appendPalette(presets.default, 'default');\n }\n if (this.mode === 'Palette' && !this.modeSwitcher && this.noColor) {\n this.setNoColor();\n }\n var width = parseInt(getComputedStyle(this.container).borderBottomWidth, 10);\n this.container.style.width = formatUnit(this.container.children[0].offsetWidth + width + width);\n this.rgb = this.hexToRgb(this.roundValue(this.value));\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n };\n ColorPicker.prototype.firstPaletteFocus = function () {\n if (!select('.' + SELECT, this.container.children[0])) {\n selectAll('.' + PALETTES, this.container)[0].focus();\n }\n };\n ColorPicker.prototype.appendPalette = function (colors, key, refEle) {\n var palette = this.createElement('div', { className: PALETTES, attrs: { 'tabindex': '0', 'role': 'grid' } });\n if (refEle) {\n refEle.appendChild(palette);\n }\n else {\n this.appendElement(palette);\n }\n var row;\n var tile;\n var roundedColor;\n for (var i = 0, len = colors.length; i < len; i++) {\n if (i === 0 || i % this.columns === 0) {\n row = this.createElement('div', {\n className: 'e-row', attrs: { 'role': 'row' }\n });\n palette.appendChild(row);\n }\n roundedColor = this.roundValue(colors[i]).toLowerCase();\n tile = this.createElement('span', {\n className: TILE, attrs: { 'role': 'gridcell', 'aria-label': roundedColor, 'aria-selected': 'false', 'tabindex': '0' }\n });\n this.trigger('beforeTileRender', { element: tile, presetName: key, value: colors[i] });\n row.appendChild(tile);\n if (this.value === roundedColor) {\n this.addTileSelection(tile);\n palette.focus();\n }\n tile.style.backgroundColor = this.convertToRgbString(this.hexToRgb(roundedColor));\n }\n };\n ColorPicker.prototype.setNoColor = function () {\n var noColorEle = this.container.querySelector('.e-row').children[0];\n noColorEle.classList.add(NOCOLOR);\n if (!this.value) {\n noColorEle.classList.add(SELECT);\n closest(noColorEle, '.' + PALETTES).focus();\n }\n ['aria-selected', 'aria-label'].forEach(function (attr) { noColorEle.removeAttribute(attr); });\n noColorEle.style.backgroundColor = '';\n };\n ColorPicker.prototype.appendElement = function (ele, insertPos) {\n if (insertPos === void 0) { insertPos = 0; }\n var refEle = this.container.children[insertPos];\n if (refEle) {\n this.container.insertBefore(ele, refEle);\n }\n else {\n this.container.appendChild(ele);\n }\n };\n ColorPicker.prototype.addTileSelection = function (ele) {\n ele.classList.add(SELECT);\n ele.setAttribute('aria-selected', 'true');\n };\n ColorPicker.prototype.createPicker = function () {\n classList(this.container, [PICKERCONTENT], [PALETTECONTENT]);\n var hsvContainer = this.createElement('div', { className: HSVCONTAINER });\n this.appendElement(hsvContainer);\n hsvContainer.appendChild(this.createElement('div', { className: HSVAREA }));\n var dragHandler = this.createElement('span', { className: HANDLER, attrs: { 'tabindex': '0' } });\n hsvContainer.appendChild(dragHandler);\n if (this.value === null || this.value === '') {\n this.value = '#008000ff';\n }\n this.rgb = this.hexToRgb(this.value);\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n this.setHsvContainerBg();\n this.setHandlerPosition();\n this.createSlider();\n this.createDragTooltip();\n };\n ColorPicker.prototype.setHsvContainerBg = function (h) {\n if (h === void 0) { h = this.hsv[0]; }\n this.getHsvContainer().style.backgroundColor = this.convertToRgbString(this.hsvToRgb(h, 100, 100, 1));\n };\n ColorPicker.prototype.getHsvContainer = function () {\n return select('.' + HSVCONTAINER, this.container);\n };\n ColorPicker.prototype.setHandlerPosition = function () {\n var dragHandler = this.getDragHandler();\n var hsvArea = select('.' + HSVAREA, this.container);\n if (this.enableRtl) {\n dragHandler.style.left = formatUnit(hsvArea.offsetWidth * Math.abs(100 - this.hsv[1]) / 100);\n }\n else {\n dragHandler.style.left = formatUnit(hsvArea.offsetWidth * this.hsv[1] / 100);\n }\n dragHandler.style.top = formatUnit(hsvArea.offsetHeight * (100 - this.hsv[2]) / 100);\n };\n ColorPicker.prototype.createSlider = function () {\n var sliderPreviewWrapper = this.createElement('div', { className: 'e-slider-preview' });\n this.appendElement(sliderPreviewWrapper, 1);\n this.createPreview(sliderPreviewWrapper);\n var sliderWrapper = this.createElement('div', { className: 'e-colorpicker-slider' });\n sliderPreviewWrapper.insertBefore(sliderWrapper, sliderPreviewWrapper.children[0]);\n var slider = this.createElement('div', { className: 'e-hue-slider' });\n sliderWrapper.appendChild(slider);\n this.hueSlider = new Slider({\n value: this.hsv[0],\n min: 0,\n max: 359,\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n change: this.hueChange.bind(this)\n });\n this.hueSlider.createElement = this.createElement;\n this.hueSlider.appendTo(slider);\n if (this.enableOpacity) {\n slider = this.createElement('div', { className: 'e-opacity-slider' });\n sliderWrapper.appendChild(slider);\n this.createOpacitySlider(slider);\n }\n };\n ColorPicker.prototype.createOpacitySlider = function (slider) {\n this.opacitySlider = new Slider({\n value: this.rgb[3] * 100,\n min: 0,\n max: 100,\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n change: this.opacityChange.bind(this)\n });\n this.opacitySlider.createElement = this.createElement;\n this.opacitySlider.appendTo(slider);\n var opacityBgTrack = this.createElement('div', { className: 'e-opacity-empty-track' });\n slider.appendChild(opacityBgTrack);\n this.updateOpacitySliderBg();\n };\n ColorPicker.prototype.updateOpacitySliderBg = function () {\n var direction = this.enableRtl ? 'to left' : 'to right';\n var opacityEle = select('.e-opacity-empty-track', this.opacitySlider.element);\n if (opacityEle) {\n opacityEle.style.background =\n 'linear-gradient(' + direction + ', rgba(' + this.rgb.slice(0, 3) + ', 0) 0%, ' +\n this.convertToRgbString(this.rgb.slice(0, 3)) + ' 100%)';\n }\n };\n ColorPicker.prototype.hueChange = function (args) {\n this.hsv[0] = args.value;\n this.setHsvContainerBg();\n this.convertToOtherFormat();\n };\n ColorPicker.prototype.opacityChange = function (args) {\n var value = args.value;\n var pValue = this.rgbToHex(this.rgb);\n this.hsv[3] = value / 100;\n this.rgb[3] = value / 100;\n var cValue = this.rgbToHex(this.rgb);\n this.updateOpacityInput(value);\n var rgb = this.convertToRgbString(this.rgb);\n this.updatePreview(rgb);\n this.triggerEvent(cValue, pValue, rgb);\n };\n ColorPicker.prototype.updateOpacityInput = function (value) {\n if (this.enableOpacity && !this.getWrapper().classList.contains(HIDEVALUE)) {\n var opacityTextBoxInst = getInstance(select('.' + OPACITY, this.container), NumericTextBox);\n opacityTextBoxInst.value = value;\n opacityTextBoxInst.dataBind();\n }\n };\n ColorPicker.prototype.createPreview = function (parentEle) {\n var previewContainer = this.createElement('div', { className: PREVIEW });\n parentEle.appendChild(previewContainer);\n var preview = this.createElement('span', { className: 'e-preview ' + CURRENT });\n previewContainer.appendChild(preview);\n var colorValue = this.convertToRgbString(this.rgb);\n preview.style.backgroundColor = colorValue;\n preview = this.createElement('span', { className: 'e-preview ' + PREVIOUS });\n previewContainer.appendChild(preview);\n preview.style.backgroundColor = colorValue;\n };\n ColorPicker.prototype.isPicker = function () {\n return !this.container.classList.contains(PALETTECONTENT);\n };\n ColorPicker.prototype.getPopupEle = function () {\n return this.container.parentElement;\n };\n ColorPicker.prototype.createNumericInput = function (element, value, label, max) {\n var _this = this;\n var numericInput = new NumericTextBox({\n value: value,\n placeholder: label,\n min: 0,\n max: max,\n format: '###.##',\n showSpinButton: false,\n floatLabelType: 'Always',\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n readonly: this.isPicker() ? false : true,\n change: function (args) {\n if (args.event) {\n _this.inputHandler(args.event);\n }\n }\n });\n numericInput.createElement = this.createElement;\n numericInput.appendTo(element);\n };\n ColorPicker.prototype.createInput = function () {\n var isPicker = this.isPicker();\n var wrapper = this.getWrapper();\n if ((isPicker && !wrapper.classList.contains(HIDEVALUE)) || (!isPicker && wrapper.classList.contains(SHOWVALUE))) {\n var inputWrap = this.createElement('div', { className: INPUTWRAPPER });\n if (isPicker) {\n this.appendElement(inputWrap, 2);\n }\n else {\n this.appendElement(inputWrap, 1);\n }\n var container = this.createElement('div', { className: 'e-input-container' });\n inputWrap.appendChild(container);\n if (!wrapper.classList.contains(HIDEVALUESWITCH)) {\n this.appendValueSwitchBtn(inputWrap);\n }\n if (!wrapper.classList.contains(HIDEHEX)) {\n var hexInput = this.createElement('input', {\n className: HEX,\n attrs: { 'maxlength': '7', 'spellcheck': 'false', 'aria-label': 'HEX' }\n });\n container.appendChild(hexInput);\n Input.createInput({\n element: hexInput,\n floatLabelType: 'Always',\n properties: {\n placeholder: 'HEX',\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n readonly: this.isPicker() ? false : true\n }\n }, this.createElement);\n Input.setValue(this.value.slice(0, 7), hexInput);\n hexInput.addEventListener('input', this.inputHandler.bind(this));\n }\n if (!wrapper.classList.contains(HIDERGBA)) {\n var label = void 0;\n var value = void 0;\n if (this.isRgb) {\n label = 'RGB';\n value = this.rgb;\n }\n else {\n label = 'HSV';\n value = this.hsv;\n }\n var clsName = ['rh', 'gs', 'bv'];\n for (var i = 0; i < 3; i++) {\n this.createNumericInput(container.appendChild(this.createElement('input', { className: 'e-' + clsName[i] + '-value' })), value[i], label[i], 255);\n }\n if (this.enableOpacity) {\n this.appendOpacityValue(container);\n }\n }\n }\n };\n ColorPicker.prototype.appendOpacityValue = function (container) {\n this.createNumericInput(container.appendChild(this.createElement('input', { className: OPACITY })), this.rgb[3] * 100, 'A', 100);\n };\n ColorPicker.prototype.appendValueSwitchBtn = function (targetEle) {\n var valueSwitchBtn = this.createElement('button', {\n className: 'e-icons e-css e-btn e-flat e-icon-btn ' + FORMATSWITCH,\n attrs: { 'title': 'Toggle format' }\n });\n targetEle.appendChild(valueSwitchBtn);\n if (this.isPicker() && !this.getWrapper().classList.contains(HIDERGBA)) {\n valueSwitchBtn.addEventListener('click', this.formatSwitchHandler.bind(this));\n }\n };\n ColorPicker.prototype.createCtrlBtn = function () {\n if (this.modeSwitcher || this.showButtons) {\n this.l10n.setLocale(this.locale);\n var btnWrapper = this.createElement('div', { className: CTRLSWITCH });\n this.container.appendChild(btnWrapper);\n if (this.showButtons) {\n var controlBtnWrapper = this.createElement('div', { className: CTRLBTN });\n btnWrapper.appendChild(controlBtnWrapper);\n var apply = this.l10n.getConstant('Apply');\n controlBtnWrapper.appendChild(this.createElement('button', {\n innerHTML: apply,\n className: 'e-btn e-css e-flat e-primary e-small ' + APPLY,\n attrs: { 'title': apply }\n }));\n var cancel = this.l10n.getConstant('Cancel');\n controlBtnWrapper.appendChild(this.createElement('button', {\n innerHTML: cancel,\n className: 'e-btn e-css e-flat e-small ' + CANCEL,\n attrs: { 'title': cancel }\n }));\n }\n if (this.modeSwitcher) {\n this.appendModeSwitchBtn();\n }\n }\n };\n ColorPicker.prototype.appendModeSwitchBtn = function () {\n var modeSwitcher = this.createElement('button', {\n className: 'e-icons e-btn e-flat e-icon-btn ' + MODESWITCH, attrs: { title: this.l10n.getConstant('ModeSwitcher') }\n });\n select('.' + CTRLSWITCH, this.container).insertBefore(modeSwitcher, select('.' + CTRLBTN, this.container));\n };\n ColorPicker.prototype.createDragTooltip = function () {\n var _this = this;\n var tooltip = new Tooltip({\n opensOn: 'Custom',\n showTipPointer: false,\n cssClass: 'e-color-picker-tooltip',\n htmlAttributes: { title: 'tooltip' },\n beforeOpen: function (args) {\n _this.tooltipEle = args.element;\n },\n animation: { open: { effect: 'None' }, close: { effect: 'None' } }\n });\n tooltip.createElement = this.createElement;\n tooltip.appendTo(this.container);\n tooltip.open(this.container);\n this.tooltipEle.style.zIndex = getZindexPartial(this.tooltipEle).toString();\n this.tooltipEle.setAttribute('aria-label', 'colorpicker-tooltip');\n select('.e-tip-content', this.tooltipEle).appendChild(this.createElement('div', { className: 'e-tip-transparent' }));\n };\n ColorPicker.prototype.getTooltipInst = function () {\n return getInstance(this.container, Tooltip);\n };\n ColorPicker.prototype.setTooltipOffset = function (value) {\n this.getTooltipInst().offsetY = value;\n };\n ColorPicker.prototype.toggleDisabled = function (enable) {\n if (enable) {\n this.getWrapper().classList.add(DISABLED);\n }\n else {\n this.getWrapper().classList.remove(DISABLED);\n }\n if (this.showButtons) {\n ([].slice.call(selectAll('.e-btn', this.container))).forEach(function (ele) {\n if (enable) {\n attributes(ele, { 'disabled': '' });\n }\n else {\n ele.removeAttribute('disabled');\n }\n });\n }\n };\n ColorPicker.prototype.convertToRgbString = function (rgb) {\n return rgb.length ? rgb.length === 4 ? 'rgba(' + rgb.join() + ')' : 'rgb(' + rgb.join() + ')' : '';\n };\n ColorPicker.prototype.convertToHsvString = function (hsv) {\n return hsv.length === 4 ? 'hsva(' + hsv.join() + ')' : 'hsv(' + hsv.join() + ')';\n };\n ColorPicker.prototype.updateHsv = function () {\n this.hsv[1] = this.hsv[1] > 100 ? 100 : this.hsv[1];\n this.hsv[2] = this.hsv[2] > 100 ? 100 : this.hsv[2];\n this.setHandlerPosition();\n };\n ColorPicker.prototype.convertToOtherFormat = function (isKey, e) {\n if (isKey === void 0) { isKey = false; }\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hsvToRgb.apply(this, this.hsv);\n var cValue = this.rgbToHex(this.rgb);\n var rgba = this.convertToRgbString(this.rgb);\n this.updatePreview(rgba);\n this.updateInput(cValue);\n this.triggerEvent(cValue, pValue, rgba, isKey, e);\n };\n ColorPicker.prototype.updateInput = function (value) {\n var wrapper = this.getWrapper();\n if (!wrapper.classList.contains(HIDEVALUE)) {\n if (!wrapper.classList.contains(HIDEHEX)) {\n Input.setValue(value.substr(0, 7), select('.' + HEX, this.container));\n }\n if (!wrapper.classList.contains(HIDERGBA)) {\n if (this.isRgb) {\n this.updateValue(this.rgb, false);\n }\n else {\n this.updateValue(this.hsv, false);\n }\n }\n }\n };\n ColorPicker.prototype.updatePreview = function (value) {\n if (this.enableOpacity) {\n this.updateOpacitySliderBg();\n }\n select('.e-tip-transparent', this.tooltipEle).style.backgroundColor = value;\n select('.' + PREVIEW + ' .' + CURRENT, this.container).style.backgroundColor = value;\n select('.' + PREVIEW + ' .' + PREVIOUS, this.container).style.backgroundColor\n = this.convertToRgbString(this.hexToRgb(this.value));\n };\n ColorPicker.prototype.getDragHandler = function () {\n return select('.' + HANDLER, this.container);\n };\n ColorPicker.prototype.removeTileSelection = function () {\n var selectedEle = [].slice.call(selectAll('.' + SELECT, this.container.children[0]));\n selectedEle.forEach(function (ele) {\n ele.classList.remove(SELECT);\n ele.setAttribute('aria-selected', 'false');\n });\n };\n ColorPicker.prototype.convertRgbToNumberArray = function (value) {\n return (value.slice(value.indexOf('(') + 1, value.indexOf(')'))).split(',').map(function (n, i) {\n return (i !== 3) ? parseInt(n, 10) : parseFloat(n);\n });\n };\n /**\n * To get color value in specified type.\n *\n * @param {string} value - Specify the color value.\n * @param {string} type - Specify the type to which the specified color needs to be converted.\n * @method getValue\n * @returns {string} - Color value\n */\n ColorPicker.prototype.getValue = function (value, type) {\n if (!value) {\n value = this.value;\n }\n type = !type ? 'hex' : type.toLowerCase();\n if (value[0] === 'r') {\n var cValue = this.convertRgbToNumberArray(value);\n if (type === 'hex' || type === 'hexa') {\n var hex = this.rgbToHex(cValue);\n return type === 'hex' ? hex.slice(0, 7) : hex;\n }\n else {\n if (type === 'hsv') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, cValue.slice(0, 3)));\n }\n else {\n if (type === 'hsva') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, cValue));\n }\n else {\n return 'null';\n }\n }\n }\n }\n else {\n if (value[0] === 'h') {\n var cValue = this.hsvToRgb.apply(this, this.convertRgbToNumberArray(value));\n if (type === 'rgba') {\n return this.convertToRgbString(cValue);\n }\n else {\n if (type === 'hex' || type === 'hexa') {\n var hex = this.rgbToHex(cValue);\n return type === 'hex' ? hex.slice(0, 7) : hex;\n }\n else {\n if (type === 'rgb') {\n return this.convertToRgbString(cValue.slice(0, 3));\n }\n else {\n return 'null';\n }\n }\n }\n }\n else {\n value = this.roundValue(value);\n var rgb = this.hexToRgb(value);\n if (type === 'rgb' || type === 'hsv') {\n rgb = rgb.slice(0, 3);\n }\n if (type === 'rgba' || type === 'rgb') {\n return this.convertToRgbString(rgb);\n }\n else {\n if (type === 'hsva' || type === 'hsv') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, rgb));\n }\n else {\n if (type === 'hex') {\n return value.slice(0, 7);\n }\n else {\n if (type === 'a') {\n return rgb[3].toString();\n }\n else {\n return 'null';\n }\n }\n }\n }\n }\n }\n };\n /**\n * To show/hide ColorPicker popup based on current state of the SplitButton.\n *\n * @method toggle\n * @returns {void}\n */\n ColorPicker.prototype.toggle = function () {\n if (this.container.parentElement.classList.contains('e-popup-close')) {\n this.splitBtn.toggle();\n }\n else {\n this.closePopup(null);\n }\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n ColorPicker.prototype.getModuleName = function () {\n return 'colorpicker';\n };\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n ColorPicker.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n ColorPicker.prototype.wireEvents = function () {\n if (this.isPicker()) {\n var dragHandler = this.getDragHandler();\n EventHandler.add(dragHandler, 'keydown', this.pickerKeyDown, this);\n var ctrlBtn = select('.' + CTRLBTN, this.container);\n if (ctrlBtn) {\n EventHandler.add(ctrlBtn, 'keydown', this.ctrlBtnKeyDown, this);\n }\n EventHandler.add(this.getHsvContainer(), 'mousedown touchstart', this.handlerDown, this);\n if (this.modeSwitcher || this.showButtons) {\n this.addCtrlSwitchEvent();\n }\n EventHandler.add(select('.' + PREVIOUS, this.container), 'click', this.previewHandler, this);\n }\n else {\n EventHandler.add(this.container, 'click', this.paletteClickHandler, this);\n EventHandler.add(this.container, 'keydown', this.paletteKeyDown, this);\n }\n };\n ColorPicker.prototype.formResetHandler = function () {\n this.value = this.initialInputValue;\n attributes(this.element, { 'value': this.initialInputValue });\n };\n ColorPicker.prototype.addCtrlSwitchEvent = function () {\n var ctrlSwitchBtn = select('.' + CTRLSWITCH, this.container);\n if (ctrlSwitchBtn) {\n EventHandler.add(ctrlSwitchBtn, 'click', this.btnClickHandler, this);\n }\n };\n ColorPicker.prototype.ctrlBtnKeyDown = function (e) {\n if (e.keyCode === 13) {\n var applyBtn = select('.' + APPLY, this.container);\n if (applyBtn) {\n var cValue = this.rgbToHex(this.rgb);\n this.triggerChangeEvent(cValue);\n }\n this.splitBtn.element.focus();\n }\n };\n ColorPicker.prototype.pickerKeyDown = function (e) {\n switch (e.keyCode) {\n case 39:\n this.handlerDragPosition(1, this.enableRtl ? -1 : 1, e);\n break;\n case 37:\n this.handlerDragPosition(1, this.enableRtl ? 1 : -1, e);\n break;\n case 38:\n this.handlerDragPosition(2, 1, e);\n break;\n case 40:\n this.handlerDragPosition(2, -1, e);\n break;\n case 13: {\n e.preventDefault();\n var cValue = this.rgbToHex(this.rgb);\n this.enterKeyHandler(cValue, e);\n }\n }\n };\n ColorPicker.prototype.enterKeyHandler = function (value, e) {\n this.triggerChangeEvent(value);\n if (!this.inline) {\n this.splitBtn.element.focus();\n }\n };\n ColorPicker.prototype.closePopup = function (e) {\n var _this = this;\n var beforeCloseArgs = { element: this.container, event: e, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedcloseArgs) {\n if (!observedcloseArgs.cancel) {\n _this.splitBtn.toggle();\n _this.onPopupClose();\n }\n });\n };\n ColorPicker.prototype.triggerChangeEvent = function (value, e) {\n var hex = value.slice(0, 7);\n this.trigger('change', {\n currentValue: { hex: hex, rgba: this.convertToRgbString(this.rgb) }, event: e,\n previousValue: { hex: this.value.slice(0, 7), rgba: this.convertToRgbString(this.hexToRgb(this.value)) },\n value: this.enableOpacity ? value : hex\n });\n if (this.enableOpacity) {\n this.setProperties({ 'value': value }, true);\n }\n else {\n this.setProperties({ 'value': hex }, true);\n }\n this.element.value = hex ? hex : '#000000';\n };\n ColorPicker.prototype.handlerDragPosition = function (prob, value, e) {\n e.preventDefault();\n this.hsv[prob] += value * (e.ctrlKey ? 1 : 3);\n if (this.hsv[prob] < 0) {\n this.hsv[prob] = 0;\n }\n this.updateHsv();\n this.convertToOtherFormat(true, e);\n };\n ColorPicker.prototype.handlerDown = function (e) {\n e.preventDefault();\n if (e.type === 'mousedown') {\n this.clientX = Math.abs(e.pageX - pageXOffset);\n this.clientY = Math.abs(e.pageY - pageYOffset);\n this.setTooltipOffset(8);\n }\n else {\n this.clientX = Math.abs(e.changedTouches[0].pageX - pageXOffset);\n this.clientY = Math.abs(e.changedTouches[0].pageY - pageYOffset);\n this.setTooltipOffset(-8);\n }\n this.setHsv(this.clientX, this.clientY);\n this.getDragHandler().style.transition = 'left .4s cubic-bezier(.25, .8, .25, 1), top .4s cubic-bezier(.25, .8, .25, 1)';\n this.updateHsv();\n this.convertToOtherFormat(false, e);\n this.getDragHandler().focus();\n EventHandler.add(document, 'mousemove touchmove', this.handlerMove, this);\n EventHandler.add(document, 'mouseup touchend', this.handlerEnd, this);\n };\n ColorPicker.prototype.handlerMove = function (e) {\n if (e.type !== 'touchmove') {\n e.preventDefault();\n }\n var x;\n var y;\n if (e.type === 'mousemove') {\n x = Math.abs(e.pageX - pageXOffset);\n y = Math.abs(e.pageY - pageYOffset);\n }\n else {\n x = Math.abs(e.changedTouches[0].pageX - pageXOffset);\n y = Math.abs(e.changedTouches[0].pageY - pageYOffset);\n }\n this.setHsv(x, y);\n var dragHandler = this.getDragHandler();\n this.updateHsv();\n this.convertToOtherFormat(false, e);\n this.getTooltipInst().refresh(dragHandler);\n if (!this.tooltipEle.style.transform) {\n if (Math.abs(this.clientX - x) > 8 || Math.abs(this.clientY - y) > 8) {\n select('.' + HSVAREA, this.container).style.cursor = 'pointer';\n dragHandler.style.transition = 'none';\n if (!this.inline) {\n this.tooltipEle.style.zIndex = (parseInt(this.getPopupEle().style.zIndex, 10) + 1).toString();\n }\n this.tooltipEle.style.transform = 'rotate(45deg)';\n dragHandler.classList.add('e-hide-handler');\n }\n }\n };\n ColorPicker.prototype.setHsv = function (clientX, clientY) {\n var ele = select('.' + HSVAREA, this.container);\n var position = ele.getBoundingClientRect();\n if (this.enableRtl) {\n clientX = clientX > position.right ? 0 : Math.abs(clientX - position.right);\n }\n else {\n clientX = clientX > position.left ? Math.abs(clientX - position.left) : 0;\n }\n clientY = clientY > position.top ? Math.abs(clientY - position.top) : 0;\n this.hsv[2] = Math.round(Number(100 * (ele.offsetHeight -\n Math.max(0, Math.min(ele.offsetHeight, (clientY - ele.offsetTop)))) / ele.offsetHeight) * 10) / 10;\n this.hsv[1] =\n Math.round(Number(100 * (Math.max(0, Math.min(ele.offsetWidth, (clientX - ele.offsetLeft)))) / ele.offsetWidth) * 10) / 10;\n };\n ColorPicker.prototype.handlerEnd = function (e) {\n if (e.type !== 'touchend') {\n e.preventDefault();\n }\n EventHandler.remove(document, 'mousemove touchmove', this.handlerMove);\n EventHandler.remove(document, 'mouseup touchend', this.handlerEnd);\n var dragHandler = this.getDragHandler();\n select('.' + HSVAREA, this.container).style.cursor = '';\n if (this.tooltipEle.style.transform) {\n this.tooltipEle.style.transform = '';\n dragHandler.classList.remove('e-hide-handler');\n }\n if (!this.inline && !this.showButtons) {\n this.closePopup(e);\n }\n };\n ColorPicker.prototype.btnClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.' + MODESWITCH)) {\n e.stopPropagation();\n this.switchToPalette();\n }\n else {\n if (target.classList.contains(APPLY) || target.classList.contains(CANCEL)) {\n this.ctrlBtnClick(target, e);\n }\n }\n };\n ColorPicker.prototype.switchToPalette = function () {\n this.trigger('beforeModeSwitch', { element: this.container, mode: 'Palette' });\n this.unWireEvents();\n this.destroyOtherComp();\n detach(select('.e-slider-preview', this.container));\n if (!this.getWrapper().classList.contains(HIDEVALUE)) {\n remove(select('.' + INPUTWRAPPER, this.container));\n }\n detach(this.getHsvContainer());\n this.createPalette();\n this.firstPaletteFocus();\n this.createInput();\n this.refreshPopupPos();\n //for image editor popup position refreshing\n if (this.element.parentElement && this.element.parentElement.parentElement && this.element.parentElement.parentElement.classList.contains('e-ie-ddb-popup')) {\n this.refreshImageEditorPopupPos();\n }\n ;\n this.wireEvents();\n this.trigger('onModeSwitch', { element: this.container, mode: 'Palette' });\n };\n //for image editor popup position refreshing\n ColorPicker.prototype.refreshImageEditorPopupPos = function () {\n if (Browser.isDevice) {\n var popupEle = this.getPopupEle();\n popupEle.style.left = formatUnit(0 + pageXOffset);\n popupEle.style.top = formatUnit(0 + pageYOffset);\n var btnElem = document.querySelector(\"#\" + this.element.parentElement.parentElement.id.split('-popup')[0]);\n if (btnElem) {\n popupEle.parentElement.ej2_instances[0].refreshPosition(btnElem);\n }\n }\n };\n ColorPicker.prototype.refreshPopupPos = function () {\n if (!this.inline) {\n var popupEle = this.getPopupEle();\n popupEle.style.left = formatUnit(0 + pageXOffset);\n popupEle.style.top = formatUnit(0 + pageYOffset);\n this.getPopupInst().refreshPosition(this.splitBtn.element.parentElement);\n }\n };\n ColorPicker.prototype.formatSwitchHandler = function () {\n if (this.isRgb) {\n this.updateValue(this.hsv, true, 3, [360, 100, 100]);\n this.isRgb = false;\n }\n else {\n this.updateValue(this.rgb, true, 2);\n this.isRgb = true;\n }\n };\n ColorPicker.prototype.updateValue = function (value, format, idx, max) {\n var clsName = ['e-rh-value', 'e-gs-value', 'e-bv-value'];\n var inst;\n for (var i = 0, len = clsName.length; i < len; i++) {\n inst = getInstance(select('.' + clsName[i], this.container), NumericTextBox);\n inst.value = Math.round(value[i]);\n if (format) {\n inst.placeholder = clsName[i].substr(idx, 1).toUpperCase();\n inst.max = max ? max[i] : 255;\n }\n inst.dataBind();\n }\n };\n ColorPicker.prototype.previewHandler = function (e) {\n var target = e.target;\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.convertRgbToNumberArray(target.style.backgroundColor);\n if (!this.rgb[3]) {\n this.rgb[3] = 1;\n }\n var cValue = this.rgbToHex(this.rgb);\n var hsv = this.rgbToHsv.apply(this, this.rgb);\n if (hsv[0] !== this.hsv[0]) {\n this.hueSlider.setProperties({ 'value': hsv[0] }, true);\n this.hueSlider.refresh();\n }\n this.setHsvContainerBg(hsv[0]);\n if (this.enableOpacity && hsv[3] !== this.hsv[3]) {\n this.opacitySlider.setProperties({ 'value': hsv[3] * 100 }, true);\n this.opacitySlider.refresh();\n this.updateOpacitySliderBg();\n }\n this.hsv = hsv;\n this.setHandlerPosition();\n this.updateInput(cValue);\n select('.' + PREVIEW + ' .' + CURRENT, this.container).style.backgroundColor = this.convertToRgbString(this.rgb);\n this.triggerEvent(cValue, pValue, this.convertToRgbString(this.rgb), false, e);\n };\n ColorPicker.prototype.paletteClickHandler = function (e) {\n e.preventDefault();\n var target = e.target;\n if (target.classList.contains(TILE)) {\n this.removeTileSelection();\n this.addTileSelection(target);\n if (target.classList.contains(NOCOLOR)) {\n this.noColorTile();\n }\n else {\n var cValue = target.getAttribute('aria-label');\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hexToRgb(this.roundValue(cValue));\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n if (this.getWrapper().classList.contains(SHOWVALUE)) {\n this.updateInput(cValue);\n }\n this.triggerEvent(cValue, pValue, this.convertToRgbString(this.rgb), false, e);\n }\n if (!this.inline && !this.showButtons) {\n this.closePopup(e);\n }\n }\n else {\n if (closest(target, '.' + MODESWITCH)) {\n this.switchToPicker();\n }\n else {\n if (target.classList.contains(APPLY) || target.classList.contains(CANCEL)) {\n this.ctrlBtnClick(target, e);\n }\n else {\n if (this.getWrapper().classList.contains(SHOWVALUE) && closest(target, '.' + FORMATSWITCH)) {\n this.formatSwitchHandler();\n }\n }\n }\n }\n };\n ColorPicker.prototype.noColorTile = function (isKey) {\n if (isKey === void 0) { isKey = false; }\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = [];\n this.hsv = [];\n this.triggerEvent('', pValue, '', isKey);\n };\n ColorPicker.prototype.switchToPicker = function () {\n var wrapper = this.getWrapper();\n this.trigger('beforeModeSwitch', { element: this.container, mode: 'Picker' });\n this.unWireEvents();\n ([].slice.call(selectAll('.' + PALETTES, this.container))).forEach(function (ele) {\n detach(ele);\n });\n if (wrapper.classList.contains(SHOWVALUE)) {\n detach(select('.' + INPUTWRAPPER, this.container));\n }\n this.container.style.width = '';\n var grpEle = select('.e-custom-palette', this.container);\n if (this.presetColors) {\n remove(grpEle);\n }\n this.createPicker();\n this.getDragHandler().focus();\n this.createInput();\n this.refreshPopupPos();\n //for image editor popup position refreshing\n if (this.element.parentElement && this.element.parentElement.parentElement && this.element.parentElement.parentElement.classList.contains('e-ie-ddb-popup')) {\n this.refreshImageEditorPopupPos();\n }\n ;\n this.wireEvents();\n this.trigger('onModeSwitch', { element: this.container, mode: 'Picker' });\n };\n ColorPicker.prototype.ctrlBtnClick = function (ele, e) {\n if (ele.classList.contains(APPLY)) {\n var cValue = this.rgbToHex(this.rgb);\n this.triggerChangeEvent(cValue, e);\n }\n if (!this.inline) {\n this.closePopup(e);\n this.splitBtn.element.focus();\n }\n else if (ele.classList.contains(CANCEL)) {\n var beforeCloseArgs = { element: this.container, event: e, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs);\n }\n };\n ColorPicker.prototype.paletteKeyDown = function (e) {\n var target = e.target;\n if (!target.classList.contains(PALETTES)) {\n return;\n }\n var selectedEle;\n var idx;\n var tiles = [].slice.call(selectAll('.' + TILE, target));\n var prevSelectedEle = (tiles.filter(function (tile) { return tile.classList.contains('e-selected'); })).pop();\n switch (!e.altKey && e.keyCode) {\n case 39:\n e.preventDefault();\n selectedEle = prevSelectedEle ? tiles[this.tilePosition(tiles, prevSelectedEle, this.enableRtl ? -1 : 1)]\n : tiles[this.enableRtl ? tiles.length - 1 : 0];\n this.keySelectionChanges(selectedEle);\n break;\n case 37:\n e.preventDefault();\n selectedEle = prevSelectedEle ? tiles[this.tilePosition(tiles, prevSelectedEle, this.enableRtl ? 1 : -1)]\n : tiles[this.enableRtl ? 0 : tiles.length - 1];\n this.keySelectionChanges(selectedEle);\n break;\n case 38:\n e.preventDefault();\n idx = prevSelectedEle ? this.tilePosition(tiles, prevSelectedEle, -this.columns) : 0;\n selectedEle = tiles[idx] ? tiles[idx] : tiles[idx - this.columns];\n this.keySelectionChanges(selectedEle);\n break;\n case 40:\n e.preventDefault();\n idx = prevSelectedEle ? this.tilePosition(tiles, prevSelectedEle, this.columns) : tiles.length - 1;\n if (tiles[idx]) {\n selectedEle = tiles[idx];\n }\n else {\n idx %= tiles.length;\n idx += tiles[tiles.length - 1].parentElement.childElementCount;\n selectedEle = tiles[idx];\n }\n this.keySelectionChanges(selectedEle);\n break;\n case 13:\n e.preventDefault();\n if (prevSelectedEle) {\n var cValue = prevSelectedEle.getAttribute('aria-label');\n this.enterKeyHandler(cValue ? cValue : '', e);\n }\n }\n };\n ColorPicker.prototype.keySelectionChanges = function (newEle) {\n this.removeTileSelection();\n this.addTileSelection(newEle);\n if (newEle.classList.contains(NOCOLOR)) {\n this.noColorTile(true);\n }\n else {\n var cValue = newEle.getAttribute('aria-label');\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hexToRgb(cValue);\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n if (this.getWrapper().classList.contains(SHOWVALUE)) {\n this.updateInput(cValue);\n }\n this.triggerEvent(cValue, pValue, this.convertToRgbString(this.rgb), true);\n }\n };\n ColorPicker.prototype.tilePosition = function (items, element, cIdx) {\n items = Array.prototype.slice.call(items);\n var n = items.length;\n var emptyCount = this.columns - items[n - 1].parentElement.childElementCount;\n var idx = items.indexOf(element);\n idx += cIdx;\n if (idx < 0) {\n idx += n + emptyCount;\n }\n else {\n idx %= n + emptyCount;\n }\n return idx;\n };\n ColorPicker.prototype.inputHandler = function (e) {\n var target = e.target;\n if (!target.value.length) {\n return;\n }\n var hsv;\n var pValue;\n var label = select('.e-float-text', target.parentElement).textContent;\n switch (label) {\n case 'HEX': {\n var value = '';\n if ((target.value[0] === '#' && target.value.length !== 5) || (target.value[0] !== '#' && target.value.length !== 4)) {\n value = this.roundValue(target.value);\n }\n if (value.length === 9) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hexToRgb(value + value.substr(-2));\n this.inputValueChange(this.rgbToHsv.apply(this, this.rgb), pValue, target.value, e);\n }\n else {\n return;\n }\n break;\n }\n case 'R':\n if (this.rgb[0] !== Number(target.value)) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb[0] = Number(target.value);\n hsv = this.rgbToHsv.apply(this, this.rgb);\n this.inputValueChange(hsv, pValue, null, e);\n }\n break;\n case 'G':\n if (this.rgb[1] !== Number(target.value)) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb[1] = Number(target.value);\n hsv = this.rgbToHsv.apply(this, this.rgb);\n this.inputValueChange(hsv, pValue, null, e);\n }\n break;\n case 'B':\n if (this.rgb[2] !== Number(target.value)) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb[2] = Number(target.value);\n hsv = this.rgbToHsv.apply(this, this.rgb);\n this.inputValueChange(hsv, pValue, null, e);\n }\n break;\n case 'H':\n this.hueSlider.value = Number(target.value);\n break;\n case 'S':\n if (this.hsv[1] !== Number(target.value)) {\n this.hsv[1] = Number(target.value);\n this.updateHsv();\n this.convertToOtherFormat(false, e);\n }\n break;\n case 'V':\n if (this.hsv[2] !== Number(target.value)) {\n this.hsv[2] = Number(target.value);\n this.updateHsv();\n this.convertToOtherFormat(false, e);\n }\n break;\n case 'A':\n this.opacitySlider.value = Number(target.value);\n break;\n }\n };\n ColorPicker.prototype.inputValueChange = function (hsv, pValue, value, e) {\n if (hsv[0] !== this.hsv[0]) {\n this.hueSlider.setProperties({ 'value': hsv[0] }, true);\n this.hueSlider.refresh();\n this.setHsvContainerBg(hsv[0]);\n }\n this.hsv = hsv;\n var cValue = this.rgbToHex(this.rgb);\n this.setHandlerPosition();\n this.updateInput(value ? value : cValue);\n var rgba = this.convertToRgbString(this.rgb);\n this.updatePreview(rgba);\n this.triggerEvent(cValue, pValue, rgba, false, e);\n };\n ColorPicker.prototype.triggerEvent = function (cValue, pValue, rgba, isKey, e) {\n if (isKey === void 0) { isKey = false; }\n var hex = cValue.slice(0, 7);\n if (isNullOrUndefined(e)) {\n e = new MouseEvent('click', { bubbles: true, cancelable: false });\n }\n if (!this.showButtons && !isKey) {\n this.trigger('change', { currentValue: { hex: hex, rgba: rgba }, event: e,\n previousValue: { hex: this.value.slice(0, 7), rgba: this.convertToRgbString(this.hexToRgb(this.value)) }, value: cValue });\n if (this.enableOpacity) {\n this.setProperties({ 'value': cValue }, true);\n }\n else {\n this.setProperties({ 'value': hex }, true);\n }\n this.element.value = hex ? hex : '#000000';\n }\n else {\n this.trigger('select', {\n currentValue: { hex: hex, rgba: rgba }, event: e,\n previousValue: { hex: pValue.slice(0, 7), rgba: this.convertToRgbString(this.hexToRgb(pValue)) }\n });\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n ColorPicker.prototype.destroy = function () {\n var _this = this;\n var wrapper = this.getWrapper();\n _super.prototype.destroy.call(this);\n ['tabindex', 'spellcheck'].forEach(function (attr) { _this.element.removeAttribute(attr); });\n if (this.inline) {\n this.unWireEvents();\n this.destroyOtherComp();\n }\n else {\n if (this.isPopupOpen()) {\n this.unWireEvents();\n this.destroyOtherComp();\n }\n this.splitBtn.destroy();\n this.splitBtn = null;\n }\n this.tileRipple();\n this.tileRipple = null;\n this.ctrlBtnRipple();\n this.ctrlBtnRipple = null;\n if (this.element.nextElementSibling) {\n detach(this.element.nextElementSibling);\n }\n if (wrapper) {\n wrapper.parentElement.insertBefore(this.element, wrapper);\n detach(wrapper);\n }\n this.container = null;\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n ColorPicker.prototype.destroyOtherComp = function () {\n if (this.isPicker()) {\n var popup = closest(this.hueSlider.element, '.e-color-picker');\n var numericElemColl = popup.querySelectorAll('.e-numerictextbox');\n for (var i = 0; i < numericElemColl.length; i++) {\n getInstance(numericElemColl[i], NumericTextBox).destroy();\n }\n this.hueSlider.destroy();\n if (this.enableOpacity) {\n this.opacitySlider.destroy();\n this.opacitySlider = null;\n }\n this.hueSlider = null;\n var tooltipInst = this.getTooltipInst();\n tooltipInst.close();\n tooltipInst.destroy();\n this.tooltipEle = null;\n }\n };\n ColorPicker.prototype.isPopupOpen = function () {\n return this.getPopupEle().classList.contains('e-popup-open');\n };\n ColorPicker.prototype.unWireEvents = function () {\n if (this.isPicker()) {\n var dragHandler = this.getDragHandler();\n EventHandler.remove(dragHandler, 'keydown', this.pickerKeyDown);\n var ctrlBtn = select('.' + CTRLBTN, this.container);\n if (ctrlBtn) {\n EventHandler.remove(ctrlBtn, 'keydown', this.ctrlBtnKeyDown);\n }\n EventHandler.remove(this.getHsvContainer(), 'mousedown touchstart', this.handlerDown);\n if (this.modeSwitcher || this.showButtons) {\n EventHandler.remove(select('.' + CTRLSWITCH, this.container), 'click', this.btnClickHandler);\n }\n EventHandler.remove(select('.' + PREVIOUS, this.container), 'click', this.previewHandler);\n }\n else {\n EventHandler.remove(this.container, 'click', this.paletteClickHandler);\n EventHandler.remove(this.container, 'keydown', this.paletteKeyDown);\n }\n };\n ColorPicker.prototype.roundValue = function (value) {\n if (!value) {\n return '';\n }\n if (value[0] !== '#') {\n value = '#' + value;\n }\n var len = value.length;\n if (len === 4) {\n value += 'f';\n len = 5;\n }\n if (len === 5) {\n var tempValue = '';\n for (var i = 1, len_1 = value.length; i < len_1; i++) {\n tempValue += (value.charAt(i) + value.charAt(i));\n }\n value = '#' + tempValue;\n len = 9;\n }\n if (len === 7) {\n value += 'ff';\n }\n return value;\n };\n ColorPicker.prototype.hexToRgb = function (hex) {\n if (!hex) {\n return [];\n }\n hex = hex.trim();\n if (hex.length !== 9) {\n hex = this.roundValue(hex);\n }\n var opacity = Number((parseInt(hex.slice(-2), 16) / 255).toFixed(2));\n hex = hex.slice(1, 7);\n var bigInt = parseInt(hex, 16);\n var h = [];\n h.push((bigInt >> 16) & 255);\n h.push((bigInt >> 8) & 255);\n h.push(bigInt & 255);\n h.push(opacity);\n return h;\n };\n ColorPicker.prototype.rgbToHsv = function (r, g, b, opacity) {\n if (this.rgb && !this.rgb.length) {\n return [];\n }\n r /= 255;\n g /= 255;\n b /= 255;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var v = max;\n var d = max - min;\n var s = max === 0 ? 0 : d / max;\n if (max === min) {\n h = 0;\n }\n else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n var hsv = [Math.round(h * 360), Math.round(s * 1000) / 10, Math.round(v * 1000) / 10];\n if (!isNullOrUndefined(opacity)) {\n hsv.push(opacity);\n }\n return hsv;\n };\n ColorPicker.prototype.hsvToRgb = function (h, s, v, opacity) {\n var r;\n var g;\n var b;\n s /= 100;\n v /= 100;\n if (s === 0) {\n r = g = b = v;\n return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255), opacity];\n }\n h /= 60;\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n switch (i) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n default:\n r = v;\n g = p;\n b = q;\n }\n var rgb = [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\n if (!isNullOrUndefined(opacity)) {\n rgb.push(opacity);\n }\n return rgb;\n };\n ColorPicker.prototype.rgbToHex = function (rgb) {\n return rgb.length ? ('#' + this.hex(rgb[0]) + this.hex(rgb[1]) + this.hex(rgb[2]) +\n (!isNullOrUndefined(rgb[3]) ? (rgb[3] !== 0 ? (Math.round(rgb[3] * 255) + 0x10000).toString(16).substr(-2) : '00') : '')) : '';\n };\n ColorPicker.prototype.hex = function (x) {\n return ('0' + x.toString(16)).slice(-2);\n };\n ColorPicker.prototype.changeModeSwitcherProp = function (prop) {\n var ctrlSwitchWrapper = select('.' + CTRLSWITCH, this.container);\n if (prop) {\n if (ctrlSwitchWrapper) {\n this.appendModeSwitchBtn();\n }\n else {\n this.createCtrlBtn();\n if (this.isPicker() && !this.disabled) {\n this.addCtrlSwitchEvent();\n }\n }\n }\n else {\n if (ctrlSwitchWrapper) {\n if (this.showButtons) {\n detach(select('.' + MODESWITCH, ctrlSwitchWrapper));\n }\n else {\n remove(ctrlSwitchWrapper);\n }\n }\n }\n };\n ColorPicker.prototype.changeShowBtnProps = function (prop) {\n var ctrlBtnWrapper = select('.' + CTRLSWITCH, this.container);\n if (prop) {\n if (ctrlBtnWrapper) {\n remove(ctrlBtnWrapper);\n }\n this.createCtrlBtn();\n if (this.isPicker() && !this.disabled) {\n this.addCtrlSwitchEvent();\n }\n }\n else {\n if (this.modeSwitcher) {\n detach(select('.' + CTRLBTN, ctrlBtnWrapper));\n }\n else {\n remove(ctrlBtnWrapper);\n }\n }\n };\n ColorPicker.prototype.changeValueProp = function (newProp) {\n if (this.isPicker()) {\n this.rgb = this.hexToRgb(newProp);\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n this.setHandlerPosition();\n detach(closest(this.hueSlider.element, '.e-slider-preview'));\n this.createSlider();\n this.setHsvContainerBg();\n this.updateInput(newProp);\n if (this.rgb.length === 4) {\n this.updateOpacityInput(this.rgb[3] * 100);\n }\n }\n else {\n this.removeTileSelection();\n var ele = this.container.querySelector('span[aria-label=\"' + this.roundValue(newProp) + '\"]');\n if (ele) {\n this.addTileSelection(ele);\n }\n }\n };\n ColorPicker.prototype.setInputEleProps = function () {\n remove(select('.' + INPUTWRAPPER, this.container));\n this.createInput();\n };\n ColorPicker.prototype.changeDisabledProp = function (newProp) {\n if (this.isPicker()) {\n this.hueSlider.enabled = !newProp;\n this.opacitySlider.enabled = !newProp;\n this.setInputEleProps();\n }\n if (newProp) {\n this.toggleDisabled(true);\n this.unWireEvents();\n }\n else {\n this.toggleDisabled(false);\n this.wireEvents();\n }\n };\n ColorPicker.prototype.changeCssClassProps = function (newProp, oldProp) {\n var wrapper = this.getWrapper();\n var popupWrapper = this.getPopupEle();\n if (oldProp) {\n removeClass([wrapper, popupWrapper], oldProp.split(' '));\n }\n if (newProp) {\n addClass([wrapper, popupWrapper], newProp.replace(/\\s+/g, ' ').trim().split(' '));\n }\n };\n ColorPicker.prototype.changeRtlProps = function (newProp) {\n if (newProp) {\n addClass([this.getWrapper()], 'e-rtl');\n }\n else {\n removeClass([this.getWrapper()], 'e-rtl');\n }\n };\n ColorPicker.prototype.changePaletteProps = function () {\n detach(this.container.children[0]);\n this.container.style.width = '';\n this.createPalette();\n };\n ColorPicker.prototype.changeOpacityProps = function (newProp) {\n var wrapper = this.getWrapper();\n if (newProp) {\n removeClass([this.container.parentElement], HIDEOPACITY);\n this.createOpacitySlider(select('.e-colorpicker-slider', this.container).appendChild(this.createElement('div', { className: 'e-opacity-slider' })));\n if (!wrapper.classList.contains(HIDEVALUE) && !wrapper.classList.contains(HIDERGBA)) {\n this.appendOpacityValue(select('.e-input-container', this.container));\n }\n }\n else {\n addClass([this.container.parentElement], HIDEOPACITY);\n this.opacitySlider.destroy();\n remove(this.opacitySlider.element);\n this.opacitySlider = null;\n if (!wrapper.classList.contains(HIDEVALUE) && !wrapper.classList.contains(HIDERGBA)) {\n remove(select('.' + OPACITY, this.container).parentElement);\n }\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ColorPickerModel} newProp - Specifies new properties\n * @param {ColorPickerModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n ColorPicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n if (!isNullOrUndefined(newProp.value)) {\n var value = this.roundValue(newProp.value);\n if (value.length === 9) {\n this.element.value = this.roundValue(value).slice(0, 7);\n var preview = this.splitBtn && select('.' + SPLITPREVIEW, this.splitBtn.element);\n if (preview) {\n preview.style.backgroundColor = this.convertToRgbString(this.hexToRgb(newProp.value));\n }\n }\n else if (this.noColor && this.mode === 'Palette' && this.value === '') {\n var preview = this.splitBtn && select('.' + SPLITPREVIEW, this.splitBtn.element);\n preview.style.backgroundColor = '';\n }\n else {\n this.value = oldProp.value;\n }\n }\n if (!this.inline && isNullOrUndefined(newProp.inline)) {\n var otherCompModel = ['disabled', 'enableRtl'];\n this.splitBtn.setProperties(getModel(newProp, otherCompModel));\n if (!this.isPopupOpen()) {\n this.changeCssClassProps(newProp.cssClass, oldProp.cssClass);\n this.changeRtlProps(newProp.enableRtl);\n return;\n }\n }\n var _loop_1 = function (prop) {\n switch (prop) {\n case 'inline':\n if (newProp.inline) {\n this_1.getWrapper().appendChild(this_1.container);\n this_1.splitBtn.destroy();\n detach(this_1.element.nextElementSibling);\n if (!this_1.container.children.length) {\n this_1.createWidget();\n }\n }\n else {\n this_1.destroyOtherComp();\n this_1.unWireEvents();\n this_1.container.innerHTML = '';\n this_1.createSplitBtn();\n }\n break;\n case 'cssClass': {\n this_1.changeCssClassProps(newProp.cssClass, oldProp.cssClass);\n var props = newProp.cssClass.split(' ').concat(oldProp.cssClass.split(' '));\n props = props.reduce(function (a, b) { if (a.indexOf(b) < 0) {\n a.push(b);\n } return a; }, []);\n var count_1 = 0;\n props.forEach(function (cls) {\n if (count_1 === 0 &&\n (cls === HIDEVALUE || cls === HIDEVALUESWITCH || cls === SHOWVALUE || cls === HIDEHEX || cls === HIDERGBA)) {\n var inputWrap = select('.' + INPUTWRAPPER, _this.container);\n if (inputWrap) {\n remove(select('.' + INPUTWRAPPER, _this.container));\n }\n _this.createInput();\n count_1++;\n }\n });\n break;\n }\n case 'enableRtl':\n if (this_1.isPicker()) {\n this_1.hueSlider.enableRtl = newProp.enableRtl;\n if (this_1.enableOpacity) {\n this_1.opacitySlider.enableRtl = newProp.enableRtl;\n }\n this_1.setInputEleProps();\n }\n this_1.changeRtlProps(newProp.enableRtl);\n break;\n case 'disabled':\n this_1.changeDisabledProp(newProp.disabled);\n break;\n case 'value':\n if (this_1.value !== oldProp.value) {\n this_1.changeValueProp(newProp.value);\n }\n break;\n case 'showButtons':\n this_1.changeShowBtnProps(newProp.showButtons);\n break;\n case 'mode':\n if (newProp.mode === 'Picker') {\n this_1.switchToPicker();\n }\n else {\n this_1.switchToPalette();\n }\n break;\n case 'modeSwitcher':\n this_1.changeModeSwitcherProp(newProp.modeSwitcher);\n break;\n case 'columns':\n case 'presetColors':\n if (!this_1.isPicker()) {\n this_1.changePaletteProps();\n }\n break;\n case 'noColor':\n if (newProp.noColor) {\n if (this_1.mode === 'Palette' && !this_1.modeSwitcher) {\n this_1.setNoColor();\n }\n }\n else {\n this_1.changePaletteProps();\n }\n break;\n case 'enableOpacity':\n this_1.changeOpacityProps(newProp.enableOpacity);\n break;\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_1(prop);\n }\n };\n /**\n * Sets the focus to Colorpicker\n * its native method\n *\n * @public\n * @returns {void}\n */\n ColorPicker.prototype.focusIn = function () {\n this.element.parentElement.focus();\n };\n __decorate([\n Property('#008000ff')\n ], ColorPicker.prototype, \"value\", void 0);\n __decorate([\n Property('')\n ], ColorPicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"disabled\", void 0);\n __decorate([\n Property('Picker')\n ], ColorPicker.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], ColorPicker.prototype, \"modeSwitcher\", void 0);\n __decorate([\n Property(null)\n ], ColorPicker.prototype, \"presetColors\", void 0);\n __decorate([\n Property(true)\n ], ColorPicker.prototype, \"showButtons\", void 0);\n __decorate([\n Property(10)\n ], ColorPicker.prototype, \"columns\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"inline\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"noColor\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], ColorPicker.prototype, \"enableOpacity\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"beforeTileRender\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"beforeModeSwitch\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"onModeSwitch\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"created\", void 0);\n ColorPicker = __decorate([\n NotifyPropertyChanges\n ], ColorPicker);\n return ColorPicker;\n}(Component));\nexport { ColorPicker };\n","import { addClass, Browser, removeClass, formatUnit, isNullOrUndefined, isNullOrUndefined as isNOU, EventHandler } from '@syncfusion/ej2-base';\nimport { getInstance, closest, selectAll } from '@syncfusion/ej2-base';\nimport { Toolbar } from '@syncfusion/ej2-navigations';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Popup, Tooltip } from '@syncfusion/ej2-popups';\nimport * as classes from '../base/classes';\nimport * as events from '../base/constant';\nimport { CLS_TOOLBAR, CLS_DROPDOWN_BTN, CLS_RTE_ELEMENTS, CLS_TB_BTN, CLS_INLINE_DROPDOWN, CLS_COLOR_CONTENT, CLS_FONT_COLOR_DROPDOWN, CLS_BACKGROUND_COLOR_DROPDOWN, CLS_COLOR_PALETTE, CLS_FONT_COLOR_PICKER, CLS_BACKGROUND_COLOR_PICKER, CLS_CUSTOM_TILE, CLS_NOCOLOR_ITEM, CLS_BULLETFORMATLIST_TB_BTN, CLS_NUMBERFORMATLIST_TB_BTN, CLS_LIST_PRIMARY_CONTENT } from '../base/classes';\nimport { ColorPicker } from '@syncfusion/ej2-inputs';\nimport { hasClass } from '../base/util';\n/**\n * `Toolbar renderer` module is used to render toolbar in RichTextEditor.\n *\n * @hidden\n\n */\nvar ToolbarRenderer = /** @class */ (function () {\n /**\n * Constructor for toolbar renderer module\n *\n * @param {IRichTextEditor} parent - specifies the parent element.\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function ToolbarRenderer(parent, serviceLocator) {\n this.parent = parent;\n if (serviceLocator) {\n this.l10n = serviceLocator.getService('rteLocale');\n }\n this.wireEvent();\n }\n ToolbarRenderer.prototype.wireEvent = function () {\n this.parent.on(events.destroy, this.unWireEvent, this);\n this.parent.on(events.destroyTooltip, this.destroyTooltip, this);\n this.parent.on(events.closeTooltip, this.closeTooltip, this);\n };\n ToolbarRenderer.prototype.destroyTooltip = function () {\n var currentDocument = this.parent.iframeSettings.enable ? this.parent.contentModule.getPanel().ownerDocument :\n this.parent.contentModule.getDocument();\n if (!isNullOrUndefined(currentDocument.querySelector('.e-tooltip-wrap')) && !isNullOrUndefined(currentDocument.querySelector('[data-tooltip-id]'))) {\n var tooltipTargetEle = currentDocument.querySelector('[data-tooltip-id]');\n var event_1 = new MouseEvent('mouseleave', { bubbles: true, cancelable: true });\n tooltipTargetEle.dispatchEvent(event_1);\n }\n };\n ToolbarRenderer.prototype.unWireEvent = function () {\n this.parent.off(events.destroy, this.unWireEvent);\n this.parent.off(events.destroyTooltip, this.destroyTooltip);\n this.parent.off(events.closeTooltip, this.closeTooltip);\n };\n ToolbarRenderer.prototype.toolbarBeforeCreate = function (e) {\n if (this.mode === 'Extended') {\n e.enableCollision = false;\n }\n };\n ToolbarRenderer.prototype.toolbarCreated = function () {\n this.parent.notify(events.toolbarCreated, this);\n };\n ToolbarRenderer.prototype.toolbarClicked = function (args) {\n if (!this.parent.enabled) {\n return;\n }\n this.parent.trigger('toolbarClick', args);\n if (!this.parent.readonly || isNullOrUndefined(args.item)) {\n this.parent.notify(events.toolbarClick, args);\n }\n };\n ToolbarRenderer.prototype.dropDownSelected = function (args) {\n this.parent.notify(events.dropDownSelect, args);\n this.destroyTooltip();\n };\n ToolbarRenderer.prototype.beforeDropDownItemRender = function (args) {\n if (this.parent.readonly || !this.parent.enabled) {\n return;\n }\n this.parent.notify(events.beforeDropDownItemRender, args);\n };\n ToolbarRenderer.prototype.tooltipBeforeRender = function (args) {\n if (!isNOU(args.target.getAttribute('title'))) {\n var tooltipTarget = args.target.getAttribute('title');\n var tooltipText = void 0;\n switch (tooltipTarget) {\n case 'Minimize':\n tooltipText = this.l10n.getConstant('minimize');\n args.target.setAttribute('title', tooltipText + ' (Esc)');\n break;\n case 'Maximize':\n tooltipText = this.l10n.getConstant('maximize');\n args.target.setAttribute('title', tooltipText + ' (Ctrl+Shift+F)');\n break;\n }\n }\n };\n ToolbarRenderer.prototype.dropDownOpen = function (args) {\n if (args.element.parentElement.getAttribute('id').indexOf('TableCell') > -1 && !isNOU(args.element.parentElement.querySelector('.e-cell-merge')) &&\n (!isNOU(args.element.parentElement.querySelector('.e-cell-horizontal-split')) || !isNOU(args.element.parentElement.querySelector('.e-cell-vertical-split')))) {\n var listEle = args.element.querySelectorAll('li');\n var selectedEles_1 = this.parent.inputElement.querySelectorAll('.e-cell-select');\n if (selectedEles_1.length === 1) {\n addClass([listEle[0]], 'e-disabled');\n removeClass([listEle[1], listEle[2]], 'e-disabled');\n }\n else if (selectedEles_1.length > 1) {\n if (!Array.from(selectedEles_1).every(function (element) {\n return element.tagName.toLowerCase() === selectedEles_1[0].tagName.toLowerCase();\n })) {\n addClass([listEle[0]], 'e-disabled');\n }\n else {\n removeClass([listEle[0]], 'e-disabled');\n }\n addClass([listEle[1], listEle[2]], 'e-disabled');\n }\n }\n if (this.parent.showTooltip) {\n this.dropdownTooltip = new Tooltip({\n target: '[aria-owns=\"' + this.parent.getID() + '\"].e-rte-elements [title]',\n showTipPointer: true,\n openDelay: 400,\n opensOn: 'Hover',\n beforeRender: this.tooltipBeforeRender.bind(this),\n cssClass: this.parent.getCssClass(),\n windowCollision: true,\n position: 'BottomCenter'\n });\n this.dropdownTooltip.appendTo(args.element);\n }\n this.parent.notify(events.selectionSave, args);\n };\n ToolbarRenderer.prototype.dropDownClose = function (args) {\n this.parent.notify(events.selectionRestore, args);\n };\n /**\n * renderToolbar method\n *\n * @param {IToolbarOptions} args - specifies the arguments.\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderToolbar = function (args) {\n this.setPanel(args.target);\n this.renderPanel();\n this.mode = args.overflowMode;\n args.rteToolbarObj.toolbarObj = new Toolbar({\n items: args.items,\n width: '100%',\n overflowMode: args.overflowMode,\n beforeCreate: this.toolbarBeforeCreate.bind(this),\n created: this.toolbarCreated.bind(this),\n clicked: this.toolbarClicked.bind(this),\n enablePersistence: args.enablePersistence,\n enableRtl: args.enableRtl,\n cssClass: args.cssClass\n });\n args.rteToolbarObj.toolbarObj.isStringTemplate = true;\n args.rteToolbarObj.toolbarObj.createElement = this.parent.createElement;\n args.rteToolbarObj.toolbarObj.appendTo(args.target);\n if (this.parent.showTooltip) {\n this.tooltip = new Tooltip({\n target: '#' + this.parent.getID() + '_toolbar_wrapper [title]',\n showTipPointer: true,\n openDelay: 400,\n opensOn: 'Hover',\n beforeRender: this.tooltipBeforeRender.bind(this),\n cssClass: this.parent.getCssClass(),\n windowCollision: true,\n position: 'BottomCenter'\n });\n this.tooltip.appendTo(args.target.parentElement);\n }\n };\n /**\n * renderDropDownButton method\n *\n * @param {IDropDownModel} args - specifies the the arguments.\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderDropDownButton = function (args) {\n var _this = this;\n var css;\n args.element.classList.add(CLS_DROPDOWN_BTN);\n css = args.cssClass + ' ' + CLS_RTE_ELEMENTS + ' ' + CLS_TB_BTN;\n if (this.parent.inlineMode.enable && Browser.isDevice) {\n css = css + ' ' + CLS_INLINE_DROPDOWN;\n }\n // eslint-disable-next-line\n var proxy = this;\n var dropDown = new DropDownButton({\n items: args.items,\n iconCss: args.iconCss,\n cssClass: css,\n content: args.content,\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n select: this.dropDownSelected.bind(this),\n beforeOpen: function (args) {\n if (proxy.parent.readonly || !proxy.parent.enabled) {\n args.cancel = true;\n return;\n }\n // eslint-disable-next-line\n // Table styles dropdown preselect\n if (proxy.parent.editorMode !== 'Markdown') {\n var startNode = proxy.parent.getRange().startContainer.parentElement;\n var tableEle = startNode.closest('table');\n var trow = startNode.closest('tr');\n if (!isNOU(tableEle) && tableEle.classList.contains('e-dashed-border')) {\n for (var index = 0; index < args.element.childNodes.length; index++) {\n if (args.element.childNodes[index].classList.contains('e-dashed-borders')) {\n addClass([args.element.childNodes[index]], 'e-active');\n }\n }\n }\n else if (!isNOU(tableEle) && !tableEle.classList.contains('e-dashed-border') && tableEle.classList.contains('e-alternate-rows') && window.getComputedStyle(trow).backgroundColor !== '') {\n for (var index = 0; index < args.element.childNodes.length; index++) {\n if (args.element.childNodes[index].classList.contains('e-alternate-rows')) {\n addClass([args.element.childNodes[index]], 'e-active');\n }\n }\n }\n //Alignments preselect\n var alignEle = proxy.parent.getRange().startContainer;\n while (alignEle !== proxy.parent.inputElement && !isNOU(alignEle.parentElement)) {\n if (alignEle.nodeName === '#text') {\n alignEle = alignEle.parentElement;\n }\n var alignStyle = window.getComputedStyle(alignEle).textAlign;\n if (args.items[0].command === 'Alignments') {\n if ((args.items[0].text === 'Align Left' && (alignStyle === 'left') || alignStyle === 'start')) {\n addClass([args.element.childNodes[0]], 'e-active');\n break;\n }\n else if (args.items[1].text === 'Align Center' && alignStyle === 'center') {\n addClass([args.element.childNodes[1]], 'e-active');\n break;\n }\n else if (args.items[2].text === 'Align Right' && alignStyle === 'right') {\n addClass([args.element.childNodes[2]], 'e-active');\n break;\n }\n else if (args.items[3].text === 'Align Justify' && alignStyle === 'justify') {\n addClass([args.element.childNodes[3]], 'e-active');\n break;\n }\n }\n alignEle = alignEle.parentElement;\n }\n //image preselect\n var closestNode = startNode.closest('img');\n var imageEle = closestNode ? closestNode : startNode.querySelector('img');\n if (args.items[0].command === 'Images') {\n if (!isNOU(imageEle)) {\n var index = void 0;\n if (imageEle.classList.contains('e-imgleft') || imageEle.classList.contains('e-imginline')) {\n index = 0;\n }\n else if (imageEle.classList.contains('e-imgcenter') || imageEle.classList.contains('e-imgbreak')) {\n index = 1;\n }\n else if (imageEle.classList.contains('e-imgright')) {\n index = 2;\n }\n if (!isNOU(args.element.childNodes[index])) {\n addClass([args.element.childNodes[index]], 'e-active');\n }\n }\n }\n //Formats preselect\n if (args.items[0].command === 'Formats' || args.items[0].command === 'Font') {\n 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 }\n }\n proxy.parent.notify(events.beforeDropDownOpen, args);\n },\n close: this.dropDownClose.bind(this),\n open: this.dropDownOpen.bind(this),\n beforeItemRender: this.beforeDropDownItemRender.bind(this)\n });\n dropDown.isStringTemplate = true;\n dropDown.createElement = proxy.parent.createElement;\n dropDown.appendTo(args.element);\n args.element.tabIndex = -1;\n var popupElement = document.getElementById(dropDown.element.id + '-popup');\n popupElement.setAttribute('aria-owns', this.parent.getID());\n return dropDown;\n };\n ToolbarRenderer.prototype.mouseOutHandler = function () {\n if (!isNOU(this.tooltipTargetEle)) {\n this.tooltipTargetEle.setAttribute('title', this.tooltipTargetEle.getAttribute('data-title'));\n }\n else {\n var currentDocument = this.parent.iframeSettings.enable ? this.parent.contentModule.getPanel().ownerDocument :\n this.parent.contentModule.getDocument();\n this.tooltipTargetEle = currentDocument.querySelector('[data-title]');\n this.tooltipTargetEle.setAttribute('title', this.tooltipTargetEle.getAttribute('data-title'));\n }\n this.tooltipTargetEle.removeAttribute('data-title');\n EventHandler.remove(this.tooltipTargetEle, 'mouseout', this.mouseOutHandler);\n };\n ToolbarRenderer.prototype.closeTooltip = function (args) {\n var currentDocument = this.parent.iframeSettings.enable ? this.parent.contentModule.getPanel().ownerDocument :\n this.parent.contentModule.getDocument();\n this.tooltipTargetEle = closest(args.target, '[data-tooltip-id]');\n if (!isNOU(this.tooltipTargetEle) && this.parent.showTooltip && !isNOU(currentDocument.querySelector('.e-tooltip-wrap'))) {\n this.destroyTooltip();\n if (!this.tooltipTargetEle.closest('.e-rte-quick-popup')) {\n this.tooltipTargetEle.setAttribute('data-title', this.tooltipTargetEle.getAttribute('title'));\n this.tooltipTargetEle.removeAttribute('title');\n EventHandler.add(this.tooltipTargetEle, 'mouseout', this.mouseOutHandler, this);\n }\n }\n };\n /**\n * renderListDropDown method\n *\n * @param {IDropDownModel} args - specifies the the arguments.\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderListDropDown = function (args) {\n var _this = this;\n // eslint-disable-next-line\n var proxy = this;\n var css = CLS_RTE_ELEMENTS + ' ' + CLS_TB_BTN + ((this.parent.inlineMode) ? (' ' + CLS_INLINE_DROPDOWN) : '');\n css += (' ' + ((args.itemName === 'NumberFormatList') ? CLS_NUMBERFORMATLIST_TB_BTN : CLS_BULLETFORMATLIST_TB_BTN));\n var content = proxy.parent.createElement('span', { className: CLS_LIST_PRIMARY_CONTENT });\n var inlineEle = proxy.parent.createElement('span', { className: args.cssClass });\n content.appendChild(inlineEle);\n var dropDown = new DropDownButton({\n items: args.items,\n cssClass: css,\n content: args.content,\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n select: this.dropDownSelected.bind(this),\n beforeOpen: function (args) {\n if (proxy.parent.editorMode !== 'Markdown') {\n var startNode = proxy.parent.getRange().startContainer.parentElement;\n var listElem = startNode.closest('LI');\n var currentLiElem = !isNOU(listElem) ? listElem.parentElement : null;\n if (!isNOU(currentLiElem) && (currentLiElem.nodeName === 'OL' || currentLiElem.nodeName === 'UL')) {\n if (currentLiElem.nodeName === 'UL' && args.items[0].subCommand === 'NumberFormatList') {\n addClass([args.element.childNodes[0]], 'e-active');\n }\n else if (currentLiElem.nodeName === 'OL' && args.items[0].subCommand === 'BulletFormatList') {\n addClass([args.element.childNodes[0]], 'e-active');\n }\n else {\n var currentListStyle = currentLiElem.style.listStyleType.split('-').join('').toLocaleLowerCase();\n currentListStyle = currentListStyle === 'decimal' ? 'number' : currentListStyle;\n for (var index = 0; index < args.element.childNodes.length; index++) {\n if (currentListStyle === args.element.childNodes[index].innerHTML.split(' ').join('').toLocaleLowerCase()) {\n addClass([args.element.childNodes[index]], 'e-active');\n break;\n }\n else if (currentListStyle === '' && args.element.childNodes[index].innerHTML !== 'None') {\n addClass([args.element.childNodes[index]], 'e-active');\n break;\n }\n }\n }\n }\n else {\n addClass([args.element.childNodes[0]], 'e-active');\n }\n }\n _this.closeTooltip({ target: args.event.target });\n if (proxy.parent.readonly || !proxy.parent.enabled) {\n args.cancel = true;\n return;\n }\n proxy.parent.notify(events.selectionRestore, {});\n var element = (args.event) ? args.event.target : null;\n proxy.currentElement = dropDown.element;\n proxy.currentDropdown = dropDown;\n if (args.event && args.event.type === 'click' && (element.classList.contains(CLS_LIST_PRIMARY_CONTENT)\n || element.parentElement.classList.contains(CLS_LIST_PRIMARY_CONTENT))) {\n args.cancel = true;\n return;\n }\n proxy.parent.notify(events.beforeDropDownOpen, args);\n },\n close: this.dropDownClose.bind(this),\n open: this.dropDownOpen.bind(this),\n beforeItemRender: this.beforeDropDownItemRender.bind(this)\n });\n dropDown.isStringTemplate = true;\n dropDown.createElement = proxy.parent.createElement;\n dropDown.appendTo(args.element);\n args.element.tabIndex = -1;\n args.element.setAttribute('role', 'button');\n var popupElement = document.getElementById(dropDown.element.id + '-popup');\n popupElement.setAttribute('aria-owns', this.parent.getID());\n if (args.element.childElementCount === 1) {\n dropDown.element.insertBefore(content, dropDown.element.querySelector('.e-caret'));\n }\n args.element.tabIndex = -1;\n dropDown.element.removeAttribute('type');\n dropDown.element.onmousedown = function () {\n proxy.parent.notify(events.selectionSave, {});\n };\n dropDown.element.onkeydown = function () {\n proxy.parent.notify(events.selectionSave, {});\n };\n return dropDown;\n };\n ToolbarRenderer.prototype.paletteSelection = function (dropDownArgs, currentElement) {\n var ele = dropDownArgs.element.querySelector('.e-control.e-colorpicker');\n var colorbox = [].slice.call(selectAll('.e-tile', ele.parentElement));\n removeClass(colorbox, 'e-selected');\n var style = currentElement.querySelector('.' + CLS_RTE_ELEMENTS).style.borderBottomColor;\n (colorbox.filter(function (colorbox) {\n if (colorbox.style.backgroundColor === style) {\n addClass([colorbox], 'e-selected');\n }\n }));\n };\n /**\n * renderColorPickerDropDown method\n *\n * @param {IColorPickerModel} args - specifies the arguments.\n * @param {string} item - specifies the item.\n * @param {ColorPicker} colorPicker - specifies the colorpicker.\n * @param {string} defaultColor -specifies the defaultColor.\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderColorPickerDropDown = function (args, item, colorPicker, defaultColor) {\n var _this = this;\n // eslint-disable-next-line\n var proxy = this;\n var css = CLS_RTE_ELEMENTS + ' ' + CLS_TB_BTN + ((this.parent.inlineMode) ? (' ' + CLS_INLINE_DROPDOWN) : '');\n css += (' ' + ((item === 'backgroundcolor') ? CLS_BACKGROUND_COLOR_DROPDOWN : CLS_FONT_COLOR_DROPDOWN));\n css += this.parent.getCssClass(true);\n var content = proxy.parent.createElement('span', { className: CLS_COLOR_CONTENT });\n var inlineEle = proxy.parent.createElement('span', { className: args.cssClass });\n var range;\n var initialBackgroundColor = (isNullOrUndefined(defaultColor)) ? proxy.parent.backgroundColor.default : defaultColor;\n inlineEle.style.borderBottomColor = (item === 'backgroundcolor') ?\n initialBackgroundColor : proxy.parent.fontColor.default;\n content.appendChild(inlineEle);\n var dropDown = new DropDownButton({\n target: colorPicker.element.parentElement, cssClass: css,\n enablePersistence: this.parent.enablePersistence, enableRtl: this.parent.enableRtl,\n beforeOpen: function (dropDownArgs) {\n if (proxy.parent.readonly || !proxy.parent.enabled) {\n dropDownArgs.cancel = true;\n return;\n }\n var element = (dropDownArgs.event) ? dropDownArgs.event.target : null;\n proxy.currentElement = dropDown.element;\n proxy.currentDropdown = dropDown;\n proxy.paletteSelection(dropDownArgs, proxy.currentElement);\n if (dropDownArgs.event && dropDownArgs.event.type === 'click' && (element.classList.contains(CLS_COLOR_CONTENT)\n || element.parentElement.classList.contains(CLS_COLOR_CONTENT))) {\n dropDownArgs.cancel = true;\n var colorpickerValue = element.classList.contains(CLS_RTE_ELEMENTS) ? element.style.borderBottomColor :\n element.querySelector('.' + CLS_RTE_ELEMENTS).style.borderBottomColor;\n proxy.parent.notify(events.selectionRestore, {});\n range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.parent.contentModule.getDocument());\n var parentNode = range.startContainer.parentNode;\n var closestElement = closest(range.startContainer.parentNode, 'table');\n if ((range.startContainer.nodeName === 'TD' || range.startContainer.nodeName === 'TH' ||\n (closest(range.startContainer.parentNode, 'td,th')) ||\n (proxy.parent.iframeSettings.enable && !hasClass(parentNode.ownerDocument.querySelector('body'), 'e-lib')))\n && range.collapsed && args.subCommand === 'BackgroundColor' && closest(closestElement, '.' + classes.CLS_RTE)) {\n proxy.parent.notify(events.tableColorPickerChanged, {\n item: { command: args.command, subCommand: args.subCommand,\n value: colorpickerValue }\n });\n }\n else {\n proxy.parent.notify(events.colorPickerChanged, { item: { command: args.command, subCommand: args.subCommand,\n value: colorpickerValue }\n });\n }\n return;\n }\n else {\n var ele = dropDownArgs.element.querySelector('.e-control.e-colorpicker');\n var inst = getInstance(ele, ColorPicker);\n inst.showButtons = (dropDownArgs.element.querySelector('.e-color-palette')) ? false : true;\n inst.dataBind();\n }\n dropDownArgs.element.onclick = function (args) {\n if (args.target.classList.contains('e-cancel')) {\n dropDown.toggle();\n }\n };\n },\n open: function (dropDownArgs) {\n _this.setColorPickerContentWidth(colorPicker);\n var focusEle;\n var ele = dropDownArgs.element.querySelector('.e-control.e-colorpicker');\n if (dropDownArgs.element.querySelector('.e-color-palette')) {\n focusEle = ele.parentElement.querySelector('.e-palette');\n }\n else {\n focusEle = ele.parentElement.querySelector('e-handler');\n }\n if (focusEle) {\n focusEle.focus();\n }\n _this.pickerRefresh(dropDownArgs);\n },\n beforeClose: function (dropDownArgs) {\n var element = (dropDownArgs.event) ? dropDownArgs.event.target : null;\n if (dropDownArgs.event && dropDownArgs.event.type === 'click' && (element.classList.contains(CLS_COLOR_CONTENT)\n || element.parentElement.classList.contains(CLS_COLOR_CONTENT))) {\n var colorpickerValue = element.classList.contains(CLS_RTE_ELEMENTS) ? element.style.borderBottomColor :\n element.querySelector('.' + CLS_RTE_ELEMENTS).style.borderBottomColor;\n range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.parent.contentModule.getDocument());\n if ((range.startContainer.nodeName === 'TD' || range.startContainer.nodeName === 'TH' ||\n closest(range.startContainer.parentNode, 'td,th')) && range.collapsed) {\n proxy.parent.notify(events.tableColorPickerChanged, { item: {\n command: args.command, subCommand: args.subCommand,\n value: colorpickerValue\n }\n });\n }\n else {\n proxy.parent.notify(events.colorPickerChanged, { item: { command: args.command, subCommand: args.subCommand,\n value: colorpickerValue }\n });\n }\n return;\n }\n },\n close: function (dropDownArgs) {\n proxy.parent.notify(events.selectionRestore, {});\n }\n });\n dropDown.isStringTemplate = true;\n dropDown.createElement = proxy.parent.createElement;\n args.element.setAttribute('role', 'button');\n dropDown.appendTo(args.element);\n var popupElement = document.getElementById(dropDown.element.id + '-popup');\n popupElement.setAttribute('aria-owns', this.parent.getID());\n dropDown.element.insertBefore(content, dropDown.element.querySelector('.e-caret'));\n args.element.tabIndex = -1;\n dropDown.element.removeAttribute('type');\n dropDown.element.onmousedown = function () {\n proxy.parent.notify(events.selectionSave, {});\n };\n dropDown.element.onkeydown = function () {\n proxy.parent.notify(events.selectionSave, {});\n };\n return dropDown;\n };\n ToolbarRenderer.prototype.pickerRefresh = function (dropDownArgs) {\n if (this.parent.backgroundColor.mode === 'Picker') {\n var popupElem = dropDownArgs.element.parentElement;\n popupElem.style.width = (popupElem.offsetWidth + 5).toString() + 'px';\n getInstance(popupElem, Popup).refreshPosition(popupElem);\n popupElem.style.width = (popupElem.offsetWidth - 5).toString() + 'px';\n }\n };\n ToolbarRenderer.prototype.setColorPickerContentWidth = function (colorPicker) {\n var colorPickerContent = colorPicker.element.nextSibling;\n if (colorPickerContent.style.width === '0px') {\n colorPickerContent.style.width = '';\n var borderWidth = parseInt(getComputedStyle(colorPickerContent).borderBottomWidth, 10);\n colorPickerContent.style.width = formatUnit(colorPickerContent.children[0].offsetWidth\n + borderWidth + borderWidth);\n }\n };\n /**\n * renderColorPicker method\n *\n * @param {IColorPickerModel} args - specifies the arguments\n * @param {string} item - specifies the string values\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderColorPicker = function (args, item) {\n var _this = this;\n // eslint-disable-next-line\n var proxy = this;\n var value;\n var colorPicker = new ColorPicker({\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n inline: true,\n value: null,\n cssClass: ((item === 'backgroundcolor') ? CLS_BACKGROUND_COLOR_PICKER : CLS_FONT_COLOR_PICKER) + ' ' + args.cssClass + ' ' + 'e-rte-picker-init',\n created: function () {\n var value = (item === 'backgroundcolor') ? proxy.parent.backgroundColor.default : proxy.parent.fontColor.default;\n colorPicker.cssClass = ((item === 'backgroundcolor') ? CLS_BACKGROUND_COLOR_PICKER : CLS_FONT_COLOR_PICKER) + ' ' + args.cssClass;\n colorPicker.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 presetColors: (item === 'backgroundcolor') ? this.parent.backgroundColor.colorCode : this.parent.fontColor.colorCode,\n columns: (item === 'backgroundcolor') ? this.parent.backgroundColor.columns : this.parent.fontColor.columns,\n beforeTileRender: function (args) {\n args.element.classList.add(CLS_COLOR_PALETTE);\n args.element.classList.add(CLS_CUSTOM_TILE);\n if (!isNullOrUndefined(_this.parent.cssClass)) {\n var allClassName = _this.parent.getCssClass().split(' ');\n for (var i = 0; i < allClassName.length; i++) {\n if (allClassName[i].trim() !== '') {\n args.element.classList.add(allClassName[i]);\n }\n }\n }\n if (args.value === '') {\n args.element.classList.add(CLS_NOCOLOR_ITEM);\n }\n },\n change: function (colorPickerArgs) {\n var colorpickerValue = colorPickerArgs.currentValue.rgba;\n colorPickerArgs.item = {\n command: args.command,\n subCommand: args.subCommand,\n value: colorpickerValue\n };\n proxy.parent.notify(events.selectionRestore, {});\n proxy.currentElement.querySelector('.' + CLS_RTE_ELEMENTS).style.borderBottomColor = colorpickerValue;\n var range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.parent.contentModule.getDocument());\n var closestElement = closest(range.startContainer.parentNode, 'table');\n if ((range.startContainer.nodeName === 'TD' || range.startContainer.nodeName === 'TH' || range.startContainer.nodeName === 'BODY' ||\n closest(range.startContainer.parentNode, 'td,th')) && range.collapsed && args.subCommand === 'BackgroundColor' && closest(closestElement, '.' + classes.CLS_RTE)) {\n proxy.parent.notify(events.tableColorPickerChanged, colorPickerArgs);\n }\n else {\n proxy.parent.notify(events.colorPickerChanged, colorPickerArgs);\n }\n proxy.currentDropdown.toggle();\n },\n beforeModeSwitch: function (args) {\n value = colorPicker.value;\n if (value === '') {\n colorPicker.setProperties({ value: ((args.mode === 'Picker') ? '#008000ff' : '') }, true);\n }\n colorPicker.showButtons = args.mode === 'Palette' ? false : true;\n }\n });\n colorPicker.isStringTemplate = true;\n colorPicker.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 { 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 { isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { ServiceLocator } from '../services/service-locator';\nimport { RendererFactory } from '../services/renderer-factory';\n/**\n * `ToolbarAction` module is used to toolbar click action\n */\nvar ToolbarAction = /** @class */ (function () {\n function ToolbarAction(parent) {\n this.parent = parent;\n this.addEventListener();\n this.serviceLocator = new ServiceLocator;\n this.serviceLocator.register('rendererFactory', new RendererFactory);\n }\n ToolbarAction.prototype.addEventListener = function () {\n this.parent.on(events.toolbarClick, this.toolbarClick, this);\n this.parent.on(events.dropDownSelect, this.dropDownSelect, this);\n this.parent.on(events.colorPickerChanged, this.renderSelection, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n };\n ToolbarAction.prototype.toolbarClick = function (args) {\n if (isNOU(args.item)) {\n return;\n }\n if (!isNOU(args.item.controlParent)) {\n // eslint-disable-next-line\n var activeEle = args.item.controlParent\n .activeEle;\n if (activeEle) {\n activeEle.tabIndex = -1;\n }\n }\n if (args.item.command === 'NumberFormatList' || args.item.command === 'BulletFormatList') {\n if (args.originalEvent.target.classList.contains('e-order-list') || args.originalEvent.target.classList.contains('e-unorder-list')) {\n args.item.command = 'Lists';\n args.item.subCommand = args.item.subCommand === 'NumberFormatList' ? 'OL' : 'UL';\n }\n }\n if (args.item.command === 'Lists') {\n if (args.originalEvent.target.classList.contains('e-caret') &&\n (args.originalEvent.target.parentElement.classList.contains('e-rte-bulletformatlist-dropdown') || args.originalEvent.target.parentElement.classList.contains('e-rte-numberformatlist-dropdown'))) {\n return;\n }\n }\n this.parent.notify(events.htmlToolbarClick, args);\n this.parent.notify(events.markdownToolbarClick, args);\n };\n ToolbarAction.prototype.dropDownSelect = function (e) {\n this.parent.notify(events.selectionRestore, {});\n if (!(document.body.contains(document.body.querySelector('.e-rte-quick-toolbar'))\n && e.item && (e.item.command === 'Images' || e.item.command === 'Audios' || e.item.command === 'Videos' ||\n e.item.command === 'VideoLayoutOption' || e.item.command === 'Display' || e.item.command === 'Table'))) {\n var value = e.item.controlParent && this.parent.quickToolbarModule && this.parent.quickToolbarModule.tableQTBar\n && this.parent.quickToolbarModule.tableQTBar.element.contains(e.item.controlParent.element) ? 'Table' : null;\n if (e.item.command === 'Lists') {\n var listItem = { listStyle: e.item.value, listImage: e.item.listImage, type: e.item.subCommand };\n this.parent.formatter.process(this.parent, e, e.originalEvent, listItem);\n }\n else {\n this.parent.formatter.process(this.parent, e, e.originalEvent, value);\n }\n }\n this.parent.notify(events.selectionSave, {});\n };\n ToolbarAction.prototype.renderSelection = function (args) {\n this.parent.notify(events.selectionRestore, {});\n this.parent.formatter.process(this.parent, args, args.originalEvent, null);\n this.parent.notify(events.selectionSave, {});\n };\n ToolbarAction.prototype.removeEventListener = function () {\n this.parent.off(events.toolbarClick, this.toolbarClick);\n this.parent.off(events.dropDownSelect, this.dropDownSelect);\n this.parent.off(events.colorPickerChanged, this.renderSelection);\n this.parent.off(events.destroy, this.removeEventListener);\n };\n return ToolbarAction;\n}());\nexport { ToolbarAction };\n","import { addClass, Browser, EventHandler, detach, removeClass, select, selectAll, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, closest, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, extend } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport * as classes from '../base/classes';\nimport { RenderType, ToolbarType } from '../base/enum';\nimport { setToolbarStatus, updateUndoRedoStatus, getTBarItemsIndex, getCollection, toObjectLowerCase, isIDevice, getTooltipText } from '../base/util';\nimport { updateDropDownFontFormatLocale } from '../base/util';\nimport * as model from '../models/items';\nimport { ToolbarRenderer } from '../renderer/toolbar-renderer';\nimport { BaseToolbar } from './base-toolbar';\nimport { DropDownButtons } from './dropdown-buttons';\nimport { ToolbarAction } from './toolbar-action';\n/**\n * `Toolbar` module is used to handle Toolbar actions.\n */\nvar Toolbar = /** @class */ (function () {\n function Toolbar(parent, serviceLocator) {\n this.tools = {};\n this.parent = parent;\n this.isToolbar = false;\n this.locator = serviceLocator;\n this.isTransformChild = false;\n this.renderFactory = this.locator.getService('rendererFactory');\n model.updateDropDownLocale(this.parent);\n updateDropDownFontFormatLocale(this.parent);\n this.renderFactory.addRenderer(RenderType.Toolbar, new ToolbarRenderer(this.parent, this.locator));\n this.toolbarRenderer = this.renderFactory.getRenderer(RenderType.Toolbar);\n this.baseToolbar = new BaseToolbar(this.parent, this.locator);\n this.addEventListener();\n if (this.parent.toolbarSettings && Object.keys(this.parent.toolbarSettings.itemConfigs).length > 0) {\n extend(this.tools, model.tools, toObjectLowerCase(this.parent.toolbarSettings.itemConfigs), true);\n }\n else {\n this.tools = model.tools;\n }\n }\n Toolbar.prototype.initializeInstance = function () {\n this.contentRenderer = this.renderFactory.getRenderer(RenderType.Content);\n this.editableElement = this.contentRenderer.getEditPanel();\n this.editPanel = this.contentRenderer.getPanel();\n };\n Toolbar.prototype.toolbarBindEvent = function () {\n if (!this.parent.inlineMode.enable) {\n this.keyBoardModule = new KeyboardEvents(this.getToolbarElement(), {\n keyAction: this.toolBarKeyDown.bind(this), keyConfigs: this.parent.formatter.keyConfig, eventName: 'keydown'\n });\n }\n };\n Toolbar.prototype.toolBarKeyDown = function (e) {\n switch (e.action) {\n case 'escape':\n this.parent.contentModule.getEditPanel().focus();\n break;\n case 'enter':\n if (e.target.classList.contains('e-hor-nav')) {\n this.adjustContentHeight(e.target, true);\n }\n if (!isNullOrUndefined(e.target) && (e.target.classList.contains(\"e-rte-fontcolor-dropdown\") || e.target.classList.contains(\"e-rte-backgroundcolor-dropdown\"))) {\n this.parent.notify(events.showColorPicker, { toolbarClick: e.target.classList.contains(\"e-rte-fontcolor-dropdown\") ? \"fontcolor\" : \"backgroundcolor\" });\n }\n }\n };\n Toolbar.prototype.createToolbarElement = function () {\n this.tbElement = this.parent.createElement('div', { id: this.parent.getID() + '_toolbar' });\n if (!Browser.isDevice && this.parent.inlineMode.enable && isIDevice()) {\n return;\n }\n else {\n if (!this.parent.inlineMode.enable) {\n this.tbWrapper = this.parent.createElement('div', {\n id: this.parent.getID() + '_toolbar_wrapper',\n innerHTML: this.tbElement.outerHTML,\n className: classes.CLS_TB_WRAP\n });\n this.tbElement = this.tbWrapper.firstElementChild;\n this.parent.element.insertBefore(this.tbWrapper, this.editPanel);\n }\n else {\n this.parent.element.insertBefore(this.tbElement, this.editPanel);\n }\n }\n };\n Toolbar.prototype.getToolbarMode = function () {\n var tbMode;\n switch (this.parent.toolbarSettings.type) {\n case ToolbarType.Expand:\n tbMode = 'Extended';\n break;\n case ToolbarType.Scrollable:\n tbMode = 'Scrollable';\n break;\n default:\n tbMode = 'MultiRow';\n }\n if (isIDevice() && this.parent.toolbarSettings.type === ToolbarType.Expand) {\n tbMode = ToolbarType.Scrollable;\n }\n return tbMode;\n };\n Toolbar.prototype.checkToolbarResponsive = function (ele) {\n if (!Browser.isDevice || isIDevice()) {\n return false;\n }\n var tBarMode;\n if (this.parent.toolbarSettings.type === ToolbarType.Expand) {\n tBarMode = ToolbarType.MultiRow;\n }\n else {\n tBarMode = this.parent.toolbarSettings.type;\n }\n this.baseToolbar.render({\n container: ((this.parent.inlineMode.enable) ? 'quick' : 'toolbar'),\n items: this.parent.toolbarSettings.items,\n mode: tBarMode,\n target: ele,\n cssClass: this.parent.getCssClass()\n });\n if (this.parent.toolbarSettings.type === ToolbarType.Expand) {\n addClass([ele], ['e-rte-tb-mobile']);\n if (this.parent.inlineMode.enable) {\n this.addFixedTBarClass();\n }\n else {\n addClass([ele], [classes.CLS_TB_STATIC]);\n }\n }\n this.wireEvents();\n this.dropDownModule.renderDropDowns({\n container: ele,\n containerType: ((this.parent.inlineMode.enable) ? 'quick' : 'toolbar'),\n items: this.parent.toolbarSettings.items\n });\n this.parent.notify(events.renderColorPicker, {\n container: this.tbElement,\n containerType: ((this.parent.inlineMode.enable) ? 'quick' : 'toolbar'),\n items: this.parent.toolbarSettings.items\n });\n return true;\n };\n Toolbar.prototype.checkIsTransformChild = function () {\n this.isTransformChild = false;\n var transformElements = selectAll('[style*=\"transform\"]', document);\n for (var i = 0; i < transformElements.length; i++) {\n // eslint-disable-next-line max-len\n if (!isNullOrUndefined(transformElements[i].contains) && transformElements[i].contains(this.parent.element)) {\n this.isTransformChild = true;\n break;\n }\n }\n };\n Toolbar.prototype.toggleFloatClass = function (e) {\n var floatOffset = this.parent.floatingToolbarOffset;\n if (this.parent.toolbarSettings.enableFloating) {\n addClass([this.tbElement.parentElement], [classes.CLS_TB_FLOAT]);\n setStyleAttribute(this.tbElement.parentElement, { top: (floatOffset) + 'px' });\n }\n else {\n removeClass([this.tbElement.parentElement], [classes.CLS_TB_FLOAT]);\n setStyleAttribute(this.tbElement.parentElement, { top: '' });\n }\n };\n Toolbar.prototype.renderToolbar = function () {\n this.initializeInstance();\n this.createToolbarElement();\n if (this.checkToolbarResponsive(this.tbElement)) {\n return;\n }\n if (this.parent.inlineMode.enable) {\n this.parent.notify(events.renderInlineToolbar, {});\n }\n else {\n this.baseToolbar.render({\n container: 'toolbar',\n items: this.parent.toolbarSettings.items,\n mode: this.getToolbarMode(),\n target: this.tbElement,\n cssClass: this.parent.getCssClass()\n });\n if (!this.parent.inlineMode.enable) {\n if (this.parent.toolbarSettings.enableFloating) {\n this.checkIsTransformChild();\n this.toggleFloatClass();\n }\n addClass([this.parent.element], [classes.CLS_RTE_TB_ENABLED]);\n if (this.parent.toolbarSettings.type === ToolbarType.Expand) {\n addClass([this.parent.element], [classes.CLS_RTE_EXPAND_TB]);\n }\n }\n }\n this.wireEvents();\n if (this.parent.inlineMode.enable && !isIDevice()) {\n this.addFixedTBarClass();\n }\n if (!this.parent.inlineMode.enable) {\n this.dropDownModule.renderDropDowns({\n container: this.tbElement,\n containerType: 'toolbar',\n items: this.parent.toolbarSettings.items\n });\n this.parent.notify(events.renderColorPicker, {\n container: this.tbElement,\n containerType: 'toolbar',\n items: this.parent.toolbarSettings.items\n });\n this.refreshToolbarOverflow();\n }\n var divEle = this.parent.element.querySelector('.' + classes.CLS_RTE_SOURCE_CODE_TXTAREA);\n var iframeEle = this.parent.element.querySelector('.e-source-content');\n if ((!this.parent.iframeSettings.enable && (!isNOU(divEle) && divEle.style.display === 'block')) ||\n (this.parent.iframeSettings.enable && (!isNOU(iframeEle) && iframeEle.style.display === 'block'))) {\n this.parent.notify(events.updateToolbarItem, {\n targetItem: 'SourceCode', updateItem: 'Preview',\n baseToolbar: this.parent.getBaseToolbarObject()\n });\n this.parent.disableToolbarItem(this.parent.toolbarSettings.items);\n }\n };\n /**\n * addFixedTBarClass method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.addFixedTBarClass = function () {\n addClass([this.tbElement], [classes.CLS_TB_FIXED]);\n };\n /**\n * removeFixedTBarClass method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.removeFixedTBarClass = function () {\n removeClass([this.tbElement], [classes.CLS_TB_FIXED]);\n };\n Toolbar.prototype.showFixedTBar = function () {\n addClass([this.tbElement], [classes.CLS_SHOW]);\n if (Browser.isIos) {\n addClass([this.tbElement], [classes.CLS_TB_IOS_FIX]);\n }\n };\n Toolbar.prototype.hideFixedTBar = function () {\n // eslint-disable-next-line\n (!this.isToolbar) ? removeClass([this.tbElement], [classes.CLS_SHOW, classes.CLS_TB_IOS_FIX]) : this.isToolbar = false;\n };\n /**\n * updateItem method\n *\n * @param {IUpdateItemsModel} args - specifies the arguments.\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.updateItem = function (args) {\n var item = this.tools[args.updateItem.toLocaleLowerCase()];\n if (this.parent.locale !== 'en-US') {\n item.tooltip = getTooltipText(args.updateItem.toLocaleLowerCase(), this.locator);\n }\n var trgItem = this.tools[args.targetItem.toLocaleLowerCase()];\n var index = getTBarItemsIndex(getCollection(trgItem.subCommand), args.baseToolbar.toolbarObj.items)[0];\n if (!isNOU(index)) {\n var prefixId = this.parent.inlineMode.enable ? '_quick_' : '_toolbar_';\n args.baseToolbar.toolbarObj.items[index].id = this.parent.getID() + prefixId + item.id;\n args.baseToolbar.toolbarObj.items[index].prefixIcon = item.icon;\n args.baseToolbar.toolbarObj.items[index].tooltipText = item.tooltip;\n args.baseToolbar.toolbarObj.items[index].subCommand = item.subCommand;\n args.baseToolbar.toolbarObj.dataBind();\n args.baseToolbar.toolbarObj.refreshOverflow();\n }\n else {\n this.addTBarItem(args, 0);\n }\n };\n Toolbar.prototype.updateToolbarStatus = function (args) {\n if (!this.tbElement || (this.parent.inlineMode.enable && (isIDevice() || !Browser.isDevice))) {\n return;\n }\n var options = {\n args: args,\n dropDownModule: this.dropDownModule,\n parent: this.parent,\n tbElements: selectAll('.' + classes.CLS_TB_ITEM, this.tbElement),\n tbItems: this.baseToolbar.toolbarObj.items\n };\n setToolbarStatus(options, (this.parent.inlineMode.enable ? true : false), this.parent);\n };\n Toolbar.prototype.fullScreen = function (e) {\n this.parent.fullScreenModule.showFullScreen(e);\n };\n Toolbar.prototype.hideScreen = function (e) {\n this.parent.fullScreenModule.hideFullScreen(e);\n };\n /**\n * getBaseToolbar method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.getBaseToolbar = function () {\n return this.baseToolbar;\n };\n /**\n * addTBarItem method\n *\n * @param {IUpdateItemsModel} args - specifies the arguments.\n * @param {number} index - specifies the index value.\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.addTBarItem = function (args, index) {\n args.baseToolbar.toolbarObj.addItems([args.baseToolbar.getObject(args.updateItem, 'toolbar')], index);\n };\n /**\n * enableTBarItems method\n *\n * @param {BaseToolbar} baseToolbar - specifies the toolbar.\n * @param {string} items - specifies the string value.\n * @param {boolean} isEnable - specifies the boolean value.\n * @param {boolean} muteToolbarUpdate - specifies the toolbar.\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.enableTBarItems = function (baseToolbar, items, isEnable, muteToolbarUpdate) {\n var trgItems = getTBarItemsIndex(getCollection(items), baseToolbar.toolbarObj.items);\n this.tbItems = selectAll('.' + classes.CLS_TB_ITEM, baseToolbar.toolbarObj.element);\n for (var i = 0; i < trgItems.length; i++) {\n var item = this.tbItems[trgItems[i]];\n if (item) {\n baseToolbar.toolbarObj.enableItems(item, isEnable);\n }\n }\n if (!select('.' + classes.CLS_RTE_SOURCE_CODE_TXTAREA, this.parent.element) && !muteToolbarUpdate) {\n updateUndoRedoStatus(baseToolbar, this.parent.formatter.editorManager.undoRedoManager.getUndoStatus());\n }\n };\n /**\n * removeTBarItems method\n *\n * @param {string} items - specifies the string value.\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.removeTBarItems = function (items) {\n if (isNullOrUndefined(this.baseToolbar.toolbarObj)) {\n this.baseToolbar = this.parent.getBaseToolbarObject();\n }\n var trgItems = getTBarItemsIndex(getCollection(items), this.baseToolbar.toolbarObj.items);\n this.tbItems = (this.parent.inlineMode.enable) ? selectAll('.' + classes.CLS_TB_ITEM, this.baseToolbar.toolbarObj.element)\n : selectAll('.' + classes.CLS_TB_ITEM, this.parent.element);\n for (var i = 0; i < trgItems.length; i++) {\n this.baseToolbar.toolbarObj.removeItems(this.tbItems[trgItems[i]]);\n }\n };\n /**\n * getExpandTBarPopHeight method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.getExpandTBarPopHeight = function () {\n var popHeight = 0;\n if (this.parent.toolbarSettings.type === ToolbarType.Expand && this.tbElement.classList.contains('e-extended-toolbar')) {\n var expandPopup = select('.e-toolbar-extended', this.tbElement);\n if (expandPopup && this.tbElement.classList.contains('e-expand-open')\n || expandPopup && expandPopup.classList.contains('e-popup-open')) {\n addClass([expandPopup], [classes.CLS_VISIBLE]);\n popHeight = popHeight + expandPopup.offsetHeight;\n removeClass([expandPopup], [classes.CLS_VISIBLE]);\n }\n else {\n removeClass([this.tbElement], [classes.CLS_EXPAND_OPEN]);\n }\n }\n return popHeight;\n };\n /**\n * getToolbarHeight method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.getToolbarHeight = function () {\n return this.tbElement.offsetHeight;\n };\n /**\n * getToolbarElement method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.getToolbarElement = function () {\n return select('.' + classes.CLS_TOOLBAR, this.parent.element);\n };\n /**\n * refreshToolbarOverflow method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.refreshToolbarOverflow = function () {\n this.parent.element.classList.remove(classes.CLS_RTL);\n this.baseToolbar.toolbarObj.refreshOverflow();\n if (this.parent.enableRtl) {\n this.parent.element.classList.add(classes.CLS_RTL);\n }\n };\n Toolbar.prototype.isToolbarDestroyed = function () {\n return this.baseToolbar.toolbarObj && !this.baseToolbar.toolbarObj.isDestroyed;\n };\n Toolbar.prototype.destroyToolbar = function () {\n if (this.isToolbarDestroyed()) {\n this.parent.unWireScrollElementsEvents();\n this.unWireEvents();\n this.parent.notify(events.destroyColorPicker, {});\n this.dropDownModule.destroyDropDowns();\n this.baseToolbar.toolbarObj.destroy();\n this.removeEventListener();\n removeClass([this.parent.element], [classes.CLS_RTE_TB_ENABLED]);\n removeClass([this.parent.element], [classes.CLS_RTE_EXPAND_TB]);\n var tbWrapper = select('.' + classes.CLS_TB_WRAP, this.parent.element);\n var tbElement = select('.' + classes.CLS_TOOLBAR, this.parent.element);\n if (!isNullOrUndefined(tbWrapper)) {\n detach(tbWrapper);\n }\n else if (!isNullOrUndefined(tbElement)) {\n detach(tbElement);\n }\n }\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.destroy = function () {\n if (isNOU(this.parent)) {\n return;\n }\n if (this.isToolbarDestroyed()) {\n this.destroyToolbar();\n if (this.keyBoardModule) {\n this.keyBoardModule.destroy();\n }\n }\n };\n Toolbar.prototype.moduleDestroy = function () {\n this.parent = null;\n this.baseToolbar.parent = null;\n this.toolbarActionModule.parent = null;\n this.dropDownModule.parent = null;\n };\n Toolbar.prototype.mouseDownHandler = function () {\n if (Browser.isDevice && this.parent.inlineMode.enable && !isIDevice()) {\n this.showFixedTBar();\n }\n };\n Toolbar.prototype.focusChangeHandler = function () {\n if (Browser.isDevice && this.parent.inlineMode.enable && !isIDevice()) {\n this.isToolbar = false;\n this.hideFixedTBar();\n }\n };\n Toolbar.prototype.dropDownBeforeOpenHandler = function () {\n this.isToolbar = true;\n };\n // eslint-disable-next-line\n Toolbar.prototype.tbFocusHandler = function (e) {\n var activeElm = document.activeElement;\n var isToolbaractive = closest(activeElm, '.e-rte-toolbar');\n if (activeElm === this.parent.getToolbarElement() || isToolbaractive === this.parent.getToolbarElement()) {\n var toolbarItem = this.parent.getToolbarElement().querySelectorAll('.e-expended-nav');\n for (var i = 0; i < toolbarItem.length; i++) {\n if (isNOU(this.parent.getToolbarElement().querySelector('.e-insert-table-btn'))) {\n toolbarItem[i].setAttribute('tabindex', '0');\n }\n else {\n toolbarItem[i].setAttribute('tabindex', '1');\n }\n }\n }\n };\n Toolbar.prototype.toolbarClickHandler = function (e) {\n var trg = closest(e.originalEvent.target, '.e-hor-nav');\n this.adjustContentHeight(trg, false);\n };\n Toolbar.prototype.adjustContentHeight = function (trg, isKeyboard) {\n if (trg && this.parent.toolbarSettings.type === ToolbarType.Expand && !isNOU(trg)) {\n var hasActiveClass = trg.classList.contains('e-nav-active');\n var isExpand = isKeyboard ? (hasActiveClass ? false : true) : (hasActiveClass ? true : false);\n if (isExpand) {\n addClass([this.tbElement], [classes.CLS_EXPAND_OPEN]);\n }\n else {\n removeClass([this.tbElement], [classes.CLS_EXPAND_OPEN]);\n }\n this.parent.setContentHeight('Toolbar', isExpand);\n }\n else if (Browser.isDevice || this.parent.inlineMode.enable) {\n this.isToolbar = true;\n }\n if (isNOU(trg) && this.parent.toolbarSettings.type === ToolbarType.Expand && this.parent.toolbarModule.getExpandTBarPopHeight() === 0) {\n removeClass([this.tbElement], [classes.CLS_EXPAND_OPEN]);\n }\n };\n Toolbar.prototype.wireEvents = function () {\n if (this.parent.inlineMode.enable && isIDevice()) {\n return;\n }\n EventHandler.add(this.tbElement, 'focusin', this.tbFocusHandler, this);\n };\n Toolbar.prototype.unWireEvents = function () {\n EventHandler.remove(this.tbElement, 'focusin', this.tbFocusHandler);\n };\n Toolbar.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.dropDownModule = new DropDownButtons(this.parent, this.locator);\n this.toolbarActionModule = new ToolbarAction(this.parent);\n this.parent.on(events.initialEnd, this.renderToolbar, this);\n this.parent.on(events.bindOnEnd, this.toolbarBindEvent, this);\n this.parent.on(events.toolbarUpdated, this.updateToolbarStatus, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.refreshBegin, this.onRefresh, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.enableFullScreen, this.fullScreen, this);\n this.parent.on(events.disableFullScreen, this.hideScreen, this);\n this.parent.on(events.updateToolbarItem, this.updateItem, this);\n this.parent.on(events.beforeDropDownOpen, this.dropDownBeforeOpenHandler, this);\n this.parent.on(events.expandPopupClick, this.parent.setContentHeight, this.parent);\n this.parent.on(events.focusChange, this.focusChangeHandler, this);\n this.parent.on(events.mouseDown, this.mouseDownHandler, this);\n this.parent.on(events.sourceCodeMouseDown, this.mouseDownHandler, this);\n this.parent.on(events.bindCssClass, this.setCssClass, this);\n this.parent.on(events.moduleDestroy, this.moduleDestroy, this);\n if (!this.parent.inlineMode.enable && !isIDevice()) {\n this.parent.on(events.toolbarClick, this.toolbarClickHandler, this);\n }\n };\n Toolbar.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialEnd, this.renderToolbar);\n this.parent.off(events.bindOnEnd, this.toolbarBindEvent);\n this.parent.off(events.toolbarUpdated, this.updateToolbarStatus);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.refreshBegin, this.onRefresh);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.enableFullScreen, this.parent.fullScreenModule.showFullScreen);\n this.parent.off(events.disableFullScreen, this.parent.fullScreenModule.hideFullScreen);\n this.parent.off(events.updateToolbarItem, this.updateItem);\n this.parent.off(events.beforeDropDownOpen, this.dropDownBeforeOpenHandler);\n this.parent.off(events.expandPopupClick, this.parent.setContentHeight);\n this.parent.off(events.focusChange, this.focusChangeHandler);\n this.parent.off(events.mouseDown, this.mouseDownHandler);\n this.parent.off(events.sourceCodeMouseDown, this.mouseDownHandler);\n this.parent.off(events.bindCssClass, this.setCssClass);\n this.parent.off(events.moduleDestroy, this.moduleDestroy);\n if (!this.parent.inlineMode.enable && !isIDevice()) {\n this.parent.off(events.toolbarClick, this.toolbarClickHandler);\n }\n };\n // eslint-disable-next-line @typescript-eslint/tslint/config\n Toolbar.prototype.setCssClass = function (e) {\n if (this.toolbarObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass)) {\n this.toolbarObj.setProperties({ cssClass: (this.toolbarObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n this.toolbarObj.setProperties({ cssClass: (this.toolbarObj.cssClass.replace(e.oldCssClass, '').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n Toolbar.prototype.onRefresh = function () {\n if (!this.parent.inlineMode.enable) {\n this.refreshToolbarOverflow();\n }\n var isExpand = this.parent.element.querySelectorAll('.e-toolbar-extended.e-popup-open').length > 0 ? true : false;\n this.parent.setContentHeight('Refresh', isExpand);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RichTextEditorModel} e - specifies the string value\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (!isNullOrUndefined(e.newProp.inlineMode)) {\n for (var _i = 0, _a = Object.keys(e.newProp.inlineMode); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enable':\n this.refreshToolbar();\n break;\n }\n }\n }\n if (!isNullOrUndefined(e.newProp.toolbarSettings)) {\n if (!isNullOrUndefined(e.newProp.toolbarSettings.enableFloating)) {\n this.toggleFloatClass();\n }\n }\n if (e.module !== this.getModuleName()) {\n return;\n }\n this.refreshToolbar();\n };\n Toolbar.prototype.refreshToolbar = function () {\n if (isNullOrUndefined(this.baseToolbar.toolbarObj)) {\n this.baseToolbar = this.parent.getBaseToolbarObject();\n }\n var tbWrapper = select('.' + classes.CLS_TB_WRAP, this.parent.element);\n var tbElement = select('.' + classes.CLS_TOOLBAR, this.parent.element);\n if (tbElement || tbWrapper) {\n this.destroyToolbar();\n }\n if (this.parent.toolbarSettings.enable) {\n this.addEventListener();\n this.renderToolbar();\n this.parent.wireScrollElementsEvents();\n if (!select('.' + classes.CLS_RTE_SOURCE_CODE_TXTAREA, this.parent.element)) {\n updateUndoRedoStatus(this.baseToolbar, this.parent.formatter.editorManager.undoRedoManager.getUndoStatus());\n }\n this.parent.notify(events.dynamicModule, {});\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n * @hidden\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { RenderType } from '../base/enum';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\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 if (isNullOrUndefined(this.parent)) {\n return;\n }\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 '<': 188,\n '>': 190\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, CLS_RTE_SOURCE_CODE_TXTAREA } 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: CLS_RTE_SOURCE_CODE_TXTAREA + this.parent.getCssClass(true) });\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 && this.parent.getToolbarElement()) {\n var firstActiveItem = this.parent.getToolbarElement().querySelector('.e-toolbar-item:not(.e-overlay)[title]');\n firstActiveItem.firstElementChild.removeAttribute('tabindex');\n firstActiveItem.firstElementChild.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 var _this = this;\n this.parent.notify(events.hidePopup, {});\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.getID() + '_source-view'))) {\n rteContent = this.parent.createElement('div', {\n className: 'e-source-content', id: this.parent.getID() + '_source-view'\n });\n }\n else {\n rteContent = this.parent.element.querySelector('#' + this.parent.getID() + '_source-view');\n }\n rteContent.appendChild(this.previewElement);\n this.parent.element.appendChild(rteContent);\n rteContent.style.height = this.contentModule.getPanel().style.height;\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 var height = this.parent.inputElement.offsetHeight;\n this.contentModule.getPanel().appendChild(this.previewElement);\n this.getPanel().value = this.getTextAreaValue();\n this.previewElement.style.height = height + 'px';\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 var isExpand = this.parent.element.querySelectorAll('.e-toolbar-extended.e-popup-open').length > 0 ? true : false;\n this.parent.setContentHeight('SourceCode', isExpand);\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 if (placeHolderWrapper) {\n placeHolderWrapper.style.display = 'none';\n }\n }\n this.parent.trigger(events.actionComplete, { requestType: 'SourceCode', targetItem: 'SourceCode', args: args });\n this.parent.invokeChangeEvent();\n if (!isNullOrUndefined(this.parent.saveInterval) && this.parent.saveInterval > 0 && this.parent.autoSaveOnIdle) {\n this.codeViewTimeInterval = setInterval(function () { _this.parent.notify(events.updateValueOnIdle, {}); }, this.parent.saveInterval);\n }\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 var isExpand = this.parent.element.querySelectorAll('.e-toolbar-extended.e-popup-open').length > 0 ? true : false;\n this.parent.setContentHeight('Preview', isExpand);\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 clearTimeout(this.codeViewTimeInterval);\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 if (isNullOrUndefined(this.parent)) {\n return;\n }\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 * 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: '${name}',\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 defaultToolbarItems = ['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(defaultToolbarItems)\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property(true)\n ], ToolbarSettings.prototype, \"visible\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\nvar ToolbarItem = /** @class */ (function (_super) {\n __extends(ToolbarItem, _super);\n function ToolbarItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], ToolbarItem.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ToolbarItem.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], ToolbarItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], ToolbarItem.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], ToolbarItem.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], ToolbarItem.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], ToolbarItem.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], ToolbarItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], ToolbarItem.prototype, \"align\", void 0);\n __decorate([\n Property(-1)\n ], ToolbarItem.prototype, \"tabIndex\", void 0);\n __decorate([\n Property()\n ], ToolbarItem.prototype, \"name\", void 0);\n return ToolbarItem;\n}(ChildProperty));\nexport { ToolbarItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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(null)\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-transform', '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","/**\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.destroyTooltip, { 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('Maximize', 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.destroyTooltip, { 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('Minimize', 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.refreshUI();\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 (isNOU(this.parent)) {\n return;\n }\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 if (isNOU(this.parent)) {\n return;\n }\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')) &&\n isNOU(this.startNode.closest('.e-img-inner')) && 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) &&\n (_this.range.startContainer.textContent.length === 0 ||\n (_this.range.startContainer.nodeName !== '#text' && !isNOU(_this.range.startContainer.querySelector('.e-video-clickelem')) &&\n _this.range.startContainer.querySelector('.e-video-clickelem').textContent.length === 0)) &&\n (_this.range.startContainer.querySelectorAll('img, audio, video').length > 0 ||\n !isNOU(_this.range.startContainer.querySelector('.e-video-clickelem')) ||\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 (nearBlockNode.querySelectorAll('video').length > 0) || (nearBlockNode.querySelectorAll('audio').length > 0) || (nearBlockNode.querySelectorAll('img').length > 0))) {\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' && currentParent.nodeName !== 'P' && currentParent.nodeName !== 'DIV') {\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 var previousBlockNode = this.parent.formatter.editorManager.domNode.blockNodes()[0].previousSibling;\n var nextBlockNode = this.parent.formatter.editorManager.domNode.blockNodes()[0].nextSibling;\n if (!isNOU(previousBlockNode) && previousBlockNode.nodeName !== '#text' && previousBlockNode.hasAttribute('style') && previousBlockNode.nodeName !== 'TABLE') {\n insertElem.setAttribute('style', previousBlockNode.getAttribute('style'));\n }\n if (isNOU(previousBlockNode) && !isNOU(nextBlockNode) && nextBlockNode.nodeName !== '#text' && nextBlockNode.hasAttribute('style') && nextBlockNode.nodeName !== 'TABLE') {\n insertElem.setAttribute('style', nextBlockNode.getAttribute('style'));\n }\n return insertElem;\n };\n return EnterKeyAction;\n}());\nexport { EnterKeyAction };\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { closest, 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 this.parent.on(events.documentClickClosedBy, this.documentClickClosedBy, 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 this.parent.off(events.documentClickClosedBy, this.documentClickClosedBy);\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 e.position = {\n X: 'center',\n Y: (e.target !== 'string' && e.target.nodeName === 'BODY' &&\n !isNOU(e.position)) ? e.position.Y : this.getDialogPosition()\n };\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 if (args.element.classList.contains('e-dialog')) {\n var formEle = closest(args.target, 'form');\n if (!isNOU(formEle)) {\n this.dialogEle = args.element;\n this.dialogEle.addEventListener('keydown', this.handleEnterKeyDown);\n }\n }\n this.parent.trigger(events.beforeDialogOpen, args, this.beforeOpenCallback.bind(this, args));\n };\n DialogRenderer.prototype.handleEnterKeyDown = function (args) {\n if (args.code === 'Enter') {\n args.preventDefault();\n }\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.documentClickClosedBy = function (args) {\n this.outsideClickClosedBy = args.closedBy;\n };\n DialogRenderer.prototype.beforeClose = function (args) {\n if (this.dialogEle) {\n this.dialogEle.removeEventListener('keydown', this.handleEnterKeyDown);\n }\n args.closedBy = this.outsideClickClosedBy === 'outside click' ? this.outsideClickClosedBy : args.closedBy;\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 this.outsideClickClosedBy = \"\";\n };\n DialogRenderer.prototype.getDialogPosition = function () {\n var distanceFromVisibleTop = this.parent.element.getBoundingClientRect().top;\n if (distanceFromVisibleTop < 0) {\n var topHeight = 0;\n var parentElement = this.parent.element;\n while (parentElement.nodeName !== 'BODY') {\n var top_1 = parentElement.getBoundingClientRect().top;\n if (top_1 > 0) {\n topHeight = top_1;\n }\n parentElement = parentElement.parentElement;\n }\n distanceFromVisibleTop = Math.abs(distanceFromVisibleTop) + topHeight;\n return distanceFromVisibleTop.toString();\n }\n else {\n return 'top';\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, 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 modules.push({\n member: 'audio',\n args: [this, this.serviceLocator]\n });\n modules.push({\n member: 'video',\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: '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().parentElement], [classes.CLS_TB_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().replace(/(\\r\\n|\\n|\\r|\\t)/gm, '').replace(/\\u200B/g, '').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 this.value = (!(this.editorMode === 'Markdown') && !isNOU(this.value)) ? this.addAnchorAriaLabel(this.value) : this.value;\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' || this.toolbarSettings.type === 'MultiRow' || this.toolbarSettings.type === 'Scrollable') && !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('Init');\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.getCssClass() });\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 var currentRangeEndOffset = range.endOffset;\n if (currentEndContainer.nodeType === Node.TEXT_NODE) {\n if (currentEndContainer.textContent.charAt(currentRangeEndOffset - 1) === '\\uFEFF') {\n currentRangeEndOffset--;\n }\n }\n if (!isNOU(closestLI) && endNode.textContent.trim().length === currentRangeEndOffset &&\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) ? true : (e.action !== 'format-copy' ? true : false);\n if (this.formatter.getUndoRedoStack().length === 0 && notFormatPainterCopy &&\n !(e.altKey || e.shiftKey || (e.altKey && e.shiftKey && e.which == 67))) {\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') && !isNOU(document.querySelector('#' + e.target.id + '_popup.e-popup-open')) && e.code === 'Tab')) &&\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 if (this.editorMode === 'HTML' && (e.action === 'increase-fontsize' || e.action === 'decrease-fontsize')) {\n this.notify(events.onHandleFontsizeChange, { member: 'onHandleFontsizeChange', args: e });\n }\n else {\n this.formatter.process(this, null, e);\n }\n }\n switch (e.action) {\n case 'toolbar-focus':\n if (this.toolbarSettings.enable && this.getToolbarElement()) {\n var firstActiveItem = this.getToolbarElement().querySelector('.e-toolbar-item:not(.e-overlay)[title]');\n var quickToolbarElem = this.getRenderedQuickToolbarElem();\n if (quickToolbarElem) {\n firstActiveItem = quickToolbarElem.querySelector('.e-toolbar-item:not(.e-overlay)[title]');\n }\n if (firstActiveItem) {\n var firstChild = firstActiveItem.firstElementChild;\n firstChild.removeAttribute('tabindex');\n firstChild.focus();\n }\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.notify(events.afterKeyDown, { member: 'afterKeyDown', args: e });\n this.autoResize();\n };\n RichTextEditor.prototype.keyUp = function (e) {\n if (this.editorMode === 'HTML') {\n var range = this.getRange();\n if (!isNOU(e) && !isNOU(e.code) && (e.code === 'Backspace' || e.code === 'Delete')) {\n // To prevent the reformatting the content removed browser behavior.\n var currentRange = this.getRange();\n var selection = this.iframeSettings.enable ? this.contentModule.getPanel().ownerDocument.getSelection() :\n this.contentModule.getDocument().getSelection();\n if (selection.rangeCount > 0) {\n selection.removeAllRanges();\n selection.addRange(currentRange);\n }\n }\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.autoSaveOnIdle && Browser.isDevice) && !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 || this.formatter.getUndoRedoStack().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)) ||\n (e.target && !isNOU(closest(e.target, 'table'))) ||\n (e.target && (e.target.nodeName === 'VIDEO' ||\n e.target.querySelectorAll('.' + classes.CLS_VIDEOWRAP).length > 0) ||\n (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 };\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.getText().replace(/(\\r\\n|\\n|\\r|\\t)/gm, '').replace(/\\u200B/g, '').length;\n var selectionLength = _this.getSelection().length;\n var pastedContentLength = (isNOU(e) || isNOU(e.clipboardData))\n ? 0 : e.clipboardData.getData('text/plain').replace(/(\\r\\n|\\n|\\r|\\t)/gm, '').replace(/\\u200B/g, '').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 console.warn('[WARNING] :: Module \"pasteCleanup\" is not available in RichTextEditor component! You either misspelled the module name or forgot to load it.');\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 _super.prototype.destroy.call(this);\n this.isRendered = false;\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 };\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 nVal = this.serializeValue(nVal);\n var val = this.editorMode === 'HTML' ? getEditValue(nVal, this) : nVal;\n if ((!isNOU(nVal) && nVal !== '') || prop === 'enterKey') {\n this.setProperties({ value: ((this.enableHtmlEncode) ? this.encode(decode(val)) : val) }, true);\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('Init');\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('Init');\n break;\n case 'toolbarSettings':\n this.notify(events.modelChanged, { module: 'toolbar', newProp: newProp, oldProp: oldProp });\n this.setContentHeight('Init');\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('.' + classes.CLS_RTE_SOURCE_CODE_TXTAREA);\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.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 }\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 && this.inputElement) {\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 (!isNOU(this.iframeSettings.resources.scripts) && this.iframeSettings.resources.scripts.length > 0) {\n this.InjectSheet(true, scriptSrc);\n }\n if (!isNOU(this.iframeSettings.resources.styles) && 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 var editEle = this.contentModule.getEditPanel();\n if (this.editorMode === \"HTML\" && !isNOU(this.formatter.editorManager.nodeSelection) && !isNOU(this.formatter.editorManager.nodeSelection.range)) {\n var currentRange = this.formatter.editorManager.nodeSelection.range;\n if (currentRange.startContainer.nodeType !== 3 && currentRange.startContainer.closest &&\n !isNOU(currentRange.startContainer.closest('TD'))) {\n editEle = currentRange.startContainer;\n }\n }\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 rteHeightPercent;\n var heightPercent = typeof (this.height) === 'string' && this.height.indexOf('%') > -1;\n var cntEle = 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 (target && target !== 'Toolbar' && expandPopHeight && this.element.querySelectorAll('.e-toolbar-extended.e-popup-open').length > 0) {\n tbHeight = tbHeight - expandPopHeight;\n }\n if (this.toolbarSettings.type === ToolbarType.Expand) {\n if (isExpand) {\n heightValue = (this.height === 'auto' && this.element.style.height === 'auto') ? 'auto' : rteHeight - (tbHeight + expandPopHeight + rzHeight) + 'px';\n }\n else {\n heightValue = (this.height === 'auto' && this.element.style.height === 'auto') ? 'auto' : rteHeight - (tbHeight - expandPopHeight + rzHeight) + 'px';\n }\n }\n else {\n heightValue = (this.height === 'auto' && this.element.style.height === 'auto') ? 'auto' : rteHeight - tbHeight + 'px';\n }\n var finalHeight = heightPercent && rteHeightPercent ? rteHeightPercent : heightValue;\n switch (target) {\n case 'Init':\n case 'Toolbar':\n case 'WindowResize':\n case 'Refresh':\n if (this.element.querySelectorAll('.e-source-content').length > 0 && this.element.querySelector('.e-source-content').style.display === 'block') {\n setStyleAttribute(this.element.querySelector('.e-source-content'), { height: finalHeight });\n }\n else {\n setStyleAttribute(cntEle, { height: finalHeight });\n }\n break;\n case 'Resize':\n setStyleAttribute(cntEle, { height: finalHeight });\n break;\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.removeResizeElement(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.removeResizeElement(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 /**\n * @returns {void}\n * getCssClass method\n *\n * @hidden\n\n */\n RichTextEditor.prototype.getCssClass = function (isSpace) {\n return (isNOU(this.cssClass) ? '' : isSpace ? ' ' + this.cssClass : this.cssClass);\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.formatter.editorManager.observer.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', debounce(this.onResizeHandler, 10), 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 (!this.readonly) {\n var currentFocus = this.getCurrentFocus(e);\n if (currentFocus === 'editArea' || currentFocus === 'textArea' || currentFocus === 'sourceCode') {\n this.resetToolbarTabIndex();\n }\n }\n };\n RichTextEditor.prototype.getUpdatedValue = function () {\n var value;\n var getTextArea = this.element.querySelector('.' + classes.CLS_RTE_SOURCE_CODE_TXTAREA);\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.removeResizeElement(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 if (value != null && !this.enableHtmlEncode) {\n value = this.removeResizeElement(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.cleanupResizeElements = function (args) {\n var value = this.removeResizeElement(args.value);\n args.callBack(value);\n };\n RichTextEditor.prototype.addAnchorAriaLabel = function (value) {\n var valueElementWrapper = document.createElement(\"div\");\n valueElementWrapper.innerHTML = value;\n var item = valueElementWrapper.querySelectorAll(\"a\");\n if (item.length > 0) {\n for (var i = 0; i < item.length; i++) {\n (item[i].hasAttribute(\"target\") && item[i].getAttribute(\"target\") === '_blank') ? item[i].setAttribute(\"aria-label\", this.serviceLocator.getService('rteLocale').getConstant(\"linkAriaLabel\")) : item[i];\n }\n }\n return valueElementWrapper.innerHTML;\n };\n RichTextEditor.prototype.removeResizeElement = function (value) {\n var valueElementWrapper = document.createElement(\"div\");\n valueElementWrapper.innerHTML = value;\n var item = valueElementWrapper.querySelectorAll('.e-column-resize, .e-row-resize, .e-table-box, .e-table-rhelper, .e-img-resize');\n if (item.length > 0) {\n for (var i = 0; i < item.length; i++) {\n detach(item[i]);\n }\n }\n this.removeSelectionClassStates(valueElementWrapper);\n return valueElementWrapper.innerHTML;\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 var hideQuickToolbarChecker = this.quickToolbarModule && !this.inlineMode.enable && isNOU(this.quickToolbarModule.inlineQTBar);\n if ((hideQuickToolbarChecker && !isNOU(closest(target, '.' + 'e-toolbar-wrapper'))) || (hideQuickToolbarChecker && (!isNOU(closest(target, '.e-rte-table-resize')) || !isNOU(closest(target, '.e-table-box'))))) {\n this.quickToolbarModule.hideQuickToolbars();\n }\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 && this.iframeSettings.enable) {\n var iframeElement = this.element.querySelector('#' + this.getID() + '_rte-view');\n if (iframeElement && iframeElement.contentWindow.document.body.contains(trg)) {\n rteElement = closest(iframeElement, '.' + classes.CLS_RTE);\n }\n }\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() + '\"]') || closest(trg, '.' + classes.CLS_RTE_ELEMENTS)) {\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.removeSelectionClassStates(this.inputElement);\n this.notify(events.focusChange, {});\n var value = this.getUpdatedValue();\n this.setProperties({ value: value });\n this.valueContainer.value = this.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 if (!this.readonly && this.getCurrentFocus(e) === 'outside') {\n this.resetToolbarTabIndex();\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, video, audio');\n if (this.inlineMode.onSelection === false || (!isNOU(closestElem) && this.inputElement.contains(closestElem)\n && (closestElem.tagName === 'IMG' || closestElem.tagName === 'TABLE' || closestElem.tagName === 'A' ||\n closestElem.tagName.toLowerCase() === 'video' || closestElem.tagName.toLowerCase() === 'audio'))) {\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 = this.element.querySelector('#' + this.getID() + '_rte-view');\n this.setAutoHeight(iframeElement);\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) && !this.iframeSettings.enable) {\n element.style.height = this.inputElement.scrollHeight + 'px';\n element.style.overflow = 'hidden';\n }\n else if (!isNOU(element) && !isNOU(element.parentElement) && this.iframeSettings.enable) {\n var newRange = this.getRange();\n element.style.height = 'auto';\n var newHeight = element.contentDocument.body.scrollHeight + 'px';\n element.style.height = newHeight;\n element.style.overflow = 'hidden';\n // 16 px added for padding doesn't affect the editor height\n if (newRange.startContainer.nodeName !== '#text' && newRange.startContainer.nodeName !== 'BODY' && window.innerHeight < newRange.startContainer.getBoundingClientRect().top + element.getBoundingClientRect().top + 16) {\n newRange.startContainer.scrollIntoView(false);\n }\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 this.on(events.cleanupResizeElements, this.cleanupResizeElements, this);\n this.on(events.updateValueOnIdle, this.updateValueOnIdle, 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 (this.getText().replace(/(\\r\\n|\\n|\\r|\\t)/gm, '').replace(/\\u200B/g, ''));\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, 'content-changed', this.contentChanged, 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', debounce(this.onResizeHandler, 10), 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 this.off(events.cleanupResizeElements, this.cleanupResizeElements);\n this.off(events.updateValueOnIdle, this.updateValueOnIdle);\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, 'content-changed', this.contentChanged);\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', debounce(this.onResizeHandler, 10), 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 /**\n *\n * @param e Focus event\n * @returns string Returns the current focus either `editArea` or `toolbar` or `textArea` or `sourceCode` or `outside` of the RichTextEditor.\n * @hidden\n */\n RichTextEditor.prototype.getCurrentFocus = function (e) {\n if (e.target === this.inputElement && document.activeElement === this.inputElement) {\n return 'editArea';\n }\n else if (e.target === this.getToolbarElement() || (!isNOU(e.relatedTarget) && closest(e.relatedTarget, '.e-rte-toolbar') === this.getToolbarElement())) {\n return 'toolbar';\n }\n else if (e.target === this.valueContainer && document.activeElement === this.valueContainer) {\n return 'textArea';\n }\n else if (!isNOU(e.target) && e.target.classList.contains(classes.CLS_RTE_SOURCE_CODE_TXTAREA) && document.activeElement === e.target) {\n return 'sourceCode';\n }\n return 'outside';\n };\n /**\n * @param {FocusEvent} e - specifies the event.\n * @hidden\n */\n RichTextEditor.prototype.resetToolbarTabIndex = function () {\n if (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.removeSelectionClassStates = function (element) {\n var classNames = [classes.CLS_IMG_FOCUS, classes.CLS_TABLE_SEL, classes.CLS_VID_FOCUS, classes.CLS_AUD_FOCUS];\n for (var i = 0; i < classNames.length; i++) {\n var item = element.querySelectorAll('.' + classNames[i]);\n removeClass(item, classNames[i]);\n if (item.length === 0) {\n continue;\n }\n for (var j = 0; j < item.length; j++) {\n if (item[j].classList.length === 0) {\n item[j].removeAttribute('class');\n }\n if (item[j].nodeName === 'IMG' && item[j].style.outline !== '') {\n item[j].style.outline = '';\n }\n }\n }\n };\n RichTextEditor.prototype.getRenderedQuickToolbarElem = function () {\n var quickToolbars = this.quickToolbarModule.getQuickToolbarInstance();\n for (var i = 0; i < quickToolbars.length; i++) {\n if (quickToolbars[i] && quickToolbars[i].isRendered) {\n return quickToolbars[i].element;\n }\n }\n return null;\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","import { createRef } from \"react\";\r\nimport { ChangeEventArgs, Count, HtmlEditor, Image, Inject, Link, QuickToolbar, RichTextEditorComponent, Table, Toolbar } from \"@syncfusion/ej2-react-richtexteditor\";\r\n\r\ninterface Props {\r\n id?: string;\r\n className?: string;\r\n cssClass?: string;\r\n change?: (args?: ChangeEventArgs) => void;\r\n disabled?: boolean;\r\n value?: string;\r\n enableTabKey?: boolean;\r\n placeholder?: string;\r\n readonly?: boolean;\r\n htmlAttributes?: { [key: string]: string };\r\n};\r\n\r\nexport const DRichTextEditor = ({ id, className, cssClass, change, disabled, value, enableTabKey, placeholder, readonly, htmlAttributes }: Props) => {\r\n const richTextEditorRef = createRef();\r\n\r\n //Settings\r\n const services = [Count, HtmlEditor, Link, Image, QuickToolbar, Table, Toolbar];\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, closest, Collection, Complex, attributes, detach, isNullOrUndefined, animationMode } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, select, isVisible } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Browser, formatUnit, L10n } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, isNullOrUndefined as isNOU, selectAll, addClass, removeClass, remove } from '@syncfusion/ej2-base';\nimport { EventHandler, rippleEffect, Touch, compile, Animation } from '@syncfusion/ej2-base';\nimport { getRandomId, SanitizeHtmlHelper, Draggable } from '@syncfusion/ej2-base';\nimport { Toolbar } from '../toolbar/toolbar';\nvar CLS_TAB = 'e-tab';\nvar CLS_HEADER = 'e-tab-header';\nvar CLS_BLA_TEM = 'blazor-template';\nvar CLS_CONTENT = 'e-content';\nvar CLS_NEST = 'e-nested';\nvar CLS_ITEMS = 'e-items';\nvar CLS_ITEM = 'e-item';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_RTL = 'e-rtl';\nvar CLS_ACTIVE = 'e-active';\nvar CLS_DISABLE = 'e-disable';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_FOCUS = 'e-focused';\nvar CLS_ICONS = 'e-icons';\nvar CLS_ICON = 'e-icon';\nvar CLS_ICON_TAB = 'e-icon-tab';\nvar CLS_ICON_CLOSE = 'e-close-icon';\nvar CLS_CLOSE_SHOW = 'e-close-show';\nvar CLS_TEXT = 'e-tab-text';\nvar CLS_INDICATOR = 'e-indicator';\nvar CLS_WRAP = 'e-tab-wrap';\nvar CLS_TEXT_WRAP = 'e-text-wrap';\nvar CLS_TAB_ICON = 'e-tab-icon';\nvar CLS_TB_ITEMS = 'e-toolbar-items';\nvar CLS_TB_ITEM = 'e-toolbar-item';\nvar CLS_TB_POP = 'e-toolbar-pop';\nvar CLS_TB_POPUP = 'e-toolbar-popup';\nvar CLS_HOR_NAV = 'e-hor-nav';\nvar CLS_POPUP_OPEN = 'e-popup-open';\nvar CLS_POPUP_CLOSE = 'e-popup-close';\nvar CLS_PROGRESS = 'e-progress';\nvar CLS_IGNORE = 'e-ignore';\nvar CLS_OVERLAY = 'e-overlay';\nvar CLS_HSCRCNT = 'e-hscroll-content';\nvar CLS_VSCRCNT = 'e-vscroll-content';\nvar CLS_VTAB = 'e-vertical-tab';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_VLEFT = 'e-vertical-left';\nvar CLS_VRIGHT = 'e-vertical-right';\nvar CLS_HBOTTOM = 'e-horizontal-bottom';\nvar CLS_FILL = 'e-fill-mode';\nvar TABITEMPREFIX = 'tabitem_';\nvar CLS_REORDER_ACTIVE_ITEM = 'e-reorder-active-item';\n/**\n * Objects used for configuring the Tab selecting item action properties.\n */\nvar TabActionSettings = /** @class */ (function (_super) {\n __extends(TabActionSettings, _super);\n function TabActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideLeftIn')\n ], TabActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(600)\n ], TabActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], TabActionSettings.prototype, \"easing\", void 0);\n return TabActionSettings;\n}(ChildProperty));\nexport { TabActionSettings };\n/**\n * Objects used for configuring the Tab animation properties.\n */\nvar TabAnimationSettings = /** @class */ (function (_super) {\n __extends(TabAnimationSettings, _super);\n function TabAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideLeftIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"previous\", void 0);\n __decorate([\n Complex({ effect: 'SlideRightIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"next\", void 0);\n return TabAnimationSettings;\n}(ChildProperty));\nexport { TabAnimationSettings };\n/**\n * Objects used for configuring the Tab item header properties.\n */\nvar Header = /** @class */ (function (_super) {\n __extends(Header, _super);\n function Header() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Header.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], Header.prototype, \"iconCss\", void 0);\n __decorate([\n Property('left')\n ], Header.prototype, \"iconPosition\", void 0);\n return Header;\n}(ChildProperty));\nexport { Header };\n/**\n * An array of object that is used to configure the Tab.\n */\nvar TabItem = /** @class */ (function (_super) {\n __extends(TabItem, _super);\n function TabItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({}, Header)\n ], TabItem.prototype, \"header\", void 0);\n __decorate([\n Property(null)\n ], TabItem.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('')\n ], TabItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], TabItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TabItem.prototype, \"disabled\", void 0);\n __decorate([\n Property(true)\n ], TabItem.prototype, \"visible\", void 0);\n __decorate([\n Property()\n ], TabItem.prototype, \"id\", void 0);\n __decorate([\n Property(-1)\n ], TabItem.prototype, \"tabIndex\", void 0);\n return TabItem;\n}(ChildProperty));\nexport { TabItem };\n/**\n * Tab is a content panel to show multiple contents in a single space, one at a time.\n * Each Tab item has an associated content, that will be displayed based on the active Tab header item.\n * ```html\n *
    \n * \n * ```\n */\nvar Tab = /** @class */ (function (_super) {\n __extends(Tab, _super);\n /**\n * Initializes a new instance of the Tab class.\n *\n * @param {TabModel} options - Specifies Tab model properties as options.\n * @param {string | HTMLElement} element - Specifies the element that is rendered as a Tab.\n */\n function Tab(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.show = {};\n _this.hide = {};\n _this.maxHeight = 0;\n _this.title = 'Close';\n _this.isInteracted = false;\n _this.lastIndex = 0;\n _this.isAdd = false;\n _this.isIconAlone = false;\n _this.draggableItems = [];\n _this.resizeContext = _this.refreshActiveTabBorder.bind(_this);\n /**\n * Contains the keyboard configuration of the Tab.\n */\n _this.keyConfigs = {\n tab: 'tab',\n home: 'home',\n end: 'end',\n enter: 'enter',\n space: 'space',\n delete: 'delete',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow'\n };\n return _this;\n }\n /**\n * Removes the component from the DOM and detaches all its related event handlers, attributes and classes.\n *\n * @returns {void}\n */\n Tab.prototype.destroy = function () {\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n if (!isNOU(this.tbObj)) {\n this.tbObj.destroy();\n this.tbObj = null;\n }\n this.unWireEvents();\n this.element.removeAttribute('aria-disabled');\n this.expTemplateContent();\n if (!this.isTemplate) {\n while (this.element.firstElementChild) {\n remove(this.element.firstElementChild);\n }\n }\n else {\n var cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n this.element.classList.remove(CLS_TEMPLATE);\n if (!isNOU(cntEle)) {\n cntEle.innerHTML = this.cnt;\n }\n }\n if (this.btnCls) {\n this.btnCls = null;\n }\n this.hdrEle = null;\n this.cntEle = null;\n this.tbItems = null;\n this.tbItem = null;\n this.tbPop = null;\n this.prevItem = null;\n this.popEle = null;\n this.bdrLine = null;\n this.content = null;\n this.dragItem = null;\n this.cloneElement = null;\n this.draggingItems = [];\n if (this.draggableItems && this.draggableItems.length > 0) {\n for (var i = 0; i < this.draggableItems.length; i++) {\n this.draggableItems[i].destroy();\n this.draggableItems[i] = null;\n }\n this.draggableItems = [];\n }\n _super.prototype.destroy.call(this);\n this.trigger('destroyed');\n };\n /**\n * Refresh the tab component\n *\n * @returns {void}\n */\n Tab.prototype.refresh = function () {\n if (this.isReact) {\n this.clearTemplate();\n }\n _super.prototype.refresh.call(this);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Initialize component\n *\n * @private\n * @returns {void}\n */\n Tab.prototype.preRender = function () {\n var nested = closest(this.element, '.' + CLS_CONTENT);\n this.prevIndex = 0;\n this.isNested = false;\n this.isPopup = false;\n this.initRender = true;\n this.isSwiped = false;\n this.itemIndexArray = [];\n this.templateEle = [];\n if (this.allowDragAndDrop) {\n this.dragArea = !isNOU(this.dragArea) ? this.dragArea : '#' + this.element.id + ' ' + ('.' + CLS_HEADER);\n }\n if (!isNOU(nested)) {\n nested.parentElement.classList.add(CLS_NEST);\n this.isNested = true;\n }\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : (name === 'edge') ? 'e-edge' : (name === 'safari') ? 'e-safari' : '';\n setStyle(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.setCssClass(this.element, this.cssClass, true);\n attributes(this.element, { 'aria-disabled': 'false' });\n this.setCssClass(this.element, css, true);\n this.updatePopAnimationConfig();\n };\n /**\n * Initialize the component rendering\n *\n * @private\n * @returns {void}\n */\n Tab.prototype.render = function () {\n var _this = this;\n this.btnCls = this.createElement('span', { className: CLS_ICONS + ' ' + CLS_ICON_CLOSE, attrs: { title: this.title } });\n this.tabId = this.element.id.length > 0 ? ('-' + this.element.id) : getRandomId();\n this.renderContainer();\n this.wireEvents();\n this.initRender = false;\n if (this.isReact && this.portals && this.portals.length > 0) {\n this.renderReactTemplates(function () {\n if (!isNOU(_this.tbObj)) {\n _this.tbObj.refreshOverflow();\n }\n _this.refreshActiveBorder();\n });\n }\n };\n Tab.prototype.renderContainer = function () {\n var ele = this.element;\n this.items.forEach(function (item, index) {\n if (isNOU(item.id) && !isNOU(item.setProperties)) {\n item.setProperties({ id: TABITEMPREFIX + index.toString() }, true);\n }\n });\n if (this.items.length > 0 && ele.children.length === 0) {\n ele.appendChild(this.createElement('div', { className: CLS_CONTENT }));\n this.setOrientation(this.headerPlacement, this.createElement('div', { className: CLS_HEADER }));\n this.isTemplate = false;\n }\n else if (this.element.children.length > 0) {\n this.isTemplate = true;\n ele.classList.add(CLS_TEMPLATE);\n var header = ele.querySelector('.' + CLS_HEADER);\n if (header && this.headerPlacement === 'Bottom') {\n this.setOrientation(this.headerPlacement, header);\n }\n }\n if (!isNOU(select('.' + CLS_HEADER, this.element)) && !isNOU(select('.' + CLS_CONTENT, this.element))) {\n this.renderHeader();\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n if (!isNOU(this.tbItems)) {\n rippleEffect(this.tbItems, { selector: '.e-tab-wrap' });\n }\n this.renderContent();\n if (selectAll('.' + CLS_TB_ITEM, this.element).length > 0) {\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n this.bdrLine = this.createElement('div', { className: CLS_INDICATOR + ' ' + CLS_HIDDEN + ' ' + CLS_IGNORE });\n var scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!isNOU(scrCnt)) {\n scrCnt.insertBefore(this.bdrLine, scrCnt.firstChild);\n }\n else {\n this.tbItems.insertBefore(this.bdrLine, this.tbItems.firstChild);\n }\n this.setContentHeight(true);\n this.select(this.selectedItem);\n }\n this.setRTL(this.enableRtl);\n }\n };\n Tab.prototype.renderHeader = function () {\n var _this = this;\n var hdrPlace = this.headerPlacement;\n var tabItems = [];\n this.hdrEle = this.getTabHeader();\n this.addVerticalClass();\n if (!this.isTemplate) {\n tabItems = this.parseObject(this.items, 0);\n }\n else {\n if (this.element.children.length > 1 && this.element.children[1].classList.contains(CLS_HEADER)) {\n this.setProperties({ headerPlacement: 'Bottom' }, true);\n }\n var count = this.hdrEle.children.length;\n var hdrItems = [];\n for (var i = 0; i < count; i++) {\n hdrItems.push(this.hdrEle.children.item(i));\n }\n if (count > 0) {\n var tabItems_1 = this.createElement('div', { className: CLS_ITEMS });\n this.hdrEle.appendChild(tabItems_1);\n hdrItems.forEach(function (item, index) {\n _this.lastIndex = index;\n var attr = {\n className: CLS_ITEM, id: CLS_ITEM + _this.tabId + '_' + index\n };\n var txt = _this.createElement('span', {\n className: CLS_TEXT, attrs: { 'role': 'presentation' }\n }).outerHTML;\n var cont = _this.createElement('div', {\n className: CLS_TEXT_WRAP, innerHTML: txt + _this.btnCls.outerHTML\n }).outerHTML;\n var wrap = _this.createElement('div', {\n className: CLS_WRAP, innerHTML: cont,\n attrs: { role: 'tab', tabIndex: '-1', 'aria-selected': 'false', 'aria-controls': CLS_CONTENT + _this.tabId + '_' + index, 'aria-disabled': 'false' }\n });\n wrap.querySelector('.' + CLS_TEXT).appendChild(item);\n tabItems_1.appendChild(_this.createElement('div', attr));\n selectAll('.' + CLS_ITEM, tabItems_1)[index].appendChild(wrap);\n });\n }\n }\n this.tbObj = new Toolbar({\n width: (hdrPlace === 'Left' || hdrPlace === 'Right') ? 'auto' : '100%',\n height: (hdrPlace === 'Left' || hdrPlace === 'Right') ? '100%' : 'auto',\n overflowMode: this.overflowMode,\n items: (tabItems.length !== 0) ? tabItems : [],\n clicked: this.clickHandler.bind(this),\n scrollStep: this.scrollStep,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n cssClass: this.cssClass\n });\n this.tbObj.isStringTemplate = true;\n this.tbObj.createElement = this.createElement;\n this.tbObj.appendTo(this.hdrEle);\n attributes(this.hdrEle, { role: 'tablist' });\n if (!isNOU(this.element.getAttribute('aria-label'))) {\n this.hdrEle.setAttribute('aria-label', this.element.getAttribute('aria-label'));\n this.element.removeAttribute('aria-label');\n }\n else if (!isNOU(this.element.getAttribute('aria-labelledby'))) {\n this.hdrEle.setAttribute('aria-labelledby', this.element.getAttribute('aria-labelledby'));\n this.element.removeAttribute('aria-labelledby');\n }\n this.setCloseButton(this.showCloseButton);\n var toolbarHeader = this.tbObj.element.querySelector('.' + CLS_TB_ITEMS);\n if (!isNOU(toolbarHeader)) {\n if (isNOU(toolbarHeader.id) || toolbarHeader.id === '') {\n toolbarHeader.id = this.element.id + '_' + 'tab_header_items';\n }\n }\n };\n Tab.prototype.renderContent = function () {\n this.cntEle = select('.' + CLS_CONTENT, this.element);\n var hdrItem = selectAll('.' + CLS_TB_ITEM, this.element);\n if (this.isTemplate) {\n this.cnt = (this.cntEle.children.length > 0) ? this.cntEle.innerHTML : '';\n var contents = this.cntEle.children;\n for (var i = 0; i < hdrItem.length; i++) {\n if (contents.length - 1 >= i) {\n addClass([contents.item(i)], CLS_ITEM);\n attributes(contents.item(i), { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + i });\n contents.item(i).id = CLS_CONTENT + this.tabId + '_' + i;\n }\n }\n }\n };\n Tab.prototype.reRenderItems = function () {\n this.renderContainer();\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n };\n Tab.prototype.parseObject = function (items, index) {\n var _this = this;\n var tbItems = Array.prototype.slice.call(selectAll('.e-tab-header .' + CLS_TB_ITEM, this.element));\n var maxId = this.lastIndex;\n if (!this.isReplace && tbItems.length > 0) {\n var idList_1 = [];\n tbItems.forEach(function (item) {\n idList_1.push(_this.getIndexFromEle(item.id));\n });\n maxId = Math.max.apply(Math, idList_1);\n }\n var tItems = [];\n var txtWrapEle;\n var spliceArray = [];\n var i = 0;\n items.forEach(function (item, i) {\n var pos = (isNOU(item.header) || isNOU(item.header.iconPosition)) ? '' : item.header.iconPosition;\n var css = (isNOU(item.header) || isNOU(item.header.iconCss)) ? '' : item.header.iconCss;\n if ((isNOU(item.headerTemplate)) && (isNOU(item.header) || isNOU(item.header.text) ||\n ((item.header.text.length === 0)) && (css === ''))) {\n spliceArray.push(i);\n return;\n }\n var txt = item.headerTemplate || item.header.text;\n if (typeof txt === 'string' && _this.enableHtmlSanitizer) {\n txt = SanitizeHtmlHelper.sanitize(txt);\n }\n var itemIndex;\n if (_this.isReplace && !isNOU(_this.tbId) && _this.tbId !== '') {\n itemIndex = parseInt(_this.tbId.substring(_this.tbId.lastIndexOf('_') + 1), 10);\n _this.tbId = '';\n }\n else {\n itemIndex = index + i;\n }\n _this.lastIndex = ((tbItems.length === 0) ? i : ((_this.isReplace) ? (itemIndex) : (maxId + 1 + i)));\n var disabled = (item.disabled) ? ' ' + CLS_DISABLE + ' ' + CLS_OVERLAY : '';\n var hidden = (item.visible === false) ? ' ' + CLS_HIDDEN : '';\n txtWrapEle = _this.createElement('div', { className: CLS_TEXT, attrs: { 'role': 'presentation' } });\n var tHtml = ((txt instanceof Object) ? txt.outerHTML : txt);\n var txtEmpty = (!isNOU(tHtml) && tHtml !== '');\n if (!isNOU(txt.tagName)) {\n txtWrapEle.appendChild(txt);\n }\n else {\n _this.headerTextCompile(txtWrapEle, txt, i);\n }\n var tEle;\n var icon = _this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n var tCont = _this.createElement('div', { className: CLS_TEXT_WRAP });\n tCont.appendChild(txtWrapEle);\n if ((txt !== '' && txt !== undefined) && css !== '') {\n if ((pos === 'left' || pos === 'top')) {\n tCont.insertBefore(icon, tCont.firstElementChild);\n }\n else {\n tCont.appendChild(icon);\n }\n tEle = txtWrapEle;\n _this.isIconAlone = false;\n }\n else {\n tEle = ((css === '') ? txtWrapEle : icon);\n if (tEle === icon) {\n detach(txtWrapEle);\n tCont.appendChild(icon);\n _this.isIconAlone = true;\n }\n }\n var tabIndex = isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString();\n var wrapAttrs = (item.disabled) ? {} : { tabIndex: tabIndex, 'data-tabindex': tabIndex, role: 'tab', 'aria-selected': 'false', 'aria-disabled': 'false' };\n tCont.appendChild(_this.btnCls.cloneNode(true));\n var wrap = _this.createElement('div', { className: CLS_WRAP, attrs: wrapAttrs });\n wrap.appendChild(tCont);\n if (_this.itemIndexArray instanceof Array) {\n _this.itemIndexArray.splice((index + i), 0, CLS_ITEM + _this.tabId + '_' + _this.lastIndex);\n }\n var attrObj = {\n id: CLS_ITEM + _this.tabId + '_' + _this.lastIndex, 'data-id': item.id\n };\n var tItem = { htmlAttributes: attrObj, template: wrap };\n tItem.cssClass = ((item.cssClass !== undefined) ? item.cssClass : ' ') + ' ' + disabled + ' ' + hidden + ' '\n + ((css !== '') ? 'e-i' + pos : '') + ' ' + ((!txtEmpty) ? CLS_ICON : '');\n if (pos === 'top' || pos === 'bottom') {\n _this.element.classList.add('e-vertical-icon');\n }\n tItems.push(tItem);\n i++;\n });\n if (!this.isAdd) {\n spliceArray.forEach(function (spliceItemIndex) {\n _this.items.splice(spliceItemIndex, 1);\n });\n }\n if (this.isIconAlone) {\n this.element.classList.add(CLS_ICON_TAB);\n }\n else {\n this.element.classList.remove(CLS_ICON_TAB);\n }\n return tItems;\n };\n Tab.prototype.removeActiveClass = function () {\n var tabHeader = this.getTabHeader();\n if (tabHeader) {\n var tabItems = selectAll('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE, tabHeader);\n [].slice.call(tabItems).forEach(function (node) { return node.classList.remove(CLS_ACTIVE); });\n [].slice.call(tabItems).forEach(function (node) { return node.firstElementChild.setAttribute('aria-selected', 'false'); });\n }\n };\n Tab.prototype.checkPopupOverflow = function (ele) {\n this.tbPop = select('.' + CLS_TB_POP, this.element);\n var popIcon = select('.e-hor-nav', this.element);\n var tbrItems = select('.' + CLS_TB_ITEMS, this.element);\n var lastChild = tbrItems.lastChild;\n var isOverflow = false;\n if (!this.isVertical() && ((this.enableRtl && ((popIcon.offsetLeft + popIcon.offsetWidth) > tbrItems.offsetLeft))\n || (!this.enableRtl && popIcon.offsetLeft < tbrItems.offsetWidth))) {\n isOverflow = true;\n }\n else if (this.isVertical() && (popIcon.offsetTop < lastChild.offsetTop + lastChild.offsetHeight)) {\n isOverflow = true;\n }\n if (isOverflow) {\n ele.classList.add(CLS_TB_POPUP);\n this.tbPop.insertBefore(ele, selectAll('.' + CLS_TB_POPUP, this.tbPop)[0]);\n }\n return true;\n };\n Tab.prototype.popupHandler = function (target) {\n var ripEle = target.querySelector('.e-ripple-element');\n if (!isNOU(ripEle)) {\n ripEle.outerHTML = '';\n target.querySelector('.' + CLS_WRAP).classList.remove('e-ripple');\n }\n this.tbItem = selectAll('.' + CLS_TB_ITEMS + ' .' + CLS_TB_ITEM, this.hdrEle);\n var lastChild = this.tbItem[this.tbItem.length - 1];\n if (this.tbItem.length !== 0) {\n target.classList.remove(CLS_TB_POPUP);\n target.removeAttribute('style');\n this.tbItems.appendChild(target);\n this.actEleId = target.id;\n if (this.checkPopupOverflow(lastChild)) {\n var prevEle = this.tbItems.lastChild.previousElementSibling;\n this.checkPopupOverflow(prevEle);\n }\n this.isPopup = true;\n }\n return selectAll('.' + CLS_TB_ITEM, this.tbItems).length - 1;\n };\n Tab.prototype.setCloseButton = function (val) {\n var trg = select('.' + CLS_HEADER, this.element);\n if (val === true) {\n trg.classList.add(CLS_CLOSE_SHOW);\n }\n else {\n trg.classList.remove(CLS_CLOSE_SHOW);\n }\n this.tbObj.refreshOverflow();\n this.refreshActiveTabBorder();\n };\n Tab.prototype.prevCtnAnimation = function (prev, current) {\n var animation;\n var checkRTL = this.enableRtl || this.element.classList.contains(CLS_RTL);\n if (this.isPopup || prev <= current) {\n if (this.animation.previous.effect === 'SlideLeftIn') {\n animation = {\n name: 'SlideLeftOut',\n duration: this.animation.previous.duration, timingFunction: this.animation.previous.easing\n };\n }\n else {\n animation = null;\n }\n }\n else {\n if (this.animation.next.effect === 'SlideRightIn') {\n animation = {\n name: 'SlideRightOut',\n duration: this.animation.next.duration, timingFunction: this.animation.next.easing\n };\n }\n else {\n animation = null;\n }\n }\n return animation;\n };\n Tab.prototype.triggerPrevAnimation = function (oldCnt, prevIndex) {\n var _this = this;\n var animateObj = this.prevCtnAnimation(prevIndex, this.selectedItem);\n if (!isNOU(animateObj)) {\n animateObj.begin = function () {\n setStyle(oldCnt, { 'position': 'absolute' });\n oldCnt.classList.add(CLS_PROGRESS);\n oldCnt.classList.add('e-view');\n };\n animateObj.end = function () {\n oldCnt.style.display = 'none';\n oldCnt.classList.remove(CLS_ACTIVE);\n oldCnt.classList.remove(CLS_PROGRESS);\n oldCnt.classList.remove('e-view');\n setStyle(oldCnt, { 'display': '', 'position': '' });\n if (oldCnt.childNodes.length === 0 && !_this.isTemplate) {\n detach(oldCnt);\n }\n };\n new Animation(animateObj).animate(oldCnt);\n }\n else {\n oldCnt.classList.remove(CLS_ACTIVE);\n }\n };\n Tab.prototype.triggerAnimation = function (id, value) {\n var _this = this;\n var prevIndex = this.prevIndex;\n var oldCnt;\n var itemCollection = [].slice.call(this.element.querySelector('.' + CLS_CONTENT).children);\n itemCollection.forEach(function (item) {\n if (item.id === _this.prevActiveEle) {\n oldCnt = item;\n }\n });\n var prevEle = this.tbItem[prevIndex];\n var newCnt = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNOU(oldCnt) && !isNOU(prevEle)) {\n var idNo = this.extIndex(prevEle.id);\n oldCnt = this.getTrgContent(this.cntEle, idNo);\n }\n if (!isNOU(newCnt)) {\n this.prevActiveEle = newCnt.id;\n }\n var isPrevent = isNOU(this.animation) || isNOU(this.animation.next.effect) || isNOU(this.animation.previous.effect)\n || this.animation.previous.effect === 'None' || this.animation.next.effect === 'None';\n if (this.initRender || value === false || isPrevent) {\n if (oldCnt && oldCnt !== newCnt) {\n oldCnt.classList.remove(CLS_ACTIVE);\n }\n return;\n }\n var cnt = select('.' + CLS_CONTENT, this.element);\n var animateObj;\n if (this.prevIndex > this.selectedItem && !this.isPopup) {\n var openEff = this.animation.previous.effect;\n animateObj = {\n name: ((openEff === 'None') ? '' : ((openEff !== 'SlideLeftIn') ? openEff : 'SlideLeftIn')),\n duration: (this.animation.previous.duration === 0 && animationMode === 'Enable') ? 600 : this.animation.previous.duration,\n timingFunction: this.animation.previous.easing\n };\n }\n else if (this.isPopup || this.prevIndex < this.selectedItem || this.prevIndex === this.selectedItem) {\n var clsEff = this.animation.next.effect;\n animateObj = {\n name: ((clsEff === 'None') ? '' : ((clsEff !== 'SlideRightIn') ? clsEff : 'SlideRightIn')),\n duration: (this.animation.next.duration === 0 && animationMode === 'Enable') ? 600 : this.animation.next.duration,\n timingFunction: this.animation.next.easing\n };\n }\n animateObj.progress = function () {\n cnt.classList.add(CLS_PROGRESS);\n _this.setActiveBorder();\n };\n animateObj.end = function () {\n cnt.classList.remove(CLS_PROGRESS);\n newCnt.classList.add(CLS_ACTIVE);\n };\n if (!this.initRender && !isNOU(oldCnt)) {\n this.triggerPrevAnimation(oldCnt, prevIndex);\n }\n this.isPopup = false;\n if (animateObj.name === '') {\n newCnt.classList.add(CLS_ACTIVE);\n }\n else {\n new Animation(animateObj).animate(newCnt);\n }\n };\n Tab.prototype.keyPressed = function (trg) {\n var trgParent = closest(trg, '.' + CLS_HEADER + ' .' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (!isNOU(this.popEle) && trg.classList.contains('e-hor-nav')) {\n (this.popEle.classList.contains(CLS_POPUP_OPEN)) ? this.popObj.hide(this.hide) : this.popObj.show(this.show);\n }\n else if (trg.classList.contains('e-scroll-nav')) {\n trg.click();\n }\n else {\n if (!isNOU(trgParent) && trgParent.classList.contains(CLS_ACTIVE) === false) {\n this.selectTab(trgIndex, null, true);\n if (!isNOU(this.popEle)) {\n this.popObj.hide(this.hide);\n }\n }\n }\n };\n Tab.prototype.getTabHeader = function () {\n if (isNOU(this.element)) {\n return undefined;\n }\n var headers = [].slice.call(this.element.children).filter(function (e) { return e.classList.contains(CLS_HEADER); });\n if (headers.length > 0) {\n return headers[0];\n }\n else {\n var wrap = [].slice.call(this.element.children).filter(function (e) { return !e.classList.contains(CLS_BLA_TEM); })[0];\n if (!wrap) {\n return undefined;\n }\n return [].slice.call(wrap.children).filter(function (e) { return e.classList.contains(CLS_HEADER); })[0];\n }\n };\n Tab.prototype.getEleIndex = function (item) {\n return Array.prototype.indexOf.call(selectAll('.' + CLS_TB_ITEM, this.getTabHeader()), item);\n };\n Tab.prototype.extIndex = function (id) {\n return id.replace(CLS_ITEM + this.tabId + '_', '');\n };\n Tab.prototype.expTemplateContent = function () {\n var _this = this;\n this.templateEle.forEach(function (eleStr) {\n if (!isNOU(_this.element.querySelector(eleStr))) {\n document.body.appendChild(_this.element.querySelector(eleStr)).style.display = 'none';\n }\n });\n };\n Tab.prototype.templateCompile = function (ele, cnt, index) {\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content', index);\n if (tempEle.childNodes.length !== 0) {\n ele.appendChild(tempEle);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Tab.prototype.compileElement = function (ele, val, prop, index) {\n var templateFn;\n if (typeof val === 'string') {\n val = val.trim();\n if (this.isVue) {\n templateFn = compile(this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(val) : val);\n }\n else {\n ele.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(val) : val;\n }\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNOU(templateFn)) {\n templateFUN = templateFn({}, this, prop);\n }\n if (!isNOU(templateFn) && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Tab.prototype.headerTextCompile = function (element, text, index) {\n this.compileElement(element, text, 'headerTemplate', index);\n };\n Tab.prototype.getContent = function (ele, cnt, callType, index) {\n var eleStr;\n cnt = isNOU(cnt) ? '' : cnt;\n if (typeof cnt === 'string' || isNOU(cnt.innerHTML)) {\n if (typeof cnt === 'string' && this.enableHtmlSanitizer) {\n cnt = SanitizeHtmlHelper.sanitize(cnt);\n }\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n var eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n if (callType === 'clone') {\n ele.appendChild(eleVal.cloneNode(true));\n }\n else {\n ele.appendChild(eleVal);\n eleVal.style.display = '';\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n ele.appendChild(cnt);\n }\n if (!isNOU(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n };\n Tab.prototype.getTrgContent = function (cntEle, no) {\n var ele;\n if (this.element.classList.contains(CLS_NEST)) {\n ele = select('.' + CLS_NEST + '> .' + CLS_CONTENT + ' > #' + CLS_CONTENT + this.tabId + '_' + no, this.element);\n }\n else {\n ele = this.findEle(cntEle.children, CLS_CONTENT + this.tabId + '_' + no);\n }\n return ele;\n };\n Tab.prototype.findEle = function (items, key) {\n var ele;\n for (var i = 0; i < items.length; i++) {\n if (items[i].id === key) {\n ele = items[i];\n break;\n }\n }\n return ele;\n };\n Tab.prototype.isVertical = function () {\n var isVertical = (this.headerPlacement === 'Left' || this.headerPlacement === 'Right') ? true : false;\n this.scrCntClass = (isVertical) ? CLS_VSCRCNT : CLS_HSCRCNT;\n return isVertical;\n };\n Tab.prototype.addVerticalClass = function () {\n if (this.isVertical()) {\n var tbPos = (this.headerPlacement === 'Left') ? CLS_VLEFT : CLS_VRIGHT;\n addClass([this.hdrEle], [CLS_VERTICAL, tbPos]);\n if (!this.element.classList.contains(CLS_NEST)) {\n addClass([this.element], [CLS_VTAB, tbPos]);\n }\n else {\n addClass([this.hdrEle], [CLS_VTAB, tbPos]);\n }\n }\n if (this.headerPlacement === 'Bottom') {\n addClass([this.hdrEle], [CLS_HBOTTOM]);\n }\n };\n Tab.prototype.updatePopAnimationConfig = function () {\n this.show = { name: (this.isVertical() ? 'FadeIn' : 'SlideDown'), duration: 100 };\n this.hide = { name: (this.isVertical() ? 'FadeOut' : 'SlideUp'), duration: 100 };\n };\n Tab.prototype.changeOrientation = function (place) {\n this.setOrientation(place, this.hdrEle);\n var activeTab = this.hdrEle.querySelector('.' + CLS_ACTIVE);\n var isVertical = this.hdrEle.classList.contains(CLS_VERTICAL) ? true : false;\n removeClass([this.element], [CLS_VTAB]);\n removeClass([this.hdrEle], [CLS_VERTICAL, CLS_VLEFT, CLS_VRIGHT]);\n if (isVertical !== this.isVertical()) {\n this.changeToolbarOrientation();\n if (!isNOU(activeTab) && activeTab.classList.contains(CLS_TB_POPUP)) {\n this.popupHandler(activeTab);\n }\n }\n this.addVerticalClass();\n this.setActiveBorder();\n this.focusItem();\n };\n Tab.prototype.focusItem = function () {\n var curActItem = select(' #' + CLS_ITEM + this.tabId + '_' + this.selectedItem, this.hdrEle);\n if (!isNOU(curActItem)) {\n curActItem.firstElementChild.focus();\n }\n };\n Tab.prototype.changeToolbarOrientation = function () {\n this.tbObj.setProperties({ height: (this.isVertical() ? '100%' : 'auto'), width: (this.isVertical() ? 'auto' : '100%') }, true);\n this.tbObj.changeOrientation();\n this.updatePopAnimationConfig();\n };\n Tab.prototype.setOrientation = function (place, ele) {\n var headerPos = Array.prototype.indexOf.call(this.element.children, ele);\n var contentPos = Array.prototype.indexOf.call(this.element.children, this.element.querySelector('.' + CLS_CONTENT));\n if (place === 'Bottom' && (contentPos > headerPos)) {\n this.element.appendChild(ele);\n }\n else {\n removeClass([ele], [CLS_HBOTTOM]);\n this.element.insertBefore(ele, select('.' + CLS_CONTENT, this.element));\n }\n };\n Tab.prototype.setCssClass = function (ele, cls, val) {\n if (cls === '') {\n return;\n }\n var list = cls.split(' ');\n for (var i = 0; i < list.length; i++) {\n if (val) {\n ele.classList.add(list[i]);\n }\n else {\n ele.classList.remove(list[i]);\n }\n }\n };\n Tab.prototype.setContentHeight = function (val) {\n if (this.element.classList.contains(CLS_FILL)) {\n removeClass([this.element], [CLS_FILL]);\n }\n if (isNOU(this.cntEle)) {\n return;\n }\n var hdrEle = this.getTabHeader();\n if (this.heightAdjustMode === 'None') {\n if (this.height === 'auto') {\n return;\n }\n else {\n if (!this.isVertical()) {\n setStyle(this.cntEle, { 'height': (this.element.clientHeight - hdrEle.offsetHeight) + 'px' });\n }\n }\n }\n else if (this.heightAdjustMode === 'Fill') {\n addClass([this.element], [CLS_FILL]);\n setStyle(this.element, { 'height': '100%' });\n this.cntEle.style.height = 'calc(100% - ' + this.hdrEle.offsetHeight + 'px)';\n }\n else if (this.heightAdjustMode === 'Auto') {\n if (this.isTemplate === true) {\n var cnt = selectAll('.' + CLS_CONTENT + ' > .' + CLS_ITEM, this.element);\n for (var i = 0; i < cnt.length; i++) {\n cnt[i].setAttribute('style', 'display:block; visibility: visible');\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(cnt[i]));\n cnt[i].style.removeProperty('display');\n cnt[i].style.removeProperty('visibility');\n }\n }\n else {\n this.cntEle = select('.' + CLS_CONTENT, this.element);\n if (val === true) {\n this.cntEle.appendChild(this.createElement('div', {\n id: (CLS_CONTENT + this.tabId + '_' + 0), className: CLS_ITEM + ' ' + CLS_ACTIVE,\n attrs: { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + 0 }\n }));\n }\n var ele = this.cntEle.children.item(0);\n for (var i = 0; i < this.items.length; i++) {\n this.getContent(ele, this.items[i].content, 'clone', i);\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(ele));\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild);\n }\n }\n if (this.isReact || this.isAngular || this.isVue) {\n this.clearTemplate(['content']);\n }\n this.templateEle = [];\n this.getContent(ele, this.items[0].content, 'render', 0);\n if (this.prevIndex !== this.selectedItem) {\n ele.classList.remove(CLS_ACTIVE);\n }\n }\n setStyle(this.cntEle, { 'height': this.maxHeight + 'px' });\n }\n else {\n setStyle(this.cntEle, { 'height': 'auto' });\n }\n };\n Tab.prototype.getHeight = function (ele) {\n var cs = window.getComputedStyle(ele);\n return ele.offsetHeight + parseFloat(cs.getPropertyValue('padding-top')) + parseFloat(cs.getPropertyValue('padding-bottom')) +\n parseFloat(cs.getPropertyValue('margin-top')) + parseFloat(cs.getPropertyValue('margin-bottom'));\n };\n Tab.prototype.setActiveBorder = function () {\n var trgHdrEle = this.getTabHeader();\n var trg = select('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE, trgHdrEle);\n if (isNOU(trg)) {\n return;\n }\n if (!this.reorderActiveTab) {\n if (trg.classList.contains(CLS_TB_POPUP) && !this.bdrLine.classList.contains(CLS_HIDDEN)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n if (trgHdrEle && !trgHdrEle.classList.contains(CLS_REORDER_ACTIVE_ITEM)) {\n trgHdrEle.classList.add(CLS_REORDER_ACTIVE_ITEM);\n }\n }\n else if (trgHdrEle) {\n trgHdrEle.classList.remove(CLS_REORDER_ACTIVE_ITEM);\n }\n var root = closest(trg, '.' + CLS_TAB);\n if (this.element !== root) {\n return;\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, trgHdrEle);\n var bar = select('.' + CLS_INDICATOR, trgHdrEle);\n var scrollCnt = select('.' + CLS_TB_ITEMS + ' .' + this.scrCntClass, trgHdrEle);\n if (this.isVertical()) {\n setStyle(bar, { 'left': '', 'right': '' });\n var tbHeight = (isNOU(scrollCnt)) ? this.tbItems.offsetHeight : scrollCnt.offsetHeight;\n if (tbHeight !== 0) {\n setStyle(bar, { 'top': trg.offsetTop + 'px', 'height': trg.offsetHeight + 'px' });\n }\n else {\n setStyle(bar, { 'top': 0, 'height': 0 });\n }\n }\n else {\n if (this.overflowMode === 'MultiRow') {\n var top_1 = this.headerPlacement === 'Bottom' ? trg.offsetTop : trg.offsetHeight + trg.offsetTop;\n setStyle(bar, { 'top': top_1 + 'px', 'height': '' });\n }\n else {\n setStyle(bar, { 'top': '', 'height': '' });\n }\n var tbWidth = (isNOU(scrollCnt)) ? this.tbItems.offsetWidth : scrollCnt.offsetWidth;\n if (tbWidth !== 0) {\n setStyle(bar, { 'left': trg.offsetLeft + 'px', 'right': tbWidth - (trg.offsetLeft + trg.offsetWidth) + 'px' });\n }\n else {\n setStyle(bar, { 'left': 'auto', 'right': 'auto' });\n }\n }\n if (!isNOU(this.bdrLine) && !trg.classList.contains(CLS_TB_POPUP)) {\n this.bdrLine.classList.remove(CLS_HIDDEN);\n }\n };\n Tab.prototype.setActive = function (value, skipDataBind, isInteracted) {\n if (skipDataBind === void 0) { skipDataBind = false; }\n if (isInteracted === void 0) { isInteracted = false; }\n this.tbItem = selectAll('.' + CLS_TB_ITEM, this.getTabHeader());\n var trg = this.tbItem[value];\n if (value < 0 || isNaN(value) || this.tbItem.length === 0 || !isNOU(trg) && trg.classList.contains(CLS_DISABLE)) {\n return;\n }\n if (value >= 0 && !skipDataBind) {\n this.allowServerDataBinding = false;\n this.setProperties({ selectedItem: value }, true);\n this.allowServerDataBinding = true;\n if (!this.initRender) {\n this.serverDataBind();\n }\n }\n if (trg.classList.contains(CLS_ACTIVE)) {\n this.setActiveBorder();\n return;\n }\n if (!this.isTemplate) {\n attributes(trg.firstElementChild, { 'aria-controls': CLS_CONTENT + this.tabId + '_' + value });\n }\n var id = trg.id;\n this.removeActiveClass();\n trg.classList.add(CLS_ACTIVE);\n trg.firstElementChild.setAttribute('aria-selected', 'true');\n var no = Number(this.extIndex(id));\n if (isNOU(this.prevActiveEle)) {\n this.prevActiveEle = CLS_CONTENT + this.tabId + '_' + no;\n }\n if (this.isTemplate) {\n if (select('.' + CLS_CONTENT, this.element).children.length > 0) {\n var trg_1 = this.findEle(select('.' + CLS_CONTENT, this.element).children, CLS_CONTENT + this.tabId + '_' + no);\n if (!isNOU(trg_1)) {\n trg_1.classList.add(CLS_ACTIVE);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n }\n else {\n this.cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n var item = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNOU(item)) {\n this.cntEle.appendChild(this.createElement('div', {\n id: CLS_CONTENT + this.tabId + '_' + this.extIndex(id), className: CLS_ITEM + ' ' + CLS_ACTIVE,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + this.extIndex(id) }\n }));\n var eleTrg = this.getTrgContent(this.cntEle, this.extIndex(id));\n var itemIndex = Array.prototype.indexOf.call(this.itemIndexArray, id);\n this.getContent(eleTrg, this.items[itemIndex].content, 'render', itemIndex);\n }\n else {\n item.classList.add(CLS_ACTIVE);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n this.setActiveBorder();\n this.refreshItemVisibility(trg);\n if (!this.initRender && !skipDataBind) {\n var eventArg = {\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: trg,\n selectedIndex: value,\n selectedContent: select('#' + CLS_CONTENT + this.tabId + '_' + this.selectingID, this.content),\n isSwiped: this.isSwiped,\n isInteracted: isInteracted,\n preventFocus: false\n };\n this.trigger('selected', eventArg, function (selectEventArgs) {\n if (!selectEventArgs.preventFocus) {\n trg.firstElementChild.focus();\n }\n });\n }\n };\n Tab.prototype.setItems = function (items) {\n this.isReplace = true;\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.tbObj.items = this.parseObject(items, 0);\n this.tbObj.dataBind();\n this.isReplace = false;\n };\n Tab.prototype.setRTL = function (value) {\n this.tbObj.enableRtl = value;\n this.tbObj.dataBind();\n this.setCssClass(this.element, CLS_RTL, value);\n this.refreshActiveBorder();\n };\n Tab.prototype.refreshActiveBorder = function () {\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n this.setActiveBorder();\n };\n Tab.prototype.showPopup = function (config) {\n var tbPop = select('.e-popup.e-toolbar-pop', this.hdrEle);\n if (tbPop && tbPop.classList.contains('e-popup-close')) {\n var tbPopObj = (tbPop && tbPop.ej2_instances[0]);\n tbPopObj.position.X = (this.headerPlacement === 'Left' || this.element.classList.contains(CLS_RTL)) ? 'left' : 'right';\n tbPopObj.dataBind();\n tbPopObj.show(config);\n }\n };\n Tab.prototype.bindDraggable = function () {\n var _this = this;\n if (this.allowDragAndDrop) {\n var tabHeader = this.element.querySelector('.' + CLS_HEADER);\n if (tabHeader) {\n var items = Array.prototype.slice.call(tabHeader.querySelectorAll('.' + CLS_TB_ITEM));\n items.forEach(function (element) {\n _this.initializeDrag(element);\n });\n }\n }\n };\n Tab.prototype.wireEvents = function () {\n this.bindDraggable();\n window.addEventListener('resize', this.resizeContext);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'keydown', this.spaceKeyDown, this);\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n this.keyModule = new KeyboardEvents(this.element, { keyAction: this.keyHandler.bind(this), keyConfigs: this.keyConfigs });\n this.tabKeyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyHandler.bind(this),\n keyConfigs: { openPopup: 'shift+f10', tab: 'tab', shiftTab: 'shift+tab' },\n eventName: 'keydown'\n });\n };\n Tab.prototype.unWireEvents = function () {\n if (!isNOU(this.keyModule)) {\n this.keyModule.destroy();\n }\n if (!isNOU(this.tabKeyModule)) {\n this.tabKeyModule.destroy();\n }\n if (!isNOU(this.cntEle) && !isNOU(this.touchModule)) {\n this.touchModule.destroy();\n this.touchModule = null;\n }\n window.removeEventListener('resize', this.resizeContext);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'keydown', this.spaceKeyDown);\n this.element.classList.remove(CLS_RTL);\n this.element.classList.remove(CLS_FOCUS);\n };\n Tab.prototype.clickHandler = function (args) {\n this.element.classList.remove(CLS_FOCUS);\n var trg = args.originalEvent.target;\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (trg.classList.contains(CLS_ICON_CLOSE)) {\n this.removeTab(trgIndex);\n }\n else if (this.isVertical() && closest(trg, '.' + CLS_HOR_NAV)) {\n this.showPopup(this.show);\n }\n else {\n this.isPopup = false;\n if (!isNOU(trgParent) && (trgIndex !== this.selectedItem)) {\n this.selectTab(trgIndex, args.originalEvent, true);\n }\n }\n };\n Tab.prototype.swipeHandler = function (e) {\n if (e.velocity < 3 && isNOU(e.originalEvent.changedTouches)) {\n return;\n }\n if (this.isNested) {\n this.element.setAttribute('data-swipe', 'true');\n }\n var nestedTab = this.element.querySelector('[data-swipe=\"true\"]');\n if (nestedTab) {\n nestedTab.removeAttribute('data-swipe');\n return;\n }\n this.isSwiped = true;\n if (e.swipeDirection === 'Right' && this.selectedItem !== 0) {\n for (var k = this.selectedItem - 1; k >= 0; k--) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.selectTab(k, null, true);\n break;\n }\n }\n }\n else if (e.swipeDirection === 'Left' && (this.selectedItem !== selectAll('.' + CLS_TB_ITEM, this.element).length - 1)) {\n for (var i = this.selectedItem + 1; i < this.tbItem.length; i++) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN)) {\n this.selectTab(i, null, true);\n break;\n }\n }\n }\n this.isSwiped = false;\n };\n Tab.prototype.spaceKeyDown = function (e) {\n if ((e.keyCode === 32 && e.which === 32) || (e.keyCode === 35 && e.which === 35)) {\n var clstHead = closest(e.target, '.' + CLS_HEADER);\n if (!isNOU(clstHead)) {\n e.preventDefault();\n }\n }\n };\n Tab.prototype.keyHandler = function (e) {\n if (this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n this.element.classList.add(CLS_FOCUS);\n var trg = e.target;\n var tabHeader = this.getTabHeader();\n var actEle = select('.' + CLS_ACTIVE, tabHeader);\n this.popEle = select('.' + CLS_TB_POP, tabHeader);\n if (!isNOU(this.popEle)) {\n this.popObj = this.popEle.ej2_instances[0];\n }\n var item = closest(document.activeElement, '.' + CLS_TB_ITEM);\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n switch (e.action) {\n case 'space':\n case 'enter':\n if (trg.parentElement.classList.contains(CLS_DISABLE)) {\n return;\n }\n if (e.action === 'enter' && trg.classList.contains('e-hor-nav')) {\n this.showPopup(this.show);\n break;\n }\n this.keyPressed(trg);\n break;\n case 'tab':\n case 'shiftTab':\n if (trg.classList.contains(CLS_WRAP)\n && closest(trg, '.' + CLS_TB_ITEM).classList.contains(CLS_ACTIVE) === false) {\n trg.setAttribute('tabindex', trg.getAttribute('data-tabindex'));\n }\n if (this.popObj && isVisible(this.popObj.element)) {\n this.popObj.hide(this.hide);\n }\n if (!isNOU(actEle) && actEle.children.item(0).getAttribute('tabindex') === '-1') {\n actEle.children.item(0).setAttribute('tabindex', '0');\n }\n break;\n case 'moveLeft':\n case 'moveRight':\n if (!isNOU(item)) {\n this.refreshItemVisibility(item);\n }\n break;\n case 'openPopup':\n e.preventDefault();\n if (!isNOU(this.popEle) && this.popEle.classList.contains(CLS_POPUP_CLOSE)) {\n this.popObj.show(this.show);\n }\n break;\n case 'delete':\n if (this.showCloseButton === true && !isNOU(trgParent)) {\n var nxtSib = trgParent.nextSibling;\n if (!isNOU(nxtSib) && nxtSib.classList.contains(CLS_TB_ITEM)) {\n nxtSib.firstElementChild.focus();\n }\n this.removeTab(this.getEleIndex(trgParent));\n }\n this.setActiveBorder();\n break;\n }\n };\n Tab.prototype.refreshItemVisibility = function (target) {\n var scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!this.isVertical() && !isNOU(scrCnt)) {\n var scrBar = select('.e-hscroll-bar', this.tbItems);\n var scrStart = scrBar.scrollLeft;\n var scrEnd = scrStart + scrBar.offsetWidth;\n var eleStart = target.offsetLeft;\n var eleWidth = target.offsetWidth;\n var eleEnd = target.offsetLeft + target.offsetWidth;\n if ((scrStart < eleStart) && (scrEnd < eleEnd)) {\n var eleViewRange = scrEnd - eleStart;\n scrBar.scrollLeft = scrStart + (eleWidth - eleViewRange);\n }\n else {\n if ((scrStart > eleStart) && (scrEnd > eleEnd)) {\n var eleViewRange = eleEnd - scrStart;\n scrBar.scrollLeft = scrStart - (eleWidth - eleViewRange);\n }\n }\n }\n else {\n return;\n }\n };\n Tab.prototype.getIndexFromEle = function (id) {\n return parseInt(id.substring(id.lastIndexOf('_') + 1), 10);\n };\n Tab.prototype.hoverHandler = function (e) {\n var trg = e.target;\n if (!isNOU(trg.classList) && trg.classList.contains(CLS_ICON_CLOSE)) {\n trg.setAttribute('title', new L10n('tab', { closeButtonTitle: this.title }, this.locale).getConstant('closeButtonTitle'));\n }\n };\n Tab.prototype.evalOnPropertyChangeItems = function (newProp, oldProp) {\n var _this = this;\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProp = Object.keys(newProp.items);\n for (var i = 0; i < changedProp.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[i], 10);\n var properties = Object.keys(newProp.items[index]);\n for (var j = 0; j < properties.length; j++) {\n var oldVal = Object(oldProp.items[index])[properties[j]];\n var newVal = Object(newProp.items[index])[properties[j]];\n var hdr = this.element.querySelectorAll('.' + CLS_TB_ITEM)[index];\n var itemIndex = void 0;\n if (hdr && !isNOU(hdr.id) && hdr.id !== '') {\n itemIndex = this.getIndexFromEle(hdr.id);\n }\n else {\n itemIndex = index;\n }\n var hdrItem = select('.' + CLS_TB_ITEMS + ' #' + CLS_ITEM + this.tabId + '_' + itemIndex, this.element);\n var cntItem = select('.' + CLS_CONTENT + ' #' + CLS_CONTENT + this.tabId + '_' + itemIndex, this.element);\n if (properties[j] === 'header' || properties[j] === 'headerTemplate') {\n var icon = (isNOU(this.items[index].header) ||\n isNOU(this.items[index].header.iconCss)) ? '' : this.items[index].header.iconCss;\n var textVal = this.items[index].headerTemplate || this.items[index].header.text;\n if (properties[j] === 'headerTemplate') {\n this.clearTabTemplate(hdrItem, properties[j], CLS_TB_ITEM);\n }\n if ((textVal === '') && (icon === '')) {\n this.removeTab(index);\n }\n else {\n this.tbId = hdr.id;\n var arr = [];\n arr.push(this.items[index]);\n this.items.splice(index, 1);\n this.itemIndexArray.splice(index, 1);\n this.tbObj.items.splice(index, 1);\n var isHiddenEle = hdrItem.classList.contains(CLS_HIDDEN);\n detach(hdrItem);\n this.isReplace = true;\n this.addTab(arr, index);\n if (isHiddenEle) {\n this.hideTab(index);\n }\n this.isReplace = false;\n }\n }\n if (properties[j] === 'content' && !isNOU(cntItem)) {\n var strVal = typeof newVal === 'string' || isNOU(newVal.innerHTML);\n if (strVal && (newVal[0] === '.' || newVal[0] === '#') && newVal.length) {\n var eleVal = document.querySelector(newVal);\n cntItem.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else if (newVal === '' && oldVal[0] === '#') {\n document.body.appendChild(this.element.querySelector(oldVal)).style.display = 'none';\n cntItem.innerHTML = newVal;\n }\n else if (this.isAngular || this.isReact) {\n this.clearTabTemplate(cntItem, properties[j], CLS_ITEM);\n cntItem.innerHTML = '';\n this.templateCompile(cntItem, newVal, index);\n }\n else if (typeof newVal !== 'function') {\n cntItem.innerHTML = newVal;\n }\n }\n if (properties[j] === 'cssClass') {\n if (!isNOU(hdrItem)) {\n hdrItem.classList.remove(oldVal);\n hdrItem.classList.add(newVal);\n }\n if (!isNOU(cntItem)) {\n cntItem.classList.remove(oldVal);\n cntItem.classList.add(newVal);\n }\n }\n if (properties[j] === 'disabled') {\n this.enableTab(index, ((newVal === true) ? false : true));\n }\n if (properties[j] === 'visible') {\n this.hideTab(index, ((newVal === true) ? false : true));\n }\n }\n }\n if (this.isReact && this.portals && this.portals.length > 0) {\n this.renderReactTemplates(function () {\n _this.refreshActiveTabBorder();\n });\n }\n }\n else {\n this.lastIndex = 0;\n if (isNOU(this.tbObj)) {\n this.reRenderItems();\n }\n else {\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n this.setItems(newProp.items);\n if (this.templateEle.length > 0) {\n this.expTemplateContent();\n }\n this.templateEle = [];\n var selectElement = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n while (selectElement.firstElementChild) {\n detach(selectElement.firstElementChild);\n }\n this.select(this.selectedItem);\n this.draggableItems = [];\n this.bindDraggable();\n }\n }\n };\n Tab.prototype.clearTabTemplate = function (templateEle, templateName, className) {\n if (!this.clearTemplates) {\n return;\n }\n if (this.registeredTemplate && this.registeredTemplate[templateName]) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[templateName].length; index++) {\n var registeredItem = registeredTemplates[templateName][index].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + className);\n if (!isNullOrUndefined(closestItem) && closestItem === templateEle) {\n this.clearTemplate([templateName], [registeredTemplates[templateName][index]]);\n break;\n }\n }\n }\n else if (this.portals && this.portals.length > 0) {\n var portals = this.portals;\n for (var index = 0; index < portals.length; index++) {\n var portalItem = portals[index];\n var closestItem = closest(portalItem.containerInfo, '.' + className);\n if (!isNullOrUndefined(closestItem) && closestItem === templateEle) {\n this.clearTemplate([templateName], index);\n break;\n }\n }\n }\n };\n Tab.prototype.initializeDrag = function (target) {\n var _this = this;\n var dragObj = new Draggable(target, {\n dragArea: this.dragArea,\n dragTarget: '.' + CLS_TB_ITEM,\n clone: true,\n helper: this.helper.bind(this),\n dragStart: this.itemDragStart.bind(this),\n drag: function (e) {\n var dragIndex = _this.getEleIndex(_this.dragItem);\n var dropIndex;\n var dropItem;\n var dragArgs = {\n draggedItem: _this.dragItem,\n event: e.event,\n target: e.target,\n droppedItem: e.target.closest('.' + CLS_TB_ITEM),\n clonedElement: _this.cloneElement,\n index: dragIndex\n };\n if (!isNOU(e.target.closest('.' + CLS_TAB)) && !e.target.closest('.' + CLS_TAB).isEqualNode(_this.element) &&\n _this.dragArea !== '.' + CLS_HEADER) {\n _this.trigger('dragging', dragArgs);\n }\n else {\n if (!(e.target.closest(_this.dragArea)) && _this.overflowMode !== 'Popup') {\n document.body.style.cursor = 'not-allowed';\n addClass([_this.cloneElement], CLS_HIDDEN);\n if (_this.dragItem.classList.contains(CLS_HIDDEN)) {\n removeClass([_this.dragItem], CLS_HIDDEN);\n }\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'visible';\n }\n else {\n document.body.style.cursor = '';\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'hidden';\n if (_this.cloneElement.classList.contains(CLS_HIDDEN)) {\n removeClass([_this.cloneElement], CLS_HIDDEN);\n }\n }\n if (_this.overflowMode === 'Scrollable' && !isNOU(_this.element.querySelector('.e-hscroll'))) {\n var scrollRightNavEle = _this.element.querySelector('.e-scroll-right-nav');\n var scrollLeftNavEle = _this.element.querySelector('.e-scroll-left-nav');\n var hscrollBar = _this.element.querySelector('.e-hscroll-bar');\n if (!isNOU(scrollRightNavEle) && Math.abs((scrollRightNavEle.offsetWidth / 2) +\n scrollRightNavEle.offsetLeft) > _this.cloneElement.offsetLeft + _this.cloneElement.offsetWidth) {\n hscrollBar.scrollLeft -= 10;\n }\n if (!isNOU(scrollLeftNavEle) && Math.abs((scrollLeftNavEle.offsetLeft + scrollLeftNavEle.offsetWidth) -\n _this.cloneElement.offsetLeft) > (scrollLeftNavEle.offsetWidth / 2)) {\n hscrollBar.scrollLeft += 10;\n }\n }\n _this.cloneElement.style.pointerEvents = 'none';\n dropItem = closest(e.target, '.' + CLS_TB_ITEM + '.e-draggable');\n var scrollContentWidth = 0;\n if (_this.overflowMode === 'Scrollable' && !isNOU(_this.element.querySelector('.e-hscroll'))) {\n scrollContentWidth = _this.element.querySelector('.e-hscroll-content').offsetWidth;\n }\n if (dropItem != null && !dropItem.isSameNode(_this.dragItem) &&\n dropItem.closest('.' + CLS_TAB).isSameNode(_this.dragItem.closest('.' + CLS_TAB))) {\n dropIndex = _this.getEleIndex(dropItem);\n if (dropIndex < dragIndex &&\n (Math.abs((dropItem.offsetLeft + dropItem.offsetWidth) -\n _this.cloneElement.offsetLeft) > (dropItem.offsetWidth / 2))) {\n _this.dragAction(dropItem, dragIndex, dropIndex);\n }\n if (dropIndex > dragIndex &&\n (Math.abs(dropItem.offsetWidth / 2) + dropItem.offsetLeft -\n scrollContentWidth) < _this.cloneElement.offsetLeft + _this.cloneElement.offsetWidth) {\n _this.dragAction(dropItem, dragIndex, dropIndex);\n }\n }\n _this.droppedIndex = _this.getEleIndex(_this.dragItem);\n _this.trigger('dragging', dragArgs);\n }\n },\n dragStop: this.itemDragStop.bind(this)\n });\n this.draggableItems.push(dragObj);\n };\n Tab.prototype.helper = function (e) {\n this.cloneElement = this.createElement('div');\n if (e.element) {\n this.cloneElement = (e.element.cloneNode(true));\n addClass([this.cloneElement], 'e-tab-clone-element');\n if (this.element.querySelector('.' + CLS_HEADER).classList.contains(CLS_CLOSE_SHOW)) {\n addClass([this.cloneElement], CLS_CLOSE_SHOW);\n }\n removeClass([this.cloneElement.querySelector('.' + CLS_WRAP)], 'e-ripple');\n if (!isNOU(this.cloneElement.querySelector('.e-ripple-element'))) {\n remove(this.cloneElement.querySelector('.e-ripple-element'));\n }\n document.body.appendChild(this.cloneElement);\n }\n return this.cloneElement;\n };\n Tab.prototype.itemDragStart = function (e) {\n var _this = this;\n this.draggingItems = this.items.map(function (x) { return x; });\n this.dragItem = e.element;\n var dragArgs = {\n draggedItem: e.element,\n event: e.event,\n target: e.target,\n droppedItem: null,\n index: this.getEleIndex(this.dragItem),\n clonedElement: this.cloneElement,\n cancel: false\n };\n this.trigger('onDragStart', dragArgs, function (tabItemDragArgs) {\n if (tabItemDragArgs.cancel) {\n var dragObj = e.element.ej2_instances[0];\n if (!isNullOrUndefined(dragObj)) {\n dragObj.intDestroy(e.event);\n }\n detach(_this.cloneElement);\n }\n else {\n _this.removeActiveClass();\n addClass([_this.tbItems.querySelector('.' + CLS_INDICATOR)], CLS_HIDDEN);\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'hidden';\n }\n });\n };\n Tab.prototype.dragAction = function (dropItem, dragsIndex, dropIndex) {\n if (this.items.length > 0) {\n var item = this.draggingItems[dragsIndex];\n this.draggingItems.splice(dragsIndex, 1);\n this.draggingItems.splice(dropIndex, 0, item);\n }\n if (this.overflowMode === 'MultiRow') {\n dropItem.parentNode.insertBefore(this.dragItem, dropItem.nextElementSibling);\n }\n if (dragsIndex > dropIndex) {\n if (!(this.dragItem.parentElement).isSameNode(dropItem.parentElement)) {\n if (this.overflowMode === 'Extended') {\n if (dropItem.isSameNode(dropItem.parentElement.lastChild)) {\n var popupContainer = this.dragItem.parentNode;\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n popupContainer.insertBefore(dropItem.parentElement.lastChild, popupContainer.childNodes[0]);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement.lastChild), this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n else {\n var lastEle = (dropItem.parentElement).lastChild;\n if (dropItem.isSameNode(lastEle)) {\n var popupContainer = this.dragItem.parentNode;\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n popupContainer.insertBefore(lastEle, popupContainer.childNodes[0]);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement).lastChild, this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n }\n else {\n this.dragItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n if (dragsIndex < dropIndex) {\n if (!(this.dragItem.parentElement).isSameNode(dropItem.parentElement)) {\n if (this.overflowMode === 'Extended') {\n this.dragItem.parentElement.appendChild(dropItem.parentElement.firstElementChild);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem.nextSibling);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement).lastChild, this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n else {\n this.dragItem.parentNode.insertBefore(this.dragItem, dropItem.nextElementSibling);\n }\n }\n };\n Tab.prototype.itemDragStop = function (e) {\n var _this = this;\n detach(this.cloneElement);\n this.cloneElement = null;\n this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'visible';\n document.body.style.cursor = '';\n var dragStopArgs = {\n draggedItem: this.dragItem,\n event: e.event,\n target: e.target,\n droppedItem: this.tbItem[this.droppedIndex],\n clonedElement: null,\n index: this.droppedIndex,\n cancel: false\n };\n this.trigger('dragged', dragStopArgs, function (tabItemDropArgs) {\n if (tabItemDropArgs.cancel) {\n _this.refresh();\n }\n else {\n if (_this.items.length > 0 && _this.draggingItems.length > 0) {\n _this.items = _this.draggingItems;\n _this.selectedItem = _this.droppedIndex;\n _this.refresh();\n }\n else {\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = '';\n removeClass([_this.tbItems.querySelector('.' + CLS_INDICATOR)], CLS_HIDDEN);\n _this.selectTab(_this.droppedIndex, null, true);\n }\n }\n });\n this.dragItem = null;\n };\n /**\n * Enables or disables the specified Tab item. On passing value as `false`, the item will be disabled.\n *\n * @param {number} index - Index value of target Tab item.\n * @param {boolean} value - Boolean value that determines whether the command should be enabled or disabled.\n * By default, isEnable is true.\n * @returns {void}.\n */\n Tab.prototype.enableTab = function (index, value) {\n var tbItems = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(tbItems)) {\n return;\n }\n if (value === true) {\n tbItems.classList.remove(CLS_DISABLE, CLS_OVERLAY);\n tbItems.firstElementChild.setAttribute('tabindex', tbItems.firstElementChild.getAttribute('data-tabindex'));\n }\n else {\n tbItems.classList.add(CLS_DISABLE, CLS_OVERLAY);\n tbItems.firstElementChild.removeAttribute('tabindex');\n if (tbItems.classList.contains(CLS_ACTIVE)) {\n this.select(index + 1);\n }\n }\n if (!isNOU(this.items[index])) {\n this.items[index].disabled = !value;\n this.dataBind();\n }\n tbItems.firstElementChild.setAttribute('aria-disabled', (value === true) ? 'false' : 'true');\n };\n /**\n * Adds new items to the Tab that accepts an array as Tab items.\n *\n * @param {TabItemModel[]} items - An array of item that is added to the Tab.\n * @param {number} index - Number value that determines where the items to be added. By default, index is 0.\n * @returns {void}.\n */\n Tab.prototype.addTab = function (items, index) {\n var _this = this;\n var addArgs = { addedItems: items, cancel: false };\n if (!this.isReplace) {\n this.trigger('adding', addArgs, function (tabAddingArgs) {\n if (!tabAddingArgs.cancel) {\n _this.addingTabContent(items, index);\n }\n });\n }\n else {\n this.addingTabContent(items, index);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Tab.prototype.addingTabContent = function (items, index) {\n var _this = this;\n var lastEleIndex = 0;\n this.hdrEle = select('.' + CLS_HEADER, this.element);\n if (isNOU(this.hdrEle)) {\n this.items = items;\n this.reRenderItems();\n this.bindDraggable();\n }\n else {\n var itemsCount = selectAll('.e-tab-header .' + CLS_TB_ITEM, this.element).length;\n if (itemsCount !== 0) {\n lastEleIndex = this.lastIndex + 1;\n }\n if (isNOU(index)) {\n index = itemsCount - 1;\n }\n if (itemsCount < index || index < 0 || isNaN(index)) {\n return;\n }\n if (itemsCount === 0 && !isNOU(this.hdrEle)) {\n this.hdrEle.style.display = '';\n }\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.isAdd = true;\n var tabItems_2 = this.parseObject(items, index);\n this.isAdd = false;\n var i_1 = 0;\n var textValue_1;\n items.forEach(function (item, place) {\n textValue_1 = item.headerTemplate || item.header.text;\n if (!(isNOU(item.headerTemplate || item.header) || isNOU(textValue_1) ||\n (textValue_1.length === 0) && !isNOU(item.header) && isNOU(item.header.iconCss))) {\n if (tabItems_2[place]) {\n if (isNOU(item.id)) {\n item.id = CLS_ITEM + _this.tabId + '_' + TABITEMPREFIX + (lastEleIndex + place).toString();\n }\n tabItems_2[place].htmlAttributes['data-id'] = item.id;\n }\n _this.items.splice((index + i_1), 0, item);\n i_1++;\n }\n if (_this.isTemplate && !isNOU(item.header) && !isNOU(item.header.text)) {\n var no = lastEleIndex + place;\n var ele = _this.createElement('div', {\n id: CLS_CONTENT + _this.tabId + '_' + no, className: CLS_ITEM,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM + '_' + no }\n });\n _this.cntEle.insertBefore(ele, _this.cntEle.children[(index + place)]);\n var eleTrg = _this.getTrgContent(_this.cntEle, no.toString());\n _this.getContent(eleTrg, item.content, 'render', index);\n }\n });\n this.tbObj.addItems(tabItems_2, index);\n if (!this.isReplace) {\n this.trigger('added', { addedItems: items });\n }\n if (this.selectedItem === index) {\n this.select(index);\n }\n else {\n this.setActiveBorder();\n this.tbItem = selectAll('.' + CLS_TB_ITEM, this.getTabHeader());\n }\n this.bindDraggable();\n }\n };\n /**\n * Removes the items in the Tab from the specified index.\n *\n * @param {number} index - Index of target item that is going to be removed.\n * @returns {void}.\n */\n Tab.prototype.removeTab = function (index) {\n var _this = this;\n var trg = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(trg)) {\n return;\n }\n var removeArgs = { removedItem: trg, removedIndex: index, cancel: false };\n this.trigger('removing', removeArgs, function (tabRemovingArgs) {\n if (!tabRemovingArgs.cancel) {\n var header = select('#' + CLS_ITEM + _this.tabId + '_' + _this.extIndex(trg.id), select('.' + CLS_TB_ITEMS, _this.element));\n if (!isNOU(header)) {\n _this.clearTabTemplate(header, 'headerTemplate', CLS_TB_ITEM);\n }\n _this.tbObj.removeItems(index);\n if (_this.allowDragAndDrop && (index !== Array.prototype.indexOf.call(_this.itemIndexArray, trg.id))) {\n index = Array.prototype.indexOf.call(_this.itemIndexArray, trg.id);\n }\n var targetEleIndex = _this.itemIndexArray.indexOf(trg.id);\n _this.items.splice(targetEleIndex, 1);\n _this.itemIndexArray.splice(targetEleIndex, 1);\n _this.refreshActiveBorder();\n var cntTrg = select('#' + CLS_CONTENT + _this.tabId + '_' + _this.extIndex(trg.id), select('.' + CLS_CONTENT, _this.element));\n if (!isNOU(cntTrg)) {\n _this.clearTabTemplate(cntTrg, 'content', CLS_ITEM);\n detach(cntTrg);\n }\n _this.trigger('removed', tabRemovingArgs);\n if (_this.draggableItems && _this.draggableItems.length > 0) {\n _this.draggableItems[index].destroy();\n _this.draggableItems[index] = null;\n _this.draggableItems.splice(index, 1);\n }\n if (trg.classList.contains(CLS_ACTIVE)) {\n index = (index > selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_TB_POPUP + ')', _this.element).length - 1) ? index - 1 : index;\n _this.enableAnimation = false;\n _this.selectedItem = index;\n _this.select(index);\n }\n else if (index !== _this.selectedItem) {\n if (index < _this.selectedItem) {\n index = _this.itemIndexArray.indexOf(_this.tbItem[_this.selectedItem].id);\n _this.setProperties({ selectedItem: index > -1 ? index : _this.selectedItem }, true);\n _this.prevIndex = _this.selectedItem;\n }\n _this.tbItem = selectAll('.' + CLS_TB_ITEM, _this.getTabHeader());\n }\n if (selectAll('.' + CLS_TB_ITEM, _this.element).length === 0) {\n _this.hdrEle.style.display = 'none';\n }\n _this.enableAnimation = true;\n }\n });\n };\n /**\n * Shows or hides the Tab that is in the specified index.\n *\n * @param {number} index - Index value of target item.\n * @param {boolean} value - Based on this Boolean value, item will be hide (false) or show (true). By default, value is true.\n * @returns {void}.\n */\n Tab.prototype.hideTab = function (index, value) {\n var items;\n var item = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(item)) {\n return;\n }\n if (isNOU(value)) {\n value = true;\n }\n this.bdrLine.classList.add(CLS_HIDDEN);\n if (value === true) {\n item.classList.add(CLS_HIDDEN);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN + ')', this.tbItems);\n if (items.length !== 0 && item.classList.contains(CLS_ACTIVE)) {\n if (index !== 0) {\n for (var i = index - 1; i >= 0; i--) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN)) {\n this.select(i);\n break;\n }\n else if (i === 0) {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n }\n }\n else {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n }\n else if (items.length === 0) {\n this.element.classList.add(CLS_HIDDEN);\n }\n }\n else {\n this.element.classList.remove(CLS_HIDDEN);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN + ')', this.tbItems);\n item.classList.remove(CLS_HIDDEN);\n if (items.length === 0) {\n this.select(index);\n }\n }\n this.setActiveBorder();\n if (!isNullOrUndefined(item.firstElementChild)) {\n item.firstElementChild.setAttribute('aria-hidden', '' + value);\n }\n if (this.overflowMode === 'Popup' && this.tbObj) {\n this.tbObj.refreshOverflow();\n }\n };\n Tab.prototype.selectTab = function (args, event, isInteracted) {\n if (event === void 0) { event = null; }\n if (isInteracted === void 0) { isInteracted = false; }\n this.isInteracted = isInteracted;\n this.select(args, event);\n };\n /**\n * Specifies the index or HTMLElement to select an item from the Tab.\n *\n * @param {number | HTMLElement} args - Index or DOM element is used for selecting an item from the Tab.\n * @param {Event} event - An event which takes place in DOM.\n * @returns {void}\n */\n Tab.prototype.select = function (args, event) {\n var _this = this;\n var tabHeader = this.getTabHeader();\n this.tbItems = select('.' + CLS_TB_ITEMS, tabHeader);\n this.tbItem = selectAll('.' + CLS_TB_ITEM, tabHeader);\n this.content = select('.' + CLS_CONTENT, this.element);\n this.prevItem = this.tbItem[this.prevIndex];\n if (isNOU(this.selectedItem) || (this.selectedItem < 0) || (this.tbItem.length <= this.selectedItem) || isNaN(this.selectedItem)) {\n this.selectedItem = 0;\n }\n else {\n this.selectedID = this.extIndex(this.tbItem[this.selectedItem].id);\n }\n var trg = this.tbItem[args];\n if (isNOU(trg)) {\n this.selectedID = '0';\n }\n else {\n this.selectingID = this.extIndex(trg.id);\n }\n if (!isNOU(this.prevItem) && !this.prevItem.classList.contains(CLS_DISABLE)) {\n this.prevItem.children.item(0).setAttribute('tabindex', this.prevItem.firstElementChild.getAttribute('tabindex'));\n }\n var eventArg = {\n event: event,\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: this.tbItem[this.selectedItem],\n selectedIndex: this.selectedItem,\n selectedContent: !isNOU(this.content) ?\n select('#' + CLS_CONTENT + this.tabId + '_' + this.selectedID, this.content) : null,\n selectingItem: trg,\n selectingIndex: args,\n selectingContent: !isNOU(this.content) ?\n select('#' + CLS_CONTENT + this.tabId + '_' + this.selectingID, this.content) : null,\n isSwiped: this.isSwiped,\n isInteracted: this.isInteracted,\n cancel: false\n };\n if (!this.initRender) {\n this.trigger('selecting', eventArg, function (selectArgs) {\n if (!selectArgs.cancel) {\n _this.selectingContent(args, _this.isInteracted);\n }\n });\n }\n else {\n this.selectingContent(args, this.isInteracted);\n }\n this.isInteracted = false;\n };\n Tab.prototype.selectingContent = function (args, isInteracted) {\n if (typeof args === 'number') {\n if (!isNOU(this.tbItem[args]) && (this.tbItem[args].classList.contains(CLS_DISABLE) ||\n this.tbItem[args].classList.contains(CLS_HIDDEN))) {\n for (var i = args + 1; i < this.items.length; i++) {\n if (this.items[i].disabled === false && this.items[i].visible === true) {\n args = i;\n break;\n }\n else {\n args = 0;\n }\n }\n }\n if (this.tbItem.length > args && args >= 0 && !isNaN(args)) {\n this.prevIndex = this.selectedItem;\n this.prevItem = this.tbItem[this.prevIndex];\n if (this.tbItem[args].classList.contains(CLS_TB_POPUP) && this.reorderActiveTab) {\n this.setActive(this.popupHandler(this.tbItem[args]), null, isInteracted);\n if ((!isNOU(this.items) && this.items.length > 0) && this.allowDragAndDrop) {\n this.tbItem = selectAll('.' + CLS_TB_ITEMS + ' .' + CLS_TB_ITEM, this.hdrEle);\n var item = this.items[args];\n this.items.splice(args, 1);\n this.items.splice(this.tbItem.length - 1, 0, item);\n var itemId = this.itemIndexArray[args];\n this.itemIndexArray.splice(args, 1);\n this.itemIndexArray.splice(this.tbItem.length - 1, 0, itemId);\n }\n }\n else {\n this.setActive(args, null, isInteracted);\n }\n }\n else {\n this.setActive(0, null, isInteracted);\n }\n }\n else if (args instanceof (HTMLElement)) {\n this.setActive(this.getEleIndex(args), null, isInteracted);\n }\n };\n /**\n * Gets the item index from the Tab.\n *\n * @param {string} tabItemId - Item ID is used for getting index from the Tab.\n * @returns {number} - It returns item index.\n */\n Tab.prototype.getItemIndex = function (tabItemId) {\n var tabIndex;\n for (var i = 0; i < this.tbItem.length; i++) {\n var value = this.tbItem[i].getAttribute('data-id');\n if (tabItemId === value) {\n tabIndex = i;\n break;\n }\n }\n return tabIndex;\n };\n /**\n * Specifies the value to disable/enable the Tab component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Tab will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Tab.prototype.disable = function (value) {\n this.setCssClass(this.element, CLS_DISABLE, value);\n this.element.setAttribute('aria-disabled', '' + value);\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - It returns the persisted state.\n */\n Tab.prototype.getPersistData = function () {\n return this.addOnPersist(['selectedItem', 'actEleId']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Tab.prototype.getModuleName = function () {\n return 'tab';\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {TabModel} newProp - It contains the new value of data.\n * @param {TabModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n Tab.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n setStyle(this.element, { width: formatUnit(newProp.width) });\n break;\n case 'height':\n setStyle(this.element, { height: formatUnit(newProp.height) });\n this.setContentHeight(false);\n break;\n case 'cssClass':\n var headerEle = this.element.querySelector('.' + CLS_HEADER);\n if (oldProp.cssClass !== '' && !isNullOrUndefined(oldProp.cssClass)) {\n this.setCssClass(this.element, oldProp.cssClass, false);\n this.setCssClass(this.element, newProp.cssClass, true);\n if (!isNullOrUndefined(headerEle)) {\n this.setCssClass(headerEle, oldProp.cssClass, false);\n this.setCssClass(headerEle, newProp.cssClass, true);\n }\n }\n else {\n this.setCssClass(this.element, newProp.cssClass, true);\n if (!isNullOrUndefined(headerEle)) {\n this.setCssClass(headerEle, newProp.cssClass, true);\n }\n }\n break;\n case 'items':\n this.evalOnPropertyChangeItems(newProp, oldProp);\n break;\n case 'showCloseButton':\n this.setCloseButton(newProp.showCloseButton);\n break;\n case 'reorderActiveTab':\n this.refreshActiveTabBorder();\n break;\n case 'selectedItem':\n this.selectedItem = oldProp.selectedItem;\n this.select(newProp.selectedItem);\n break;\n case 'headerPlacement':\n this.changeOrientation(newProp.headerPlacement);\n break;\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n case 'overflowMode':\n this.tbObj.overflowMode = newProp.overflowMode;\n this.tbObj.dataBind();\n this.refreshActiveTabBorder();\n break;\n case 'heightAdjustMode':\n this.setContentHeight(false);\n this.select(this.selectedItem);\n break;\n case 'scrollStep':\n if (this.tbObj) {\n this.tbObj.scrollStep = this.scrollStep;\n }\n break;\n case 'allowDragAndDrop':\n this.bindDraggable();\n break;\n case 'dragArea':\n if (this.allowDragAndDrop) {\n this.draggableItems.forEach(function (item) {\n item.dragArea = _this.dragArea;\n });\n this.refresh();\n }\n break;\n }\n }\n };\n /**\n * To refresh the active tab contents.\n *\n * @returns {void}\n */\n Tab.prototype.refreshActiveTab = function () {\n if (this.isReact && this.isTemplate) {\n this.clearTemplate();\n }\n if (!this.isTemplate) {\n if (this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE)) {\n detach(this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).children[0]);\n detach(this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).children[0]);\n var item = this.items[this.selectedItem];\n var pos = (isNOU(item.header) || isNOU(item.header.iconPosition)) ? '' : item.header.iconPosition;\n var css = (isNOU(item.header) || isNOU(item.header.iconCss)) ? '' : item.header.iconCss;\n var text = item.headerTemplate || item.header.text;\n var txtWrap = this.createElement('div', { className: CLS_TEXT, attrs: { 'role': 'presentation' } });\n if (!isNOU(text.tagName)) {\n txtWrap.appendChild(text);\n }\n else {\n this.headerTextCompile(txtWrap, text, this.selectedItem);\n }\n var tEle = void 0;\n var icon = this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n var tConts = this.createElement('div', { className: CLS_TEXT_WRAP });\n tConts.appendChild(txtWrap);\n if ((text !== '' && text !== undefined) && css !== '') {\n if ((pos === 'left' || pos === 'top')) {\n tConts.insertBefore(icon, tConts.firstElementChild);\n }\n else {\n tConts.appendChild(icon);\n }\n tEle = txtWrap;\n this.isIconAlone = false;\n }\n else {\n tEle = ((css === '') ? txtWrap : icon);\n if (tEle === icon) {\n detach(txtWrap);\n tConts.appendChild(icon);\n this.isIconAlone = true;\n }\n }\n var tabIndex = isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString();\n var wrapAtt = (item.disabled) ? {} : { tabIndex: tabIndex, 'data-tabindex': tabIndex, role: 'tab', 'aria-selected': 'true', 'aria-disabled': 'false' };\n tConts.appendChild(this.btnCls.cloneNode(true));\n var wraper = this.createElement('div', { className: CLS_WRAP, attrs: wrapAtt });\n wraper.appendChild(tConts);\n if (pos === 'top' || pos === 'bottom') {\n this.element.classList.add('e-vertical-icon');\n }\n this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).appendChild(wraper);\n var crElem = this.createElement('div');\n var cnt = item.content;\n var eleStr = void 0;\n if (typeof cnt === 'string' || isNOU(cnt.innerHTML)) {\n if (typeof cnt === 'string' && this.enableHtmlSanitizer) {\n cnt = SanitizeHtmlHelper.sanitize(cnt);\n }\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n var eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n crElem.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else {\n this.compileElement(crElem, cnt, 'content', this.selectedItem);\n }\n }\n else {\n this.compileElement(crElem, cnt, 'content', this.selectedItem);\n }\n }\n else {\n crElem.appendChild(cnt);\n }\n if (!isNOU(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n this.element.querySelector('.' + CLS_ITEM + '.' + CLS_ACTIVE).appendChild(crElem);\n }\n }\n else {\n var tabItems = this.element.querySelector('.' + CLS_TB_ITEMS);\n var element = this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE);\n var index = this.getIndexFromEle(element.id);\n var header = element.innerText;\n var detachContent = this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).children[0];\n var mainContents = detachContent.innerHTML;\n detach(element);\n detach(detachContent);\n var attr = {\n className: CLS_TB_ITEM + ' ' + CLS_TEMPLATE + ' ' + CLS_ACTIVE, id: CLS_ITEM + this.tabId + '_' + index\n };\n var txtString = this.createElement('span', {\n className: CLS_TEXT, innerHTML: header, attrs: { 'role': 'presentation' }\n }).outerHTML;\n var conte = this.createElement('div', {\n className: CLS_TEXT_WRAP, innerHTML: txtString + this.btnCls.outerHTML\n }).outerHTML;\n var tabIndex = element.firstElementChild.getAttribute('data-tabindex');\n var wrap = this.createElement('div', {\n className: CLS_WRAP, innerHTML: conte,\n attrs: { tabIndex: tabIndex, 'data-tabindex': tabIndex, role: 'tab', 'aria-controls': CLS_CONTENT + this.tabId + '_' + index, 'aria-selected': 'true', 'aria-disabled': 'false' }\n });\n tabItems.insertBefore(this.createElement('div', attr), tabItems.children[index + 1]);\n this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).appendChild(wrap);\n var crElem = this.createElement('div', { innerHTML: mainContents });\n this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).appendChild(crElem);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * To refresh the active tab indicator.\n *\n * @returns {void}\n */\n Tab.prototype.refreshActiveTabBorder = function () {\n var activeEle = select('.' + CLS_TB_ITEM + '.' + CLS_TB_POPUP + '.' + CLS_ACTIVE, this.element);\n if (!isNOU(activeEle) && this.reorderActiveTab) {\n this.select(this.getEleIndex(activeEle));\n }\n this.refreshActiveBorder();\n };\n __decorate([\n Collection([], TabItem)\n ], Tab.prototype, \"items\", void 0);\n __decorate([\n Property('100%')\n ], Tab.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tab.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Tab.prototype, \"cssClass\", void 0);\n __decorate([\n Property(0)\n ], Tab.prototype, \"selectedItem\", void 0);\n __decorate([\n Property('Top')\n ], Tab.prototype, \"headerPlacement\", void 0);\n __decorate([\n Property('Content')\n ], Tab.prototype, \"heightAdjustMode\", void 0);\n __decorate([\n Property('Scrollable')\n ], Tab.prototype, \"overflowMode\", void 0);\n __decorate([\n Property('Dynamic')\n ], Tab.prototype, \"loadOn\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], Tab.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"showCloseButton\", void 0);\n __decorate([\n Property(true)\n ], Tab.prototype, \"reorderActiveTab\", void 0);\n __decorate([\n Property()\n ], Tab.prototype, \"scrollStep\", void 0);\n __decorate([\n Property()\n ], Tab.prototype, \"dragArea\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(true)\n ], Tab.prototype, \"clearTemplates\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Tab.prototype, \"animation\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"adding\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"added\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"selecting\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"selected\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"onDragStart\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"dragging\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"dragged\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"destroyed\", void 0);\n Tab = __decorate([\n NotifyPropertyChanges\n ], Tab);\n return Tab;\n}(Component));\nexport { Tab };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Tab } from '@syncfusion/ej2-navigations';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React Tab Component.\n * ```html\n * \n * ```\n */\nvar TabComponent = /** @class */ (function (_super) {\n __extends(TabComponent, _super);\n function TabComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = { 'tabItems': 'tabItem' };\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n TabComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return TabComponent;\n}(Tab));\nexport { TabComponent };\napplyMixins(TabComponent, [ComponentBase, React.Component]);\n","import { RefObject, createRef } from \"react\";\r\nimport {\r\n SelectingEventArgs,\r\n TabComponent,\r\n TabItemModel,\r\n} from \"@syncfusion/ej2-react-navigations\";\r\n\r\nimport \"./styles.scss\";\r\n\r\ninterface Props {\r\n className?: string;\r\n items: TabItemModel[];\r\n selecting?: (args: SelectingEventArgs) => void;\r\n tabComponentRef?: RefObject;\r\n}\r\n\r\nexport const DTab = ({ className, items, selecting, tabComponentRef = createRef() }: Props) => {\r\n const select = (args: SelectingEventArgs) => {\r\n if (args.isSwiped) //FIXME: disable tab change when swapping inside tab body\r\n args.cancel = true;\r\n if (selecting) selecting(args);\r\n }\r\n\r\n return (\r\n \r\n );\r\n}","import { createRef, useEffect } from \"react\";\r\nimport { TextBoxComponent, InputEventArgs } from \"@syncfusion/ej2-react-inputs\";\r\n\r\nimport \"./styles.scss\";\r\n\r\ninterface Props {\r\n name?: string;\r\n placeholder?: string;\r\n value?: string;\r\n className?: string;\r\n type?: string;\r\n icon?: string;\r\n disabled?: boolean;\r\n multiline?: boolean;\r\n required?: boolean;\r\n floatLabelType?: \"Always\" | \"Never\" | \"Auto\";\r\n input?: (a?: InputEventArgs) => void;\r\n htmlAttributes?: { [key: string]: string };\r\n}\r\n\r\nexport const DTextBox = ({\r\n name,\r\n placeholder,\r\n value,\r\n className,\r\n multiline,\r\n type,\r\n icon,\r\n disabled,\r\n required,\r\n floatLabelType = \"Always\",\r\n input,\r\n htmlAttributes,\r\n}: Props) => {\r\n const ref = createRef();\r\n let iconAdded = false;\r\n\r\n useEffect(() => {\r\n if (!iconAdded && icon && ref.current) {\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n iconAdded = true;\r\n ref.current.addIcon(\"prepend\", icon);\r\n ref.current.cssClass += \" dtextbox-icon-label--margin\";\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [icon]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, NotifyPropertyChanges, Animation, createElement, animationMode, initializeCSPTemplate } 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 = typeof value == 'object' ? templateCompiler(value) : templateCompiler(initializeCSPTemplate(function () { return 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 === 'None' && animationMode === 'Enable') ? 'FadeOut' : 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 === \"None\" && animationMode === 'Enable') ? 'FadeIn' : 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { Toast } from '@syncfusion/ej2-notifications';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React Toast Component\n * ```html\n * \n * ```\n */\nvar ToastComponent = /** @class */ (function (_super) {\n __extends(ToastComponent, _super);\n function ToastComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = { 'buttonModelProps': 'buttonModelProp' };\n _this.statelessTemplateProps = [\"content\"];\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n ToastComponent.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 ToastComponent;\n}(Toast));\nexport { ToastComponent };\napplyMixins(ToastComponent, [ComponentBase, React.Component]);\n","import {forwardRef} from \"react\";\r\nimport { ToastComponent } from \"@syncfusion/ej2-react-notifications\";\r\n\r\nexport const DToast = forwardRef((props, ref) => {\r\n return (\r\n \r\n );\r\n});\r\n","import { ToastModel } from \"@syncfusion/ej2-react-notifications\";\r\nimport {\r\n DWarningSymbolString,\r\n DErrorSymbolString,\r\n DInfoSymbolString,\r\n DSuccessSymbolString,\r\n} from \"..\";\r\n\r\nexport class DSuccessToastModel implements ToastModel {\r\n title: string = \"Successo\";\r\n cssClass: string = \"e-toast-success\";\r\n icon: string = DSuccessSymbolString;\r\n content: string;\r\n\r\n constructor(content: string) {\r\n this.content = content;\r\n }\r\n}\r\n\r\nexport class DWarningToastModel implements ToastModel {\r\n title: string = \"Avvertenza\";\r\n cssClass: string = \"e-toast-warning\";\r\n icon: string = DWarningSymbolString;\r\n content: string;\r\n\r\n constructor(content: string) {\r\n this.content = content;\r\n }\r\n}\r\n\r\nexport class DInformationToastModel implements ToastModel {\r\n title: string = \"Informazzione\";\r\n cssClass: string = \"e-toast-info\";\r\n icon: string = DInfoSymbolString;\r\n content: string;\r\n\r\n constructor(content: string) {\r\n this.content = content;\r\n }\r\n}\r\n\r\nexport class DErrorToastModel implements ToastModel {\r\n title: string = \"Errore\";\r\n cssClass: string = \"e-toast-danger\";\r\n icon: string = DErrorSymbolString;\r\n content: string;\r\n\r\n constructor(content: string) {\r\n this.content = content;\r\n }\r\n}\r\n","import { createContext, useContext } from \"react\";\r\n\r\nexport const createGenericContext = () => {\r\n const genericContext = createContext(undefined);\r\n\r\n const useGenericContext = () => {\r\n const contextIsDefined = useContext(genericContext);\r\n if (!contextIsDefined) {\r\n throw new Error(\"useGenericContext must be used within a Provider\");\r\n }\r\n return contextIsDefined;\r\n };\r\n\r\n return [useGenericContext, genericContext.Provider] as const;\r\n};","import { createRef } from \"react\";\r\nimport { ToastComponent, ToastModel } from \"@syncfusion/ej2-react-notifications\";\r\nimport { DToast } from \"components\";\r\nimport { createGenericContext } from \"./_helpers\";\r\n\r\ninterface AppContextProps {\r\n showToast: (toastItem: ToastModel) => void;\r\n}\r\n\r\nconst [\r\n useGenericContext,\r\n ContextProvider,\r\n] = createGenericContext();\r\n\r\nexport const AppContextProvider = ({ children }) => {\r\n const toastRef = createRef();\r\n\r\n const showToast = (toastItem: ToastModel) => {\r\n if (toastRef.current) toastRef.current.show(toastItem);\r\n };\r\n\r\n return (\r\n \r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport const useAppContext = () => useGenericContext();\r\n","import { Dispatch, SetStateAction, useState } from \"react\";\r\nimport { createGenericContext } from \"./_helpers\";\r\n\r\ninterface UserDialogContextProps {\r\n userId?: string;\r\n setUserId: Dispatch>;\r\n visible: boolean;\r\n setVisible: Dispatch>;\r\n}\r\n\r\nconst [useGenericContext, ContextProvider] = createGenericContext();\r\n\r\nexport const UserDialogContextProvider = ({ children }) => {\r\n const [userId, setUserId] = useState(undefined);\r\n const [visible, setVisible] = useState(false);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport const useUserDialogContext = () => useGenericContext();","import { Fetch } from '@syncfusion/ej2-base';\r\nimport {\r\n DataManager,\r\n Predicate,\r\n WebApiAdaptor,\r\n Query,\r\n RemoteOptions,\r\n} from \"@syncfusion/ej2-data\";\r\nimport { getAuthenticatedUser, logout } from \"utils\";\r\n\r\nexport class DWebApiAdaptor extends WebApiAdaptor {\r\n constructor(props?: RemoteOptions) {\r\n const properties: RemoteOptions = {\r\n count: \"count\",\r\n skip: \"skip\",\r\n sortBy: \"orderBy\",\r\n take: \"take\",\r\n where: \"where\",\r\n ...props,\r\n };\r\n super(properties);\r\n }\r\n\r\n convertToQueryString(request: Object, query: Query, dm: DataManager): any {\r\n if (request[\"where\"]) {\r\n const queryResults = query.queries.filter(\r\n (x) => x.fn === \"onSearch\" || x.fn === \"onWhere\"\r\n );\r\n let queryString = \"\";\r\n queryResults.forEach((q) => {\r\n if (q && q.fn && q.e) {\r\n switch (q.fn) {\r\n case \"onSearch\":\r\n if (q.e.searchKey) {\r\n queryString += (q.e.fieldNames as string[])\r\n .map((f) => this._getQuery(f, q.e!.operator!, q.e!.searchKey, q.e?.ignoreCase))\r\n .join(` ${q.e.condition ?? \"or\"} `);\r\n }\r\n break;\r\n case \"onWhere\":\r\n if (q.e.predicates) {\r\n queryString += (queryString.length > 1 ? ` ${q.e.condition ?? \"or\"} ` : \"\") + this._getQueryFromPredicates(q.e.predicates, q.e.condition);\r\n } else {\r\n queryString = this._getQuery(q.e!.field!, q.e!.operator!, q.e!.value!, q.e?.ignoreCase)\r\n }\r\n break;\r\n }\r\n }\r\n });\r\n request[\"where\"] = queryString;\r\n }\r\n return super.convertToQueryString(request, query, dm);\r\n }\r\n\r\n beforeSend(dm: DataManager, request: Request, settings: Fetch): void {\r\n const user = getAuthenticatedUser();\r\n request.headers.append(\"Authorization\", `Bearer ${user?.Token}`);\r\n const failure = settings.onFailure;\r\n settings.onFailure = function (data) {\r\n if (data && data[\"status\"] !== undefined) {\r\n if (data[\"status\"] === 401)\r\n logout();\r\n if (data[\"status\"] === 0 || data[\"status\"] === 500)\r\n window.location.href = \"/500\";\r\n }\r\n failure.call(this, data);\r\n };\r\n super.beforeSend(dm, request, settings);\r\n }\r\n\r\n // ----------------------------------------------------------------------------------------------------\r\n // PRIVATE HELPER METHODS\r\n // ----------------------------------------------------------------------------------------------------\r\n\r\n _getQueryFromPredicates(\r\n predicates: Predicate[] | undefined,\r\n condition: string | undefined\r\n ): string {\r\n if (predicates && predicates.length > 0) {\r\n return predicates\r\n .map((p) => {\r\n const query = this._getQuery(p.field, p.operator, p.value, p.ignoreCase);\r\n if (p.predicates) {\r\n const partialResult = this._getQueryFromPredicates(\r\n p.predicates,\r\n condition\r\n );\r\n if (query)\r\n return `(${partialResult}) ${p.condition ?? \"or\"} ${query}`;\r\n else return partialResult;\r\n }\r\n return query;\r\n })\r\n .filter((x) => x !== undefined && x !== \"\")\r\n .join(` ${condition ?? \"or\"} `);\r\n }\r\n return \"\";\r\n }\r\n\r\n _getQuery(\r\n field: string,\r\n operator: string,\r\n value:\r\n | string\r\n | number\r\n | boolean\r\n | Date\r\n | Predicate\r\n | Predicate[]\r\n | Date\r\n | null\r\n | undefined,\r\n ignoreCase: boolean | undefined\r\n ): string {\r\n if (\r\n field === null ||\r\n field === undefined ||\r\n value === null ||\r\n value === undefined\r\n )\r\n return \"\";\r\n\r\n let predicate = \"\";\r\n const isUUID = this._isUUID(value);\r\n const isBoolean = this._isBoolean(value);\r\n const isDate = this._isDate(value);\r\n const isNumber = this._isNumber(value);\r\n switch (operator) {\r\n case \"equal\":\r\n if (isUUID) predicate = `${field}.ToString() == \"${value}\"`;\r\n else if (isBoolean) predicate = `${field} == ${value}`;\r\n else if (isDate) predicate = `${field} == ${this._toDateTime(value)}`;\r\n else if (isNumber) predicate = `${field} == ${value}`;\r\n else {\r\n if (ignoreCase === undefined || ignoreCase === true)\r\n predicate = `(${field} ?? \"\").ToLower() == \"${value}\".ToLower()`;\r\n else\r\n predicate = `${field} == \"${value}\"`;\r\n }\r\n break;\r\n case \"notequal\":\r\n if (isUUID) predicate = `${field}.ToString() != \"${value}\"`;\r\n else if (isBoolean) predicate = `${field} != ${value}`;\r\n else if (isDate) predicate = `${field} != ${this._toDateTime(value)}`;\r\n else if (isNumber) predicate = `${field} != ${value}`;\r\n else predicate = `${field} != \"${value}\"`;\r\n break;\r\n case \"lessthan\":\r\n if (isDate) predicate = `${field} < ${this._toDateTime(value)}`;\r\n else if (isNumber) predicate = `${field} < ${value}`;\r\n else predicate = `${field} < ${value}`;\r\n break;\r\n case \"lessthanorequal\":\r\n if (isDate) predicate = `${field} <= ${this._toDateTime(value)}`;\r\n else if (isNumber) predicate = `${field} <= ${value}`;\r\n else predicate = `${field} <= ${value}`;\r\n break;\r\n case \"greaterthan\":\r\n if (isDate) predicate = `${field} > ${this._toDateTime(value)}`;\r\n else if (isNumber) predicate = `${field} > ${value}`;\r\n else predicate = `${field} > ${value}`;\r\n break;\r\n case \"greaterthanorequal\":\r\n if (isDate) predicate = `${field} >= ${this._toDateTime(value)}`;\r\n else if (isNumber) predicate = `${field} >= ${value}`;\r\n else predicate = `${field} >= ${value}`;\r\n break;\r\n case \"contains\":\r\n if (ignoreCase === undefined || ignoreCase === true)\r\n predicate = `(Convert.ToString(${field}) ?? \"\").ToLower().Contains(\"${value}\".ToLower())`;\r\n else\r\n predicate = `(Convert.ToString(${field}) ?? \"\").Contains(\"${value}\")`;\r\n break;\r\n case \"startswith\":\r\n if (ignoreCase === undefined || ignoreCase === true)\r\n predicate = `(Convert.ToString(${field}) ?? \"\").ToLower().StartsWith(\"${value}\".ToLower())`;\r\n else\r\n predicate = `(Convert.ToString(${field}) ?? \"\").StartsWith(\"${value}\")`;\r\n break;\r\n case \"endswith\":\r\n if (ignoreCase === undefined || ignoreCase === true)\r\n predicate = `(Convert.ToString(${field}) ?? \"\").ToLower().EndsWith(\"${value}\".ToLower())`;\r\n else\r\n predicate = `(Convert.ToString(${field}) ?? \"\").EndsWith(\"${value}\")`;\r\n break;\r\n }\r\n return predicate;\r\n }\r\n\r\n _toDateTime(\r\n s:\r\n | string\r\n | number\r\n | boolean\r\n | Date\r\n | Predicate\r\n | Predicate[]\r\n | null\r\n | undefined\r\n ): string {\r\n if (s === null || s === undefined || s instanceof Date === false)\r\n return \"DateTime()\";\r\n const date = s as Date;\r\n return `DateTime(${date.getFullYear()}, ${date.getMonth() + 1\r\n }, ${date.getDate()}, ${date.getHours()}, ${date.getMinutes()}, 0)`;\r\n }\r\n\r\n _isUUID(\r\n s:\r\n | string\r\n | number\r\n | boolean\r\n | Date\r\n | Predicate\r\n | Predicate[]\r\n | null\r\n | undefined\r\n ) {\r\n return (\r\n s &&\r\n typeof s === \"string\" &&\r\n s.match(\r\n \"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$\"\r\n )\r\n );\r\n }\r\n\r\n _isBoolean(\r\n s:\r\n | string\r\n | number\r\n | boolean\r\n | Date\r\n | Predicate\r\n | Predicate[]\r\n | null\r\n | undefined\r\n ) {\r\n return s && typeof s === \"boolean\";\r\n }\r\n\r\n _isDate(\r\n s:\r\n | string\r\n | number\r\n | boolean\r\n | Date\r\n | Predicate\r\n | Predicate[]\r\n | null\r\n | undefined\r\n ) {\r\n return s && s instanceof Date;\r\n }\r\n\r\n _isNumber(\r\n s:\r\n | string\r\n | number\r\n | boolean\r\n | Date\r\n | Predicate\r\n | Predicate[]\r\n | null\r\n | undefined\r\n ) {\r\n return s && typeof s === \"number\";\r\n }\r\n}\r\n","import { DataManager, DataOptions } from \"@syncfusion/ej2-data\";\r\nimport { getApiUrl } from \"utils\";\r\nimport { DWebApiAdaptor } from \"./DWebApiAdaptor\";\r\n\r\ninterface Props {\r\n path: string;\r\n}\r\n\r\nexport class DDataManager extends DataManager {\r\n constructor({ path }: Props) {\r\n const apiUrl = getApiUrl();\r\n const dataSource: DataOptions = {\r\n adaptor: new DWebApiAdaptor(),\r\n crossDomain: true,\r\n url: `${apiUrl}/${path}`,\r\n // headers: [{ Authorization: `Bearer ${user?.Token}` }], //--> commented, because header gets added in beforeSend-method\r\n };\r\n super(dataSource);\r\n }\r\n}\r\n","import { AdminHome, SuperAdminHome, UserHome } from \"pages\";\r\nimport { getAuthenticatedUser, Role } from \"utils\";\r\n\r\nexport const Home = () => {\r\n const user = getAuthenticatedUser();\r\n return (\r\n <>\r\n {user &&\r\n (user.Role === Role.SuperAdmin ? (\r\n \r\n ) : user.Role === Role.Admin ? (\r\n \r\n ) : (\r\n \r\n ))}\r\n \r\n );\r\n};\r\n","import { GridComponent, SortDescriptorModel } from \"@syncfusion/ej2-react-grids\";\r\nimport {\r\n ColumnType,\r\n DGrid,\r\n DGridBooleanColumn,\r\n DGridDateColumn,\r\n DGridFormatting,\r\n DGridFormattingRule,\r\n DGridIDColumn,\r\n DGridInvisibleColumn,\r\n DGridNumberColumn,\r\n DGridStringColumn,\r\n DGridToolbarItem,\r\n FormattingRulesOperator,\r\n} from \"components\";\r\nimport { useUserDialogContext } from \"contexts\";\r\nimport { getAuthenticatedUser, Role } from \"utils\";\r\n\r\nexport const CompletedCourses = () => {\r\n const user = getAuthenticatedUser();\r\n const { setUserId, setVisible } = useUserDialogContext();\r\n const columns = [\r\n new DGridIDColumn({\r\n field: \"Id\",\r\n }),\r\n new DGridInvisibleColumn({\r\n field: \"UserId\",\r\n type: ColumnType.STRING,\r\n }),\r\n new DGridStringColumn({\r\n field: \"User\",\r\n headerText: \"Utente\",\r\n width: \"15%\",\r\n }),\r\n new DGridStringColumn({\r\n field: \"CodiceFiscale\",\r\n headerText: \"Codice fiscale\",\r\n width: \"15%\",\r\n }),\r\n new DGridNumberColumn({\r\n field: \"CentroDiCosto\",\r\n headerText: \"CDC (Centro di costo)\",\r\n width: \"5%\",\r\n }),\r\n new DGridStringColumn({\r\n field: \"Description\",\r\n headerText: \"Descrizione\",\r\n width: \"15%\",\r\n }),\r\n new DGridDateColumn({\r\n field: \"LastCompleted\",\r\n headerText: \"Completato il\",\r\n width: \"10%\",\r\n }),\r\n new DGridBooleanColumn({\r\n field: \"CompletedWithoutPlatform\",\r\n headerText: \"Completato fuori dalla PiattaFormazione\",\r\n width: \"5%\"\r\n }),\r\n new DGridDateColumn({\r\n field: \"ExpiryDate\",\r\n headerText: \"Scadenza\",\r\n width: \"10%\",\r\n }),\r\n new DGridBooleanColumn({\r\n field: \"Expired\",\r\n headerText: \"Scaduto\",\r\n width: \"5%\",\r\n }),\r\n new DGridBooleanColumn({\r\n field: \"HasBeenReplaced\",\r\n headerText: \"È stato sostituito da un corso più recente\",\r\n width: \"5%\",\r\n }),\r\n ];\r\n const sortColumns: SortDescriptorModel[] = [\r\n { field: \"User\", direction: \"Ascending\" },\r\n { field: \"LastCompleted\", direction: \"Descending\" },\r\n ];\r\n\r\n if (user?.Role === Role.SuperAdmin){\r\n columns.unshift(new DGridInvisibleColumn({\r\n field: \"AdminId\",\r\n type: ColumnType.STRING,\r\n }));\r\n sortColumns.unshift({ field: \"Admin\", direction: \"Ascending\" });\r\n }\r\n\r\n return (\r\n
    \r\n {\r\n if (rowData && rowData[\"UserId\"]) {\r\n setUserId(rowData[\"UserId\"]);\r\n setVisible(true);\r\n }\r\n },\r\n (user?.Role === Role.SuperAdmin) ? \"Mostra dettagli utente\" : \"Modifica utente\",\r\n true,\r\n true\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})();\nimport * as React from 'react';\nimport { Uploader } from '@syncfusion/ej2-inputs';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React Uploader Component\n * ```html\n * \n * ```\n */\nvar UploaderComponent = /** @class */ (function (_super) {\n __extends(UploaderComponent, _super);\n function UploaderComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = { 'files': 'uploadedFiles' };\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n UploaderComponent.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 UploaderComponent;\n}(Uploader));\nexport { UploaderComponent };\napplyMixins(UploaderComponent, [ComponentBase, React.Component]);\n","import { Dispatch, SetStateAction } from \"react\";\r\nimport { FileListRenderingEventArgs, InputEventArgs, SelectedEventArgs, UploaderComponent } from \"@syncfusion/ej2-react-inputs\"\r\nimport { ChangeEventArgs } from \"@syncfusion/ej2-react-richtexteditor\";\r\nimport { DCard, DErrorToastModel, DRichTextEditor, DTextBox } from \"components\"\r\nimport { useAppContext } from \"contexts\";\r\n\r\ninterface Props {\r\n className?: string;\r\n title: string;\r\n settings: {};\r\n setSettings: Dispatch>;\r\n setUnsavedChanges: React.Dispatch>;\r\n subject: number;\r\n body: number;\r\n variables?: string[]\r\n attachment?: number;\r\n showAttachment?: boolean;\r\n};\r\n\r\nexport const EMailMessageSettings = ({ className, title, settings, setSettings, setUnsavedChanges, subject, body, variables, attachment, showAttachment }: Props) => {\r\n const { showToast } = useAppContext();\r\n const attachmentName = \"Allegato.pdf\";\r\n\r\n const fileListRendering = (args: FileListRenderingEventArgs) => {\r\n if (attachment) {\r\n const element = args.element.querySelector(\"span\");\r\n if (element) {\r\n element.setAttribute(\"role\", \"button\");\r\n element.onclick = () => {\r\n if (settings[attachment]) {\r\n const data = `data:application/octet-stream;base64,${settings[attachment]}`;\r\n const link = document.createElement(\"a\");\r\n link.setAttribute(\"download\", attachmentName);\r\n link.href = data;\r\n document.body.appendChild(link);\r\n link.click();\r\n link.remove();\r\n }\r\n };\r\n }\r\n }\r\n };\r\n\r\n const selected = (args: SelectedEventArgs) => {\r\n if (attachment && args.filesData.length === 1) {\r\n const file = args.filesData[0];\r\n file.name = attachmentName;\r\n const reader: FileReader = new FileReader();\r\n reader.onload = () => {\r\n setUnsavedChanges(true);\r\n settings[attachment] = (reader.result as string).split(',')[1];\r\n setSettings(settings);\r\n };\r\n reader.onerror = () => {\r\n settings[attachment] = \"\";\r\n setSettings(settings);\r\n showToast(new DErrorToastModel(\"Errore nell'importazione del file. Prego riprovare.\"));\r\n };\r\n reader.readAsDataURL(file.rawFile as File);\r\n }\r\n };\r\n\r\n const removing = () => {\r\n if (attachment) {\r\n setUnsavedChanges(true);\r\n settings[attachment] = \"\";\r\n setSettings(settings);\r\n }\r\n };\r\n\r\n const getChangeEventHandler = (number: number) =>\r\n (args?: ChangeEventArgs) => {\r\n if (args) {\r\n setUnsavedChanges(true);\r\n settings[number] = args.value;\r\n setSettings(settings);\r\n }\r\n };\r\n\r\n const getInputEventHandler = (number: number) =>\r\n (args?: InputEventArgs) => {\r\n if (args) {\r\n setUnsavedChanges(true);\r\n settings[number] = args.value;\r\n setSettings(settings);\r\n }\r\n };\r\n\r\n return (\r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {variables && variables.length > 0 &&\r\n
    \r\n Le seguenti variabili possono essere usate:\r\n {variables.map(x =>\r\n {`[${x}]`}\r\n )}\r\n
    \r\n }\r\n
    \r\n
    \r\n {showAttachment && attachment &&\r\n
    \r\n \r\n \r\n
    \r\n }\r\n
    \r\n )\r\n}","import { useState } from \"react\";\r\nimport axios from \"axios\";\r\nimport { ChangeEventArgs as NumericChangeEventArgs, InputEventArgs } from \"@syncfusion/ej2-react-inputs\";\r\nimport {\r\n DButton,\r\n DCard,\r\n DErrorToastModel,\r\n DNumericBox,\r\n DSuccessToastModel,\r\n DTextBox\r\n} from \"components\";\r\nimport { useAppContext } from \"contexts\";\r\nimport { getAuthenticatedUser, Role } from \"utils\";\r\nimport { EMailMessageSettings, SettingsForm } from \".\";\r\n\r\nexport const EMailSettings = () => {\r\n const numbers = [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25];\r\n const notRequiredNumbers = [21];\r\n const user = getAuthenticatedUser();\r\n if (user?.Role === Role.SuperAdmin)\r\n notRequiredNumbers.push(...[13, 14, 15, 16, 17, 18]);\r\n const [settings, setSettings] = useState<{ [key: number]: string | undefined }>({});\r\n const [unsavedChanges, setUnsavedChanges] = useState(false);\r\n const { showToast } = useAppContext();\r\n\r\n const getNumericChangeEventHandler = (number: number) =>\r\n (args?: NumericChangeEventArgs) => {\r\n if (args) {\r\n setUnsavedChanges(true);\r\n settings[number] = args.value?.toString() ?? \"0\";\r\n setSettings(settings);\r\n }\r\n };\r\n\r\n const getInputEventHandler = (number: number) =>\r\n (args?: InputEventArgs) => {\r\n if (args) {\r\n setUnsavedChanges(true);\r\n settings[number] = args.value ?? \"\";\r\n setSettings(settings);\r\n }\r\n };\r\n\r\n\r\n const testEMail = () => {\r\n if (!settings[15] || !settings[16] || !settings[17] || !settings[18]) {\r\n showToast(new DErrorToastModel(\"Configurazione SMTP non completa.\"));\r\n return;\r\n }\r\n axios.get(`email/test?host=${settings[15]}&port=${settings[16]}&username=${settings[17]}&password=${settings[18]}`)\r\n .then(() => showToast(new DSuccessToastModel(\"Configurazione SMTP validato con successo.\")))\r\n .catch(() => showToast(new DErrorToastModel(\"Configurazione SMTP errata.\")));\r\n };\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Testa credenziali\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \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 { Dispatch, useEffect } from \"react\";\r\nimport axios from \"axios\";\r\nimport { FormValidator, FormValidatorModel } from \"@syncfusion/ej2-react-inputs\";\r\nimport { DButton, DErrorToastModel, DSuccessToastModel } from \"components\";\r\nimport { useAppContext } from \"contexts\";\r\n\r\ninterface Props {\r\n formId: string;\r\n numbers: number[];\r\n settings: { [key: number]: string | undefined };\r\n setSettings: Dispatch>;\r\n unsavedChanges: boolean;\r\n setUnsavedChanges: React.Dispatch>;\r\n notRequiredNumbers?: number[];\r\n children?: React.ReactNode;\r\n};\r\n\r\nexport const SettingsForm = ({ formId, numbers, settings, setSettings, unsavedChanges, setUnsavedChanges, notRequiredNumbers, children }: Props) => {\r\n const { showToast } = useAppContext();\r\n\r\n const formValidationRules: FormValidatorModel = { locale: \"it\", rules: {}};\r\n const formObject = new FormValidator(`#${formId}`, formValidationRules);\r\n\r\n useEffect(() => {\r\n axios.get(`settingValues?number=${numbers.join(\"&number=\")}`)\r\n .then((response) => {\r\n const tempSettings = {};\r\n response.data.forEach(x => tempSettings[x.Number] = x.Value);\r\n setSettings(tempSettings);\r\n\r\n Object.keys(tempSettings).filter(s => !notRequiredNumbers?.includes(Number(s))).forEach(s => formObject.addRules(`setting${s}`, { required: [true, \"* Inserisci un valore\"] }));\r\n }).catch(() => {\r\n showToast(new DErrorToastModel(\"Si è verificato un errore.\"));\r\n });\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n const save = () => {\r\n if (!formObject?.validate()) {\r\n showToast(new DErrorToastModel(\"Prega compilare tutti i campi obbligatori.\"));\r\n return;\r\n }\r\n axios.put(\"settingValues\", JSON.stringify(Object.keys(settings).map(s => ({ \"Number\": Number(s), \"Value\": settings[s] }))))\r\n .then(() => {\r\n setUnsavedChanges(false);\r\n showToast(new DSuccessToastModel(\"Impostazioni salvate con successo.\"));\r\n })\r\n .catch(() => {\r\n showToast(new DErrorToastModel(\"Si è verificato un errore.\"));\r\n });\r\n };\r\n\r\n return (\r\n <>\r\n {Object.keys(settings).length > 0 ? (\r\n <>\r\n {unsavedChanges &&\r\n
    \r\n Avviso! Sono presenti modifiche non salvate.\r\n
    \r\n }\r\n
    e.preventDefault()}>\r\n {children}\r\n Salva\r\n
    \r\n \r\n ) : (\r\n
    \r\n Prego attendere...\r\n
    \r\n )}\r\n \r\n );\r\n};","import { useState } from \"react\";\r\nimport { InputEventArgs } from \"@syncfusion/ej2-react-inputs\";\r\nimport { ChangeEventArgs } from \"@syncfusion/ej2-react-richtexteditor\";\r\nimport { DCard, DRichTextEditor, DTextBox } from \"components\";\r\nimport { SettingsForm } from \".\";\r\n\r\nexport const TextSettings = () => {\r\n const [settings, setSettings] = useState<{ [key: number]: string | undefined }>({});\r\n const numbers = [4, 5, 6, 7, 8, 9, 10, 11, 12];\r\n const [unsavedChanges, setUnsavedChanges] = useState(false);\r\n\r\n const getChangeEventHandler = (number: number) =>\r\n (args?: ChangeEventArgs) => {\r\n if (args) {\r\n setUnsavedChanges(true);\r\n settings[number] = args.value;\r\n setSettings(settings);\r\n }\r\n };\r\n\r\n const getInputEventHandler = (number: number) =>\r\n (args?: InputEventArgs) => {\r\n if (args) {\r\n setUnsavedChanges(true);\r\n settings[number] = args.value;\r\n setSettings(settings);\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n Corso\">\r\n
    \r\n \r\n \r\n
    \r\n Le seguenti variabili possono essere usate:\r\n [NumeroModuli]\r\n
    \r\n
    \r\n
    \r\n
    \r\n Corso -> Modulo\">\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n Corso -> Test\">\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n Le seguenti variabili possono essere usate:\r\n [NomeModulo]\r\n [NomeCorso]\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 { createRef, useEffect } from \"react\";\r\nimport { TabComponent, TabItemModel } from \"@syncfusion/ej2-react-navigations\";\r\nimport { DButton, DCard, DTab } from \"components\";\r\nimport { getAuthenticatedUser, Role } from \"utils\";\r\nimport { EMailSettings, TextSettings } from \"./components\";\r\n\r\nexport const Settings = () => {\r\n const tabComponentRef = createRef();\r\n const items: TabItemModel[] = [\r\n { id: \"text\", header: { iconCss: \"las la-quote-right\", text: \"Testi\" }, content: (() => ) as any },\r\n { id: \"email\", header: { iconCss: \"las la-envelope\", text: \"E-Mail\" }, content: (() => ) as any }\r\n ];\r\n\r\n useEffect(() => {\r\n const user = getAuthenticatedUser();\r\n if (user?.Role === Role.User) {\r\n window.location.href = \"/404\";\r\n return;\r\n }\r\n }, []);\r\n\r\n return (\r\n
    \r\n document.location.href = \"/home\"}>\r\n Indietro\r\n \r\n

    Impostazioni

    \r\n \r\n \r\n \r\n
    \r\n );\r\n};","import { Dispatch, SetStateAction } from \"react\";\r\nimport { GridComponent } from \"@syncfusion/ej2-react-grids\";\r\nimport { DGridToolbarItem } from \"components\";\r\n\r\nexport const getToolbarItems = (\r\n setUserId: Dispatch>,\r\n setVisible: Dispatch>,\r\n allowAdding: boolean = false,\r\n setImportCSVDialogVisible: undefined | Dispatch> = undefined\r\n) => {\r\n const items: DGridToolbarItem[] = [];\r\n if (allowAdding) {\r\n items.push(\r\n new DGridToolbarItem(\r\n \"add2\",\r\n \"Aggiungi...\",\r\n \"las la-plus\",\r\n () => {\r\n setVisible(true);\r\n },\r\n \"Aggiungi nuovo utente\"\r\n ));\r\n if (setImportCSVDialogVisible)\r\n items.push(new DGridToolbarItem(\r\n \"import2\",\r\n \"Importa da file CSV...\",\r\n \"las la-file-import\",\r\n () => {\r\n setImportCSVDialogVisible(true);\r\n },\r\n \"Importa nuovi utenti da file CSV\"\r\n ));\r\n }\r\n items.push(\r\n new DGridToolbarItem(\r\n \"modify2\",\r\n \"Modifica...\",\r\n \"las la-pen\",\r\n (grid: GridComponent, rowData?: Object) => {\r\n if (rowData) {\r\n if (rowData[\"UserId\"]) setUserId(rowData[\"UserId\"]);\r\n else setUserId(rowData[\"Id\"]);\r\n setVisible(true);\r\n }\r\n },\r\n \"Modifica utente\",\r\n true,\r\n true\r\n )\r\n );\r\n return items;\r\n};\r\n","import { useEffect, useState } from \"react\";\r\nimport {\r\n ColumnType,\r\n DGrid,\r\n DGridBooleanColumn,\r\n DGridDateColumn,\r\n DGridFormatting,\r\n DGridFormattingRule,\r\n DGridIDColumn,\r\n DGridInvisibleColumn,\r\n DGridNumberColumn,\r\n DGridStringColumn,\r\n FormattingRulesOperator,\r\n} from \"components\";\r\nimport { useUserDialogContext } from \"contexts\";\r\nimport { getSettingAsNumber } from \"utils\";\r\nimport { getToolbarItems } from \"./toolbarItems\";\r\n\r\nexport const DueCourses = () => {\r\n const { setUserId, setVisible } = useUserDialogContext();\r\n const [numberOfDaysToCompleteCourse, setNumberOfDaysToCompleteCourse] = useState(0);\r\n const [numberOfDaysWhenToWarnExpiredCourse, setNumberOfDaysWhenToWarnExpiredCourse] = useState(0);\r\n\r\n useEffect(() => {\r\n const fetchSettings = async () => {\r\n setNumberOfDaysToCompleteCourse(await getSettingAsNumber(1));\r\n setNumberOfDaysWhenToWarnExpiredCourse(await getSettingAsNumber(2));\r\n };\r\n fetchSettings();\r\n }, []);\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n","import {\r\n ColumnType,\r\n DGrid,\r\n DGridDateColumn,\r\n DGridForeignKeyColumn,\r\n DGridIDColumn,\r\n DGridInvisibleColumn,\r\n DGridNumberColumn,\r\n DGridStringColumn,\r\n} from \"components\";\r\nimport { useUserDialogContext } from \"contexts\";\r\nimport { getAuthenticatedUser } from \"utils\";\r\nimport { getToolbarItems } from \"./toolbarItems\";\r\n\r\nexport const InactiveUsers = () => {\r\n const adminId = getAuthenticatedUser()?.Id;\r\n const { setUserId, setVisible } = useUserDialogContext();\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n","import {\r\n ColumnType,\r\n DGrid,\r\n DGridInvisibleColumn,\r\n DGridNumberColumn,\r\n DGridStringColumn,\r\n} from \"components\";\r\n\r\nexport const Summary = () => {\r\n const groupCaptionTemplate = (props) => {\r\n return {props.Sum};\r\n };\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n","import { useEffect, useState } from \"react\";\r\nimport {\r\n ColumnType,\r\n DGrid,\r\n DGridDateColumn,\r\n DGridFormatting,\r\n DGridFormattingRule,\r\n DGridIDColumn,\r\n DGridInvisibleColumn,\r\n DGridNumberColumn,\r\n DGridStringColumn,\r\n FormattingRulesOperator,\r\n} from \"components\";\r\nimport { useUserDialogContext } from \"contexts\";\r\nimport { getSettingAsNumber } from \"utils\";\r\nimport { getToolbarItems } from \"./toolbarItems\";\r\n\r\nexport const UncompletedCourses = () => {\r\n const { setUserId, setVisible } = useUserDialogContext();\r\n const [numberOfDaysToCompleteCourse, setNumberOfDaysToCompleteCourse] = useState(0);\r\n\r\n useEffect(() => {\r\n const fetchSettings = async () => {\r\n setNumberOfDaysToCompleteCourse(await getSettingAsNumber(1));\r\n };\r\n fetchSettings();\r\n }, []);\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n","import { Dispatch, SetStateAction } from \"react\";\r\nimport {\r\n DGrid,\r\n DGridDateColumn,\r\n DGridForeignKeyColumn,\r\n DGridIDColumn,\r\n DGridNumberColumn,\r\n DGridStringColumn,\r\n} from \"components\";\r\nimport { useUserDialogContext } from \"contexts\";\r\nimport { getToolbarItems } from \"./toolbarItems\";\r\n\r\ninterface Props {\r\n setImportCSVDialogVisible?: Dispatch>;\r\n};\r\n\r\nexport const Users = ({ setImportCSVDialogVisible }: Props) => {\r\n const { setUserId, setVisible } = useUserDialogContext();\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n","import {\r\n DGrid,\r\n DGridDateColumn,\r\n DGridForeignKeyColumn,\r\n DGridIDColumn,\r\n DGridNumberColumn,\r\n DGridStringColumn,\r\n} from \"components\";\r\nimport { useUserDialogContext } from \"contexts\";\r\nimport { getToolbarItems } from \"./toolbarItems\";\r\n\r\nexport const UsersWithoutCourses = () => {\r\n const { setUserId, setVisible } = useUserDialogContext();\r\n\r\n return (\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 && typeof e.target.className === 'string' && 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.classList.contains('e-list-group-item')) {\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 || (typeof e.target.className === 'string' && e.target.className.indexOf('e-list-nrt') > -1) || (typeof e.target.className === 'string' && 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, setValue } 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 if (this.isAngular && this.allowFiltering) {\n var originalElement = this.element;\n var clonedElement = originalElement.cloneNode(true);\n originalElement.parentNode.replaceChild(clonedElement, originalElement);\n this.element = clonedElement;\n setValue('ej2_instances', [this], this.element);\n }\n this.inputString = '';\n this.initLoad = true;\n this.isCustomFiltering = false;\n this.initialSelectedOptions = this.value;\n this.inputFormName = this.element.getAttribute('name');\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 this.list.querySelector('.e-list-parent').setAttribute('role', 'presentation');\n var groupHdrs = this.list.querySelectorAll('.e-list-group-item');\n for (var i = 0; i < groupHdrs.length; i++) {\n groupHdrs[i].removeAttribute('tabindex');\n groupHdrs[i].setAttribute('role', 'option');\n }\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 if (this.inputFormName) {\n input.setAttribute('name', this.inputFormName);\n }\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 var filterElem;\n var txtLength;\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 if (this.allowFiltering) {\n filterElem = this.list.getElementsByClassName('e-input-filter')[0];\n if (filterElem) {\n txtLength = filterElem.selectionStart;\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 var inputSearch = searchEle.querySelector('.e-input-filter');\n if (inputSearch) {\n inputSearch.addEventListener('focus', function () {\n if (!searchEle.childNodes[0].classList.contains('e-input-focus')) {\n searchEle.childNodes[0].classList.add('e-input-focus');\n }\n });\n inputSearch.addEventListener('blur', function () {\n if (searchEle.childNodes[0].classList.contains('e-input-focus')) {\n searchEle.childNodes[0].classList.remove('e-input-focus');\n }\n });\n }\n }\n this.initWrapper();\n this.setSelection(this.value, true, false, !this.isRendered);\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 filterElem = this.list.getElementsByClassName('e-input-filter')[0];\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 _this = this;\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 this.stopTimer();\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 this.timer = window.setInterval(function () { _this.setScrollDown(scrollParent, scrollHeight, true); }, 70);\n }\n else if ((event.clientY - scrollMoved) - boundRect.y < 1) {\n this.timer = window.setInterval(function () { _this.setScrollDown(scrollParent, scrollHeight, false); }, 70);\n }\n }\n if (args.target === null) {\n return;\n }\n this.trigger('drag', this.getDragArgs(args));\n };\n ListBox.prototype.setScrollDown = function (scrollElem, scrollPixel, isScrollDown) {\n if (isScrollDown) {\n scrollElem.scrollTop = scrollElem.scrollTop + scrollPixel;\n }\n else {\n scrollElem.scrollTop = scrollElem.scrollTop - scrollPixel;\n }\n };\n ListBox.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n ListBox.prototype.beforeDragEnd = function (args) {\n this.stopTimer();\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 'role': 'textbox'\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 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 (this.allowFiltering && e.target !== this.filterInput))) {\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 if (this.allowFiltering && e.ctrlKey && e.keyCode === 65) {\n e.preventDefault();\n return;\n }\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 if (this.isAngular && this.itemTemplate) {\n list = this.renderItems(this.listData, fields);\n }\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, canFocus) {\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 if (canFocus === void 0) { canFocus = true; }\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 if (canFocus) {\n li.focus();\n }\n }\n else {\n if (isSelect) {\n li.classList.add(cssClass.selected);\n li.setAttribute('aria-selected', 'true');\n if (canFocus) {\n li.focus();\n }\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 { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { EventHandler, select, removeClass, addClass, detach, compile, L10n } from '@syncfusion/ej2-base';\nimport { Browser, attributes, isNullOrUndefined, append, closest, prepend } from '@syncfusion/ej2-base';\nimport { dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nvar ICON = 'e-icons';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECK = 'e-check';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar INDETERMINATE = 'e-stop';\nvar checkAllParent = 'e-selectall-parent';\nvar searchBackIcon = 'e-input-group-icon e-back-icon e-icons';\nvar filterBarClearIcon = 'e-input-group-icon e-clear-icon e-icons';\nvar filterInput = 'e-input-filter';\nvar filterParent = 'e-filter-parent';\nvar mobileFilter = 'e-ddl-device-filter';\nvar clearIcon = 'e-clear-icon';\nvar popupFullScreen = 'e-popup-full-page';\nvar device = 'e-ddl-device';\nvar FOCUS = 'e-input-focus';\n/**\n * The Multiselect enable CheckBoxSelection call this inject module.\n */\nvar CheckBoxSelection = /** @class */ (function () {\n function CheckBoxSelection(parent) {\n this.activeLi = [];\n this.activeEle = [];\n this.parent = parent;\n this.removeEventListener();\n this.addEventListener();\n }\n CheckBoxSelection.prototype.getModuleName = function () {\n return 'CheckBoxSelection';\n };\n CheckBoxSelection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('updatelist', this.listSelection, this);\n this.parent.on('listoption', this.listOption, this);\n this.parent.on('selectAll', this.setSelectAll, this);\n this.parent.on('checkSelectAll', this.checkSelectAll, this);\n this.parent.on('searchBox', this.setSearchBox, this);\n this.parent.on('blur', this.onBlurHandler, this);\n this.parent.on('targetElement', this.targetElement, this);\n this.parent.on('deviceSearchBox', this.setDeviceSearchBox, this);\n this.parent.on('inputFocus', this.getFocus, this);\n this.parent.on('reOrder', this.setReorder, this);\n this.parent.on('activeList', this.getActiveList, this);\n this.parent.on('selectAllText', this.setLocale, this);\n this.parent.on('filterBarPlaceholder', this.setPlaceholder, this);\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n this.parent.on('addItem', this.checboxCreate, this);\n this.parent.on('popupFullScreen', this.setPopupFullScreen, this);\n };\n CheckBoxSelection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updatelist', this.listSelection);\n this.parent.off('listoption', this.listOption);\n this.parent.off('selectAll', this.setSelectAll);\n this.parent.off('checkSelectAll', this.checkSelectAll);\n this.parent.off('searchBox', this.setSearchBox);\n this.parent.off('blur', this.onBlurHandler);\n this.parent.off('targetElement', this.targetElement);\n this.parent.off('deviceSearchBox', this.setDeviceSearchBox);\n this.parent.off('inputFocus', this.getFocus);\n this.parent.off('reOrder', this.setReorder);\n this.parent.off('activeList', this.getActiveList);\n this.parent.off('selectAllText', this.setLocale);\n this.parent.off('filterBarPlaceholder', this.setPlaceholder);\n this.parent.off('addItem', this.checboxCreate);\n this.parent.off('popupFullScreen', this.setPopupFullScreen);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.listOption = function (args) {\n var _this = this;\n if (isNullOrUndefined(this.parent.listCurrentOptions.itemCreated)) {\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n };\n }\n else {\n var itemCreated_1 = this.parent.listCurrentOptions.itemCreated;\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n itemCreated_1.apply(_this, [e]);\n };\n }\n };\n CheckBoxSelection.prototype.setPlaceholder = function (props) {\n Input.setPlaceholder(props.filterBarPlaceholder, this.filterInput);\n };\n CheckBoxSelection.prototype.checboxCreate = function (e) {\n var item;\n if (!isNullOrUndefined(e.item)) {\n item = e.item;\n }\n else {\n item = e;\n }\n if (this.parent.enableGroupCheckBox || (item.className !== 'e-list-group-item '\n && item.className !== 'e-list-group-item')) {\n var checkboxEle = createCheckBox(this.parent.createElement, true);\n var icon = select('div.' + ICON, item);\n item.insertBefore(checkboxEle, item.childNodes[isNullOrUndefined(icon) ? 0 : 1]);\n select('.' + CHECKBOXFRAME, checkboxEle);\n if (this.parent.enableGroupCheckBox) {\n this.parent.popupWrapper.classList.add('e-multiselect-group');\n }\n return item;\n }\n else {\n return item;\n }\n };\n CheckBoxSelection.prototype.setSelectAll = function () {\n if (this.parent.showSelectAll) {\n if (isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent = this.parent.createElement('div', {\n className: checkAllParent\n });\n this.selectAllSpan = this.parent.createElement('span', {\n className: 'e-all-text'\n });\n this.selectAllSpan.textContent = '';\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n this.checboxCreate(this.checkAllParent);\n if (this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n append([this.checkAllParent], this.parent.filterParent);\n }\n else {\n append([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n if (!this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent.parentNode.insertBefore(this.checkAllParent, this.parent.filterParent.nextSibling);\n }\n else {\n prepend([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n EventHandler.add(this.checkAllParent, 'mousedown', this.clickHandler, this);\n }\n if (this.parent.list.classList.contains('e-nodata') || (this.parent.listData && this.parent.listData.length <= 1 && !this.parent.enableVirtualization &&\n !(this.parent.isDynamicDataChange)) || (this.parent.isDynamicDataChange &&\n this.parent.listData && this.parent.listData.length <= 1)) {\n this.checkAllParent.style.display = 'none';\n }\n else {\n this.checkAllParent.style.display = 'block';\n }\n this.parent.selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n else if (!isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent.parentElement.removeChild(this.checkAllParent);\n this.checkAllParent = null;\n }\n };\n CheckBoxSelection.prototype.destroy = function () {\n this.removeEventListener();\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.checkAllParent = null;\n this.clearIconElement = null;\n this.filterInput = null;\n this.filterInputObj = null;\n this.checkWrapper = null;\n this.selectAllSpan = null;\n };\n CheckBoxSelection.prototype.listSelection = function (args) {\n var target;\n if (!isNullOrUndefined(args.e)) {\n var frameElm = args.li.querySelector('.e-checkbox-wrapper .e-frame');\n target = !isNullOrUndefined(args.e.target) ?\n (args.e.target.classList.contains('e-frame')\n && (!this.parent.showSelectAll\n || (this.checkAllParent && !this.checkAllParent.contains(args.e.target)))) ?\n args.e.target : args.li.querySelector('.e-checkbox-wrapper').childNodes[1]\n : args.li.querySelector('.e-checkbox-wrapper').childNodes[1];\n }\n else {\n var checkboxWrapper = args.li.querySelector('.e-checkbox-wrapper');\n target = checkboxWrapper ? checkboxWrapper.childNodes[1] : args.li.lastElementChild.childNodes[1];\n }\n if (this.parent.itemTemplate || this.parent.enableGroupCheckBox) {\n target = args.li.firstElementChild.childNodes[1];\n }\n if (!isNullOrUndefined(target)) {\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n }\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n var selectAll = false;\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK), args.li, args.e, selectAll);\n }\n };\n CheckBoxSelection.prototype.validateCheckNode = function (checkWrap, isCheck, li, e, selectAll) {\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true, selectAll);\n };\n CheckBoxSelection.prototype.clickHandler = function (e) {\n var target;\n if (e.currentTarget.classList.contains(this.checkAllParent.className) || (e.currentTarget.classList.value === this.checkAllParent.className)) {\n target = e.currentTarget.firstElementChild.lastElementChild;\n }\n else {\n target = e.currentTarget;\n }\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n var selectAll = true;\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK), null, e, selectAll);\n }\n e.preventDefault();\n };\n CheckBoxSelection.prototype.changeState = function (wrapper, state, e, isPrevent, selectAll) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n ariaState = 'true';\n if (selectAll) {\n this.parent.selectAllItems(true, e);\n this.setLocale(true);\n }\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n ariaState = 'false';\n if (selectAll) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n else if (state === 'indeterminate' && !(frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK]);\n frameSpan.classList.add(INDETERMINATE);\n ariaState = 'false';\n if (selectAll) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n };\n CheckBoxSelection.prototype.setSearchBox = function (args) {\n if (isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent = this.parent.createElement('span', {\n className: filterParent\n });\n this.filterInput = this.parent.createElement('input', {\n attrs: { type: 'text' },\n className: filterInput\n });\n this.parent.element.parentNode.insertBefore(this.filterInput, this.parent.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n this.parent.mobFilter = false;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ? [searchBackIcon, filterBarClearIcon] : [filterBarClearIcon],\n properties: { placeholder: this.parent.filterBarPlaceholder }\n }, this.parent.createElement);\n if (!isNullOrUndefined(this.parent.cssClass)) {\n if (this.parent.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.parent.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], this.parent.filterParent);\n prepend([this.parent.filterParent], args.popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false',\n 'aria-label': 'multiselect',\n 'aria-expanded': 'true',\n 'aria-controls': args.popupElement.id\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'mousedown', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n EventHandler.add(this.filterInput, 'input', this.parent.onInput, this.parent);\n EventHandler.add(this.filterInput, 'keyup', this.parent.keyUp, this.parent);\n EventHandler.add(this.filterInput, 'keydown', this.parent.onKeyDown, this.parent);\n EventHandler.add(this.filterInput, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.parent.pasteHandler, this.parent);\n this.parent.searchBoxHeight = (this.filterInputObj.container.parentElement).getBoundingClientRect().height;\n return this.filterInputObj;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.clickOnBackIcon = function (e) {\n this.parent.hidePopup();\n removeClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.inputElement.focus();\n };\n CheckBoxSelection.prototype.clearText = function (e) {\n this.parent.targetInputElement.value = '';\n if (this.parent.allowFiltering && this.parent.targetInputElement.value === '') {\n this.parent.search(null);\n }\n this.parent.refreshListItems(null);\n this.parent.refreshPopup();\n this.clearIconElement.style.visibility = 'hidden';\n this.filterInput.focus();\n this.setReorder(e);\n this.boundPreventListSelection = this.preventListSelection.bind(this);\n this.parent.popupWrapper.addEventListener('mouseup', this.boundPreventListSelection, true);\n e.preventDefault();\n };\n CheckBoxSelection.prototype.preventListSelection = function (e) {\n e.stopPropagation();\n this.parent.popupWrapper.removeEventListener('mouseup', this.boundPreventListSelection, true);\n this.boundPreventListSelection = null;\n };\n CheckBoxSelection.prototype.setDeviceSearchBox = function () {\n this.parent.popupObj.element.classList.add(device);\n this.parent.popupObj.element.classList.add(mobileFilter);\n this.parent.popupObj.position = { X: 0, Y: 0 };\n this.parent.popupObj.dataBind();\n this.setSearchBoxPosition();\n this.backIconElement = this.filterInputObj.container.querySelector('.e-back-icon');\n this.clearIconElement = this.filterInputObj.container.querySelector('.' + clearIcon);\n this.clearIconElement.style.visibility = 'hidden';\n EventHandler.add(this.backIconElement, 'click', this.clickOnBackIcon, this);\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n };\n CheckBoxSelection.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n var selectAllHeight = 0;\n if (this.checkAllParent) {\n selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n this.parent.popupObj.element.style.maxHeight = '100%';\n this.parent.popupObj.element.style.width = '100%';\n this.parent.list.style.maxHeight = (window.innerHeight - searchBoxHeight - selectAllHeight) + 'px';\n this.parent.list.style.height = (window.innerHeight - searchBoxHeight - selectAllHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n CheckBoxSelection.prototype.setPopupFullScreen = function () {\n if (this.parent && this.parent.popupObj) {\n attributes(this.parent.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.popupObj.element.style.maxHeight = '100%';\n this.parent.popupObj.element.style.width = '100%';\n }\n };\n CheckBoxSelection.prototype.targetElement = function () {\n if (!isNullOrUndefined(this.clearIconElement)) {\n this.parent.targetInputElement = this.filterInput;\n this.clearIconElement.style.visibility = this.parent.targetInputElement.value === '' ? 'hidden' : 'visible';\n }\n return this.parent.targetInputElement.value;\n };\n CheckBoxSelection.prototype.onBlurHandler = function (e) {\n if (!this.parent.element.classList.contains('e-listbox')) {\n var target = void 0;\n if (this.parent.keyAction) {\n return;\n }\n if (Browser.isIE) {\n target = !isNullOrUndefined(e) && e.target;\n }\n if (!Browser.isIE) {\n target = !isNullOrUndefined(e) && e.relatedTarget;\n }\n // eslint-disable-next-line max-len\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) && this.parent.popupObj.element.contains(target)\n && !Browser.isIE && this.filterInput) {\n this.filterInput.focus();\n return;\n }\n if (this.parent.scrollFocusStatus && this.filterInput) {\n e.preventDefault();\n this.filterInput.focus();\n this.parent.scrollFocusStatus = false;\n return;\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element)\n && !this.parent.popupObj.element.classList.contains('e-popup-close')) {\n this.parent.inputFocus = false;\n this.parent.updateValueState(e, this.parent.value, this.parent.tempValues);\n this.parent.dispatchEvent(this.parent.hiddenElement, 'change');\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) &&\n !this.parent.popupObj.element.classList.contains('e-popup-close')) {\n this.parent.inputFocus = false;\n this.parent.overAllWrapper.classList.remove(FOCUS);\n this.parent.trigger('blur');\n this.parent.focused = true;\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) &&\n !this.parent.popupObj.element.classList.contains('e-popup-close') && !Browser.isDevice) {\n this.parent.hidePopup();\n }\n }\n };\n CheckBoxSelection.prototype.onDocumentClick = function (e) {\n if (this.parent.getLocaleName() !== 'listbox') {\n var target = e.target;\n if (!isNullOrUndefined(this.parent.popupObj) && closest(target, '[id=\"' + this.parent.popupObj.element.id + '\"]')) {\n if (!(this.filterInput && this.filterInput.value !== '')) {\n e.preventDefault();\n }\n }\n if (!(!isNullOrUndefined(this.parent.popupObj) && closest(target, '[id=\"' + this.parent.popupObj.element.id + '\"]'))\n && !isNullOrUndefined(this.parent.overAllWrapper) && !this.parent.overAllWrapper.contains(e.target)) {\n if (this.parent.overAllWrapper.classList.contains(dropDownBaseClasses.focus) || this.parent.isPopupOpen()) {\n this.parent.inputFocus = false;\n this.parent.scrollFocusStatus = false;\n this.parent.hidePopup();\n this.parent.onBlurHandler(e, true);\n this.parent.focused = true;\n }\n }\n else {\n this.parent.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') &&\n (document.activeElement === this.filterInput);\n }\n if (!isNullOrUndefined(this.parent.overAllWrapper) && !this.parent.overAllWrapper.contains(e.target) && this.parent.overAllWrapper.classList.contains('e-input-focus') &&\n !this.parent.isPopupOpen()) {\n if (Browser.isIE) {\n this.parent.onBlurHandler();\n }\n else {\n this.parent.onBlurHandler(e);\n }\n }\n if (this.filterInput === target) {\n this.filterInput.focus();\n }\n }\n };\n CheckBoxSelection.prototype.getFocus = function (e) {\n this.parent.overAllWrapper.classList.remove(FOCUS);\n if (this.parent.keyAction && e.value !== 'clear' && e.value !== 'focus') {\n this.parent.keyAction = false;\n return;\n }\n if (e.value === 'focus') {\n this.filterInput.focus();\n this.parent.removeFocus();\n EventHandler.remove(this.parent.list, 'keydown', this.parent.onKeyDown);\n }\n if (e.value === 'clear') {\n this.filterInput.value = '';\n this.clearIconElement.style.visibility = 'hidden';\n }\n };\n CheckBoxSelection.prototype.checkSelectAll = function (e) {\n if (e.value === 'check') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale(true);\n }\n if (e.value === 'uncheck') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale();\n }\n if (e.value === 'indeterminate') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale();\n }\n };\n CheckBoxSelection.prototype.setLocale = function (unSelect) {\n if (this.parent.selectAllText !== 'Select All' || this.parent.unSelectAllText !== 'Unselect All') {\n var template = unSelect ? this.parent.unSelectAllText : this.parent.selectAllText;\n this.selectAllSpan.textContent = '';\n var compiledString = compile(template);\n var templateName = unSelect ? 'unSelectAllText' : 'selectAllText';\n for (var _i = 0, _a = compiledString({}, this.parent, templateName, null, !this.parent.isStringTemplate); _i < _a.length; _i++) {\n var item = _a[_i];\n this.selectAllSpan.textContent = item.textContent;\n }\n }\n else {\n var l10nLocale = { selectAllText: 'Select All', unSelectAllText: 'Unselect All' };\n var l10n = new L10n(this.parent.getLocaleName(), {}, this.parent.locale);\n if (l10n.getConstant('selectAllText') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.parent.locale);\n }\n this.selectAllSpan.textContent = unSelect ? l10n.getConstant('unSelectAllText') : l10n.getConstant('selectAllText');\n }\n };\n CheckBoxSelection.prototype.getActiveList = function (args) {\n if (args.li.classList.contains('e-active')) {\n this.activeLi.push(args.li.cloneNode(true));\n }\n else {\n this.activeLi.splice(args.index, 1);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.setReorder = function (args) {\n if (this.parent.enableSelectionOrder && !isNullOrUndefined(this.parent.value)) {\n var activeLiCount = this.parent.ulElement.querySelectorAll('li.e-active').length;\n var remLi = void 0;\n var ulEle_1 = this.parent.createElement('ul', {\n className: 'e-list-parent e-ul e-reorder'\n });\n if (activeLiCount > 0) {\n var activeListItems = this.parent.ulElement.querySelectorAll('li.e-active');\n activeListItems.forEach(function (item) {\n ulEle_1.appendChild(item);\n });\n remLi = this.parent.ulElement.querySelectorAll('li.e-active');\n addClass(remLi, 'e-reorder-hide');\n if (this.parent.enableVirtualization) {\n var virtualUlElement = this.parent.list.querySelector('.e-virtual-ddl-content');\n prepend([ulEle_1], virtualUlElement);\n }\n else {\n prepend([ulEle_1], this.parent.list);\n }\n }\n this.parent.focusAtFirstListItem();\n }\n };\n return CheckBoxSelection;\n}());\nexport { CheckBoxSelection };\n","import axios from \"axios\";\r\nimport { createRef, Dispatch, SetStateAction, useState } from \"react\";\r\nimport { ChangeEventArgs as CheckBoxChangeEventArgs } from \"@syncfusion/ej2-react-buttons\";\r\nimport { ChangedEventArgs } from \"@syncfusion/ej2-react-calendars\";\r\nimport { ListBoxComponent, CheckBoxSelection, Inject, DropDownListComponent, ChangeEventArgs as DropDownChangeEventArgs, ListBoxChangeEventArgs } from \"@syncfusion/ej2-react-dropdowns\";\r\nimport { FormValidator, UploaderComponent } from \"@syncfusion/ej2-react-inputs\";\r\nimport { ButtonPropsModel, DialogComponent } from \"@syncfusion/ej2-react-popups\";\r\nimport { useAppContext } from \"contexts\";\r\nimport { DButton, DCheckBox, DDatePicker, DErrorToastModel, DSuccessSymbol, DWarningSymbol, showErrorDialog } from \"components\";\r\nimport { DDataManager } from \"data\";\r\n\r\ninterface Props {\r\n importCSVDialogVisile: boolean;\r\n setImportCSVDialogVisile: Dispatch>;\r\n};\r\n\r\nexport const ImportCSVDialog = ({ importCSVDialogVisile, setImportCSVDialogVisile }: Props) => {\r\n const uploaderRef = createRef();\r\n const [courses, setCourses] = useState([]);\r\n const [assigned, setAssigned] = useState(new Date());\r\n const [completedWithoutPlatform, setCompletedWithoutPlatform] = useState(false);\r\n const [delimiter, setDelimiter] = useState(\";\");\r\n const [skipFirstRow, setSkipFirstRow] = useState(true);\r\n const [wait, setWait] = useState(false);\r\n const [responseSuccessMessage, setResponseSuccessMessage] = useState(undefined);\r\n const [responseWarningMessage, setResponseWarningMessage] = useState(undefined);\r\n const [responseData, setResponseData] = useState(undefined);\r\n const { showToast } = useAppContext();\r\n const importFormId = \"importForm\"\r\n const formObject = new FormValidator(`#${importFormId}`, {\r\n locale: \"it\",\r\n rules: {\r\n \"File\": {\r\n \"required\": [\r\n () => uploaderRef.current && uploaderRef.current.fileList.length === 1, \"* Seleziona un file CSV\"]\r\n },\r\n \"Assigned\": { \"required\": [true, \"* Seleziona una data\"] },\r\n \"Delimeter\": { \"required\": [true, \"* Seleziona un delimitatore\"] }\r\n }\r\n });\r\n const buttons: ButtonPropsModel[] = [\r\n {\r\n buttonModel: {\r\n cssClass: \"float-start\",\r\n content: \"Scarica file esempio\",\r\n iconCss: \"las la-download\",\r\n disabled: wait\r\n },\r\n click: () => downloadFile(\"file_esempio.csv\", `${process.env.PUBLIC_URL}/files/file_esempio.csv`)\r\n },\r\n {\r\n buttonModel: {\r\n content: \"Importa\",\r\n iconCss: \"las la-upload\",\r\n isPrimary: true,\r\n disabled: wait\r\n },\r\n click: () => save()\r\n }\r\n ];\r\n const data = new DDataManager({ path: \"courses\" });\r\n\r\n const downloadFile = (fileName: string, url: string) => {\r\n const link = document.createElement(\"a\");\r\n link.setAttribute(\"download\", fileName);\r\n link.href = url;\r\n document.body.appendChild(link);\r\n link.click();\r\n link.remove();\r\n };\r\n\r\n const save = () => {\r\n if (formObject.validate()) {\r\n const data = uploaderRef.current?.getFilesData();\r\n if (data && data.length === 1) {\r\n setWait(true);\r\n const reader: FileReader = new FileReader();\r\n reader.onload = () => {\r\n const formData = {\r\n File: reader.result,\r\n Courses: courses,\r\n Assigned: assigned,\r\n CompletedWithoutPlatform: completedWithoutPlatform,\r\n Delimiter: delimiter,\r\n SkipFirstRow: skipFirstRow,\r\n }\r\n axios.post(\"users/import\", JSON.stringify(formData))\r\n .then((response) => {\r\n const { Success, Warning, File } = response.data;\r\n setResponseSuccessMessage(Success);\r\n setWait(false);\r\n setResponseWarningMessage(Warning);\r\n setResponseData(File);\r\n })\r\n .catch((err) => {\r\n if (err.response.status === 400 && err.response.data) {\r\n setWait(false);\r\n showErrorDialog(err.response.data);\r\n } else {\r\n showToast(new DErrorToastModel(\"Si è verificato un errore.\"));\r\n close();\r\n }\r\n });\r\n };\r\n reader.onerror = () => {\r\n setWait(false);\r\n showToast(new DErrorToastModel(\"Errore nell'importazione del file. Prego riprovare.\"));\r\n };\r\n reader.readAsDataURL(data[0].rawFile as File);\r\n }\r\n }\r\n };\r\n\r\n const close = () => {\r\n setResponseSuccessMessage(undefined);\r\n setResponseWarningMessage(undefined);\r\n setResponseData(undefined);\r\n setWait(false);\r\n uploaderRef.current?.clearAll();\r\n formObject?.reset();\r\n setImportCSVDialogVisile(false);\r\n };\r\n\r\n return (\r\n \r\n
    \r\n {responseSuccessMessage &&\r\n
    \r\n
    \r\n \r\n
    {responseSuccessMessage}
    \r\n
    \r\n {responseData &&\r\n
    \r\n downloadFile(\"utenti_importati.csv\", `data:application/octet-stream;base64,${responseData}`)}\r\n >\r\n Scarica elenco utenti importati\r\n \r\n
    \r\n }\r\n
    \r\n }\r\n {\r\n responseWarningMessage &&\r\n
    \r\n \r\n
    {responseWarningMessage}
    \r\n
    \r\n }\r\n {wait ?\r\n <>File viene importato, prego attendere...\r\n :\r\n (\r\n
    e.preventDefault()} >\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n args?.value && setCourses((args as any).value)}\r\n cssClass=\"mb-2\"\r\n dataSource={data}\r\n fields={{ value: \"Id\", text: \"Description\" }}\r\n name=\"Courses\"\r\n selectionSettings={{ showCheckbox: true }}\r\n sortOrder=\"Ascending\"\r\n value={courses}\r\n >\r\n \r\n \r\n args?.value && setAssigned(args.value)}\r\n data-msg-containerid=\"AssignedError\"\r\n disabled={courses.length === 0}\r\n name=\"Assigned\"\r\n placeholder=\"Data assegnazione corso/i\"\r\n required={true}\r\n value={assigned}\r\n />\r\n
    \r\n args?.checked !== undefined && setCompletedWithoutPlatform(args.checked)}\r\n disabled={courses.length === 0}\r\n label=\"Corso/i già completati fuori dalla PiattaFormazione\"\r\n name=\"CompletedWithoutPlatform\"\r\n value={completedWithoutPlatform}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n args?.checked !== undefined && setSkipFirstRow(args.checked)}\r\n cssClass=\"mb-2\"\r\n label=\"Salta prima riga (intestazioni delle colonne)\"\r\n name=\"SkipFirstRow\"\r\n value={skipFirstRow}\r\n />\r\n args?.value && setDelimiter(args.value as string)}\r\n dataSource={[{ Id: \";\", Description: \"Punto e virgola (;)\" }, { Id: \",\", Description: \"Virgola (,)\" }, { Id: \"\\t\", Description: \"Tabulazione\" }]}\r\n data-msg-containerid=\"DelimeterError\"\r\n fields={{ value: \"Id\", text: \"Description\" }}\r\n floatLabelType={\"Always\"}\r\n name=\"Delimeter\"\r\n value={delimiter}\r\n showClearButton={false}\r\n sortOrder=\"Ascending\"\r\n placeholder=\"Separatore colonne\"\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n )}\r\n
    \r\n \r\n )\r\n}","import { lazy, useState } from \"react\";\r\nimport { Browser } from \"@syncfusion/ej2-base\";\r\nimport { TabItemModel } from \"@syncfusion/ej2-react-navigations\";\r\nimport { TooltipComponent } from \"@syncfusion/ej2-react-popups\";\r\nimport { DCard, DTab } from \"components\";\r\nimport { UserDialogContextProvider } from \"contexts\";\r\nimport { CompletedCourses } from \"../../_shared\";\r\nimport {\r\n DueCourses,\r\n InactiveUsers,\r\n Summary,\r\n UncompletedCourses,\r\n Users,\r\n UsersWithoutCourses,\r\n} from \"./tabs\";\r\nimport { ImportCSVDialog } from \"./ImportCSVDialog\";\r\n\r\nimport \"./styles.scss\";\r\n\r\n\r\nconst UserDialog = lazy(() => import(\"../../_shared/userDialog/UserDialog\"));\r\n\r\nexport const AdminHome = () => {\r\n const [importCSVDialogVisile, setImportCSVDialogVisible] = useState(false);\r\n\r\n const items: TabItemModel[] = [\r\n {\r\n header: { text: \"Utenti\", iconCss: \"las la-users\" },\r\n content: (() => ) as any\r\n },\r\n {\r\n header: { text: \"Corsi completati\", iconCss: \"las la-list-alt\" },\r\n content: (() => ) as any\r\n },\r\n {\r\n header: { text: \"Corsi in scadenza\", iconCss: \"las la-calendar-times\" },\r\n content: (() => ) as any\r\n },\r\n {\r\n header: { text: \"Corsi da completare\", iconCss: \"las la-tasks\" },\r\n content: (() => ) as any\r\n },\r\n {\r\n header: { text: \"Utenti senza corsi\", iconCss: \"las la-exclamation-triangle\" },\r\n content: (() => ) as any\r\n },\r\n {\r\n header: { text: \"Utenti disattivati\", iconCss: \"las la-eye-slash\" },\r\n content: (() => ) as any\r\n },\r\n {\r\n header: { text: \"Riepilogo\", iconCss: \"las la-chart-bar\" },\r\n content: (() => ) as any\r\n },\r\n ];\r\n\r\n const goToSettings = () => {\r\n window.location.href = \"/settings\";\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n

    Panoramica

    \r\n {!Browser.isDevice &&\r\n
    \r\n \r\n \r\n \r\n
    \r\n }\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n","export const Page400 = () => {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n","import { Link } from \"react-router-dom\";\r\n\r\nexport const Page404 = () => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n 404\r\n
    \r\n La pagina che stai cercando non è stata trovata.\r\n
    \r\n \r\n Torna alla pagina principale\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n","import { Link } from \"react-router-dom\";\r\n\r\nexport const Page500 = () => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n 500\r\n
    Oops. Qualcosa è andato storto.
    \r\n \r\n Torna alla pagina principale\r\n \r\n |\r\n \r\n Logout\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})();\nimport * as React from 'react';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `DropDownButtonComponent` represents the react DropDownButton Component.\n * ```ts\n * \n * ```\n */\nvar DropDownButtonComponent = /** @class */ (function (_super) {\n __extends(DropDownButtonComponent, _super);\n function DropDownButtonComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = { 'dropDownButtonItems': 'dropDownButtonItem' };\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n DropDownButtonComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('button', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return DropDownButtonComponent;\n}(DropDownButton));\nexport { DropDownButtonComponent };\napplyMixins(DropDownButtonComponent, [ComponentBase, React.Component]);\n","import { useEffect, useState } from \"react\";\r\nimport axios from \"axios\";\r\nimport {\r\n ChangedEventArgs,\r\n FormValidator,\r\n FormValidatorModel,\r\n TextBoxComponent,\r\n} from \"@syncfusion/ej2-react-inputs\";\r\nimport { ButtonComponent } from \"@syncfusion/ej2-react-buttons\";\r\nimport { DropDownButtonComponent, ItemModel, } from \"@syncfusion/ej2-react-splitbuttons\";\r\nimport { DButton, DCard } from \"components\";\r\nimport { getAuthenticatedUser, getAuthenticatedUserApiPath, Role, setAuthenticatedUser } from \"utils\";\r\n\r\nimport \"./styles.scss\";\r\n\r\ninterface Props {\r\n role: Role;\r\n}\r\n\r\nexport const LoginForm = ({ role }: Props) => {\r\n const options: FormValidatorModel = {\r\n locale: \"it\",\r\n rules: {\r\n username: { required: [true, \"* Campo obbligatorio\"] },\r\n password: { required: [true, \"* Campo obbligatorio\"] },\r\n },\r\n };\r\n const loginItems: ItemModel[] = [\r\n // {\r\n // text: \"Accedi come utente\",\r\n // iconCss: \"las la-user\",\r\n // url: \"/login\"\r\n // },\r\n {\r\n text: \"Accedi come azienda\",\r\n iconCss: \"las la-building\",\r\n url: \"/adminlogin\"\r\n },\r\n {\r\n text: \"Accedi come organizzazione\",\r\n iconCss: \"las la-shield-alt\",\r\n url: \"/superadminlogin\"\r\n },\r\n ];\r\n const [username, setUsername] = useState();\r\n const [password, setPassword] = useState();\r\n const [formValidator, setFormValidator] = useState();\r\n const [submitted, setSubmitted] = useState(false);\r\n const [showError, setShowError] = useState(false);\r\n\r\n useEffect(() => {\r\n if (getAuthenticatedUser()) window.location.href = \"/\";\r\n setFormValidator(new FormValidator(\"#loginForm\", options));\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n\r\n const handleSubmit = (e: React.FormEvent) => {\r\n e.preventDefault();\r\n if (formValidator && formValidator.validate()) {\r\n if (username && password) {\r\n setSubmitted(true);\r\n axios\r\n .post(`${getAuthenticatedUserApiPath(role)}/authenticate`, {\r\n username: username,\r\n password: password,\r\n })\r\n .then(\r\n (response) => {\r\n setShowError(false);\r\n setAuthenticatedUser(response.data);\r\n window.location.href = \"/\";\r\n })\r\n .catch(\r\n () => {\r\n setSubmitted(false);\r\n setShowError(true);\r\n }\r\n );\r\n }\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n

    Accedi al Portale

    \r\n

    Inserisci le tue credenziali.

    \r\n {showError && (\r\n
    \r\n Dati per il login non riconosciuti.\r\n
    \r\n )}\r\n
    \r\n
    \r\n setUsername(args?.value)}\r\n htmlAttributes={{\r\n \"data-msg-containerid\": \"usernameError\",\r\n }}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n setPassword(args?.value)}\r\n htmlAttributes={{ \"data-msg-containerid\": \"passwordError\" }}\r\n />\r\n
    \r\n
    \r\n
    \r\n {submitted\r\n && (\r\n
    \r\n Prego attendere...\r\n
    \r\n )}\r\n
    \r\n \r\n Accedi\r\n \r\n {role !== Role.User &&\r\n \r\n }\r\n
    \r\n \r\n {role === Role.User &&\r\n
    \r\n window.location.href = \"/forgotPassword\"}>Password dimenticata?\r\n
    \r\n }\r\n \r\n
    \r\n );\r\n};","import { Role } from \"utils\";\r\nimport { LoginForm } from \"./LoginForm\";\r\n\r\nexport const AdminLogin = () => {\r\n return (\r\n \r\n );\r\n};","import { useEffect, useState } from \"react\";\r\nimport axios from \"axios\";\r\nimport {\r\n ChangedEventArgs,\r\n FormValidator,\r\n FormValidatorModel,\r\n TextBoxComponent,\r\n} from \"@syncfusion/ej2-react-inputs\";\r\nimport { ButtonComponent } from \"@syncfusion/ej2-react-buttons\";\r\nimport { DButton, DCard } from \"components\";\r\nimport { getAuthenticatedUser } from \"utils\";\r\n\r\nimport \"./styles.scss\";\r\n\r\nexport const ForgotPassword = () => {\r\n const options: FormValidatorModel = {\r\n locale: \"it\",\r\n rules: {\r\n codiceFiscale: { required: [true, \"* Campo obbligatorio\"] },\r\n },\r\n };\r\n const [codiceFiscale, setCodiceFiscale] = useState();\r\n const [formValidator, setFormValidator] = useState();\r\n const [submitted, setSubmitted] = useState(false);\r\n const [showSuccess, setShowSuccess] = useState(false);\r\n const [showError, setShowError] = useState(false);\r\n\r\n useEffect(() => {\r\n if (getAuthenticatedUser()) window.location.href = \"/\";\r\n setFormValidator(new FormValidator(\"#forgotPasswordForm\", options));\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n\r\n const handleSubmit = (e: React.FormEvent) => {\r\n e.preventDefault();\r\n if (formValidator && formValidator.validate()) {\r\n if (codiceFiscale) {\r\n setSubmitted(true);\r\n axios\r\n .post(`email/forgotPassword`, JSON.stringify({ CodiceFiscale: codiceFiscale }))\r\n .then(() => {\r\n setShowError(false);\r\n setShowSuccess(true);\r\n })\r\n .catch(() => {\r\n setShowSuccess(false);\r\n setShowError(true);\r\n }\r\n )\r\n .finally(() => {\r\n setSubmitted(false);\r\n });\r\n }\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n

    Recupero dell'account

    \r\n

    Inserisci il tuo codice fiscale e ti invieremo la password al tuo indirizzo e-mail.

    \r\n {showSuccess && (\r\n
    \r\n La tua password è stata inviata al tuo indirizzo e-mail.
    Controlla la tua casella di posta elettronica ed eventualmente la cartella spam.
    Se non hai ancora ricevuto un'e-mail dopo 30 minuti, riprova o contatta il supporto.\r\n
    \r\n )}\r\n {showError && (\r\n
    \r\n Errore: nessun account o indirizzo e-mail è stato trovato per il codice fiscale inserito. Si prega di contattare il supporto.\r\n
    \r\n )}\r\n
    \r\n
    \r\n setCodiceFiscale(args?.value)}\r\n htmlAttributes={{\r\n \"data-msg-containerid\": \"codiceFiscaleError\",\r\n }}\r\n />\r\n
    \r\n
    \r\n
    \r\n {submitted\r\n && (\r\n
    \r\n Prego attendere...\r\n
    \r\n )}\r\n
    \r\n \r\n Invia password al mio indirizzo e-mail\r\n \r\n
    \r\n \r\n
    \r\n window.location.href = \"/login\"}>Torna al login\r\n
    \r\n \r\n
    \r\n );\r\n};","import { DButton } from \"components\";\r\nimport { logout } from \"utils\";\r\n\r\nexport const Logout = () => {\r\n logout();\r\n\r\n return (\r\n
    \r\n Se entro 5 secondi non vieni reindirizzato, clicca logout()}>QUI per completare il\r\n logout.\r\n
    \r\n );\r\n};\r\n","import { Role } from \"utils\";\r\nimport { LoginForm } from \"./LoginForm\";\r\n\r\nexport const UserLogin = () => {\r\n return (\r\n \r\n );\r\n};\r\n","import { Role } from \"utils\";\r\nimport { LoginForm } from \"./LoginForm\";\r\n\r\nexport const SuperAdminLogin = () => {\r\n return (\r\n \r\n );\r\n};","import {\r\n ColumnType,\r\n DGrid,\r\n DGridIDColumn,\r\n DGridInvisibleColumn,\r\n DGridStringColumn\r\n} from \"components\";\r\nimport { getAuthenticatedUser } from \"utils\";\r\n\r\nexport const Admins = () => {\r\n const superAdminId = getAuthenticatedUser()?.Id;\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n","import {\r\n ColumnType,\r\n DGrid,\r\n DGridInvisibleColumn,\r\n DGridNumberColumn,\r\n DGridStringColumn,\r\n} from \"components\";\r\n\r\nexport const Summary = () => {\r\n const groupCaptionTemplate = (props) => {\r\n return {props.Sum};\r\n };\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n","import { lazy } from \"react\";\r\nimport { Browser } from \"@syncfusion/ej2-base\";\r\nimport { TabItemModel } from \"@syncfusion/ej2-react-navigations\";\r\nimport { UserDialogContextProvider } from \"contexts\";\r\nimport { DCard, DTab } from \"components\";\r\nimport { CompletedCourses } from \"../../_shared\";\r\nimport { Admins, Summary } from \"./tabs\";\r\nimport { TooltipComponent } from \"@syncfusion/ej2-react-popups\";\r\n\r\nconst UserDialog = lazy(() => import(\"../../_shared/userDialog/UserDialog\"));\r\n\r\nexport const SuperAdminHome = () => {\r\n const items: TabItemModel[] = [\r\n {\r\n header: { text: \"Aziende\", iconCss: \"las la-building\" },\r\n content: (() => ) as any\r\n },\r\n {\r\n header: { text: \"Corsi completati\", iconCss: \"las la-list-alt\" },\r\n content: (() => ) as any\r\n },\r\n {\r\n header: { text: \"Riepilogo\", iconCss: \"las la-chart-bar\" },\r\n content: (() => ) as any\r\n }\r\n ];\r\n\r\n const goToSettings = () => {\r\n window.location.href = \"/settings\";\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n

    Panoramica

    \r\n {!Browser.isDevice &&\r\n
    \r\n \r\n \r\n \r\n
    \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 { useEffect, useState } from \"react\";\r\nimport { useNavigate, useParams } from \"react-router-dom\";\r\nimport { DCard, DErrorSymbol, DList, DProgressBar, DWarningSymbol, GoBackButton } from \"components\";\r\nimport axios from \"axios\";\r\nimport { formatDate, getSettingAsNumber, getSettingAsString } from \"utils\";\r\n\r\nexport const Course = () => {\r\n const navigate = useNavigate();\r\n const { id } = useParams();\r\n const [course, setCourse] = useState(undefined);\r\n const [numberOfDaysToCompleteCourse, setNumberOfDaysToCompleteCourse] = useState(0);\r\n const [introductionText, setIntroductionText,] = useState(\"\");\r\n\r\n useEffect(() => {\r\n const fetchSettings = async () => {\r\n setNumberOfDaysToCompleteCourse(await getSettingAsNumber(1));\r\n setIntroductionText(await getSettingAsString(10));\r\n };\r\n fetchSettings();\r\n }, []);\r\n\r\n useEffect(() => {\r\n axios\r\n .get(`usercourses/${id}/details`)\r\n .then((response) => {\r\n if ((response.data as any)[\"CountModulesDone\"] === (response.data as any)[\"CountModulesAll\"])\r\n navigate(\"/home\");\r\n setCourse(response.data)\r\n });\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [id]);\r\n\r\n const select = (args) => {\r\n if (args && args.data && args.data[\"Id\"]) {\r\n navigate(`/corso/${id}/modulo/${args.data[\"Id\"]}`);\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n \r\n\r\n
    \r\n

    {course ? `${course[\"Description\"]}` : \"Corso\"}

    \r\n
    \r\n\r\n {course && (\r\n <>\r\n
    \r\n
    \r\n \r\n
    \r\n

    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {`${formatDate(course[\"DueDate\"])}, (${course[\"DaysRemaining\"]} giorno/i)`}\r\n {course[\"DaysRemaining\"] <= numberOfDaysToCompleteCourse / 2 && course[\"DaysRemaining\"] > numberOfDaysToCompleteCourse / 4 && course[\"DaysRemaining\"] > 0 && }\r\n {course[\"DaysRemaining\"] <= numberOfDaysToCompleteCourse / 4 && }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {`${course[\"Duration\"]} h`}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n )}\r\n\r\n \r\n data[\"Name\"],\r\n content: \"\",\r\n enabledField: \"Enabled\",\r\n badge: (data: object) => `${data[\"CountSlides\"]} schede`,\r\n avatar: (data: object) => data[\"Order\"],\r\n showSuccessSymbol: (data: object) => data[\"Completed\"],\r\n }}\r\n />\r\n \r\n
    \r\n );\r\n};\r\n","import { useEffect, useState } from \"react\";\r\nimport { DButton, DCard, DCheckBox, DTextBox, showErrorDialog } from \"components\";\r\nimport { FormValidatorModel, FormValidator, InputEventArgs } from \"@syncfusion/ej2-react-inputs\";\r\nimport { ChangeEventArgs } from \"@syncfusion/ej2-react-buttons\";\r\nimport { getAuthenticatedUser, getSettingAsString } from \"utils\";\r\n\r\ninterface Params {\r\n course: object;\r\n module: object;\r\n next: () => void;\r\n}\r\n\r\nexport const Confirmation = ({ course, module, next }: Params) => {\r\n const confirmationFormId: string = \"confirmationForm\";\r\n const [codiceFiscale, setCodiceFiscale] = useState(undefined);\r\n const [confirm, setConfirm] = useState(false);\r\n const [formObject, setFormObject] = useState();\r\n const [completionText, setCompletionText] = useState(\"\");\r\n const [completionCheckboxText, setCompletionCheckboxText] = useState(\"\");\r\n\r\n const formValidationRules: FormValidatorModel = {\r\n locale: \"it\",\r\n rules: {\r\n codiceFiscale: {\r\n required: [true, \"* Inserisci il tuo codice fiscale\"],\r\n regex: [\r\n /^\\s*(?:[A-Z][AEIOU][AEIOUX]|[B-DF-HJ-NP-TV-Z]{2}[A-Z]){2}(?:[\\dLMNP-V]{2}(?:[A-EHLMPR-T](?:[04LQ][1-9MNP-V]|[15MR][\\dLMNP-V]|[26NS][0-8LMNP-U])|[DHPS][37PT][0L]|[ACELMRT][37PT][01LM]|[AC-EHLMPR-T][26NS][9V])|(?:[02468LNQSU][048LQU]|[13579MPRTV][26NS])B[26NS][9V])(?:[A-MZ][1-9MNP-V][\\dLMNP-V]{2}|[A-M][0L](?:[1-9MNP-V][\\dLMNP-V]|[0L][1-9MNP-V]))[A-Z]\\s*$/i,\r\n \"* Inserisci un codice fiscale valido\",\r\n ],\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n setFormObject(new FormValidator(`#${confirmationFormId}`, formValidationRules));\r\n const fetchSettings = async () => {\r\n setCompletionText(await getSettingAsString(7));\r\n setCompletionCheckboxText(await getSettingAsString(8));\r\n };\r\n fetchSettings();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const input = (args?: InputEventArgs) => {\r\n if (args)\r\n setCodiceFiscale(args.value);\r\n };\r\n\r\n const change = (args?: ChangeEventArgs) => {\r\n if (args)\r\n setConfirm(args.checked ?? false);\r\n };\r\n\r\n const submit = () => {\r\n if (formObject?.validate()) {\r\n const user = getAuthenticatedUser();\r\n if (codiceFiscale?.trim().toLocaleLowerCase() !== user?.UserName.toLocaleLowerCase()) {\r\n setCodiceFiscale(\"\");\r\n showErrorDialog(\"Il codice fiscale inserito non corrisponde all'utente registrato. Controlla il tuo codice fiscale inserito.\");\r\n } else {\r\n next();\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n
    \r\n

    Conferma

    \r\n
    \r\n
    \r\n {`Modulo '${module ? module[\"Name\"] : \"\"}'`}\r\n
    \r\n\r\n \r\n
    e.preventDefault()}>\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Concludi modulo\r\n \r\n
    \r\n \r\n \r\n \r\n )\r\n}","import { ChangeEvent, useEffect, useRef, useState } from \"react\";\r\nimport axios from \"axios\";\r\nimport { DArrowLeftCircleSymbolString, DArrowRightCircleSymbolString, DButton, DCard, DProgressBar, showErrorDialog, showSuccessDialog, showWarningDialog } from \"components\";\r\nimport { getSettingAsString } from \"utils\";\r\n\r\ninterface Params {\r\n module: object;\r\n back: () => void;\r\n next: () => void;\r\n};\r\n\r\nexport const Questions = ({ module, back, next }: Params) => {\r\n const warningText = useRef(\"\");\r\n const successText = useRef(\"\");\r\n const errorText = useRef(\"\");\r\n const [questions, setQuestions] = useState(undefined);\r\n const [question, setQuestion] = useState(-1);\r\n const [answers, setAnswers] = useState<{ [key: string]: string }>({});\r\n\r\n useEffect(() => {\r\n let isRendered = true;\r\n loadQuestions(isRendered);\r\n const fetchSettings = async () => {\r\n const setting4 = await getSettingAsString(4);\r\n const setting5 = await getSettingAsString(5);\r\n const setting6 = await getSettingAsString(6);\r\n if (isRendered) {\r\n warningText.current = setting4;\r\n successText.current = setting5;\r\n errorText.current = setting6;\r\n }\r\n };\r\n fetchSettings();\r\n return () => {\r\n isRendered = false;\r\n setAnswers({});\r\n setQuestion(-1);\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (questions && questions.length > 0)\r\n setQuestion(0);\r\n }, [questions]);\r\n\r\n const loadQuestions = (isRendered: boolean = true) => {\r\n axios\r\n .get(`coursemodulequestions/coursemodule/${module[\"Id\"]}`)\r\n .then((response) => { if (isRendered) setQuestions(response.data as any[]); });\r\n };\r\n\r\n const changeAnswer = (e: ChangeEvent) => {\r\n setAnswers(a => { return { ...a, [e.target[\"name\"]]: e.target[\"value\"] }; })\r\n };\r\n\r\n const submit = () => {\r\n showWarningDialog(warningText.current, () => {\r\n if (Object.keys(answers).length === questions?.length) {\r\n let countWrongAnswer = 0;\r\n questions.forEach(q => {\r\n if (q[\"CorrectAnswer\"].toString() !== answers[q[\"Id\"]]) {\r\n countWrongAnswer += 1;\r\n return;\r\n }\r\n });\r\n \r\n if (countWrongAnswer > 2){\r\n showErrorDialog(errorText.current, () => {\r\n setAnswers({});\r\n setQuestion(-1);\r\n loadQuestions();\r\n back();\r\n });\r\n }\r\n else\r\n showSuccessDialog(successText.current, () => next());\r\n }\r\n });\r\n };\r\n\r\n return (\r\n <>\r\n
    \r\n

    Quiz

    \r\n
    \r\n
    \r\n {`Modulo '${module ? module[\"Name\"] : \"\"}'`}\r\n
    \r\n\r\n {questions && question !== -1 && (\r\n
    e.preventDefault()}>\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n

    {`${question + 1}) ${questions[question][\"Question\"]}`}

    \r\n
    \r\n \r\n \r\n {questions[question][\"Answer1\"]}\r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n {questions[question][\"Answer2\"]}\r\n \r\n
    \r\n\r\n {questions[question][\"Answer3\"] &&\r\n <>\r\n
    \r\n \r\n \r\n {questions[question][\"Answer3\"]}\r\n \r\n
    \r\n \r\n }\r\n
    \r\n
    \r\n setQuestion(q => q - 1)}\r\n >\r\n Indietro\r\n \r\n {question < questions.length - 1 ?\r\n (\r\n = questions.length - 1 || Object.keys(answers).length <= question}\r\n iconCss={DArrowRightCircleSymbolString}\r\n iconPosition={\"Right\"}\r\n onClick={() => setQuestion(q => q + 1)}\r\n >\r\n Continua\r\n \r\n )\r\n :\r\n (\r\n \r\n Invia\r\n \r\n )\r\n }\r\n
    \r\n
    \r\n
    \r\n )}\r\n \r\n );\r\n};","import { TouchEvent, useEffect, useRef, useState } from \"react\";\r\nimport axios from \"axios\";\r\n// import ReactPlayer from \"react-player/lazy\";\r\nimport { DArrowLeftCircleSymbolString, DArrowRightCircleSymbolString, DButton, DCard, showInformationDialog } from \"components\";\r\nimport { getCoursesUrl, getSettingAsString } from \"utils\";\r\n\r\nimport \"./styles.scss\";\r\n\r\ninterface Params {\r\n course: object;\r\n module: object;\r\n next: () => void;\r\n};\r\n\r\nexport const Slides = ({ course, module, next }: Params) => {\r\n const coursesUrl = getCoursesUrl();\r\n const slidesAlreadySeen = useRef([]);\r\n const [slides, setSlides] = useState(undefined);\r\n const [slide, setSlide] = useState(0);\r\n const [timeLeft, setTimeLeft] = useState(-1);\r\n const [clientX, setClientX] = useState(0)\r\n\r\n useEffect(() => {\r\n const fetchSettings = async () => {\r\n const setting = await getSettingAsString(12);\r\n showInformationDialog(setting, () =>\r\n axios\r\n .get(`coursemoduleslides/coursemodule/${module[\"Id\"]}`)\r\n .then((response) => {\r\n setSlides((response.data as any));\r\n }));\r\n };\r\n fetchSettings();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (slides && slide > -1 && slide < slides.length) {\r\n if (slidesAlreadySeen.current.includes(slide))\r\n setTimeLeft(0);\r\n else {\r\n setTimeLeft(slides[slide][\"Duration\"])\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [slides, slide]);\r\n\r\n useEffect(() => {\r\n if (timeLeft > 0)\r\n setTimeout(() => { setTimeLeft(value => value <= 0 ? 0 : value - 1); }, 1000);\r\n else if (timeLeft <= 0) {\r\n slidesAlreadySeen.current.push(slide);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [timeLeft]);\r\n\r\n const itemTemplate = (): JSX.Element | undefined => {\r\n if (slides && slides.length > 0 && slide >= 0) {\r\n const currentSlide = slides[slide];\r\n const path = `${coursesUrl}/${course[\"InternalName\"]}/${module[\"Name\"]}/Slide ${currentSlide[\"Order\"]}.${currentSlide[\"IsVideo\"] ? \"mp4\" : \"jpg\"}`;\r\n return (\r\n
    \r\n {\r\n currentSlide.IsVideo ?\r\n \r\n :\r\n
    \r\n {`Slide\r\n
    \r\n }\r\n
    \r\n );\r\n }\r\n };\r\n\r\n const onTouchStart = (args: TouchEvent) => {\r\n setClientX(args.targetTouches[0].clientX);\r\n };\r\n\r\n const onTouchEnd = (args: TouchEvent) => {\r\n if (slides) {\r\n const delta = clientX - args.changedTouches[0].clientX;\r\n if (Math.abs(delta) > 200) {\r\n if (clientX < args.changedTouches[0].clientX) {\r\n if (slide > 0)\r\n setSlide(s => s - 1)\r\n }\r\n else {\r\n if (slide < slides.length - 1 && timeLeft === 0)\r\n setSlide(s => s + 1)\r\n }\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n
    \r\n {course ? `${course[\"Description\"]}` : \"Corso\"}\r\n
    \r\n
    \r\n {`Modulo '${module ? module[\"Name\"] : \"\"}'`}\r\n
    \r\n\r\n \r\n {slides && slides.length > 0 &&\r\n <>\r\n {itemTemplate()}\r\n
    \r\n setSlide(s => s - 1)}\r\n >\r\n Indietro\r\n \r\n
    \r\n {timeLeft > 0 && (\r\n <>\r\n \r\n {timeLeft}\r\n \r\n )}\r\n
    \r\n {slide < slides.length - 1 ?\r\n (\r\n = slides.length - 1 || timeLeft !== 0}\r\n iconCss={DArrowRightCircleSymbolString}\r\n iconPosition={\"Right\"}\r\n onClick={() => setSlide(s => s + 1)}\r\n >\r\n Continua\r\n \r\n )\r\n :\r\n (\r\n next()}\r\n >\r\n Vai al quiz\r\n \r\n )\r\n }\r\n
    \r\n \r\n }\r\n
    \r\n \r\n );\r\n};","import { useEffect, useState } from \"react\";\r\nimport { useNavigate, useParams } from \"react-router-dom\";\r\nimport axios from \"axios\";\r\nimport { GoBackButton } from \"components\";\r\nimport { preventGoingBackOrLeavingPage } from \"utils/history\";\r\nimport { Slides } from \"./components\";\r\n\r\nexport const Module = () => {\r\n const navigate = useNavigate();\r\n const { id, courseid } = useParams();\r\n const [course, setCourse] = useState(undefined);\r\n const [module, setModule] = useState(undefined);\r\n const [moduleDone, setModuleDone] = useState(false);\r\n const warningMessage = \"Sei sicuro di voler uscire dal modulo corrente? Dopo l'uscita dal modulo corrente, il modulo deve essere ricominciato dall'inizio.\";\r\n\r\n useEffect(() => {\r\n const { initialize, cleanUp } = preventGoingBackOrLeavingPage();\r\n initialize(!moduleDone, warningMessage);\r\n\r\n let isRendered = true;\r\n axios\r\n .get(`usercoursemodules/${courseid}`)\r\n .then((response) => {\r\n //check if module is not already done\r\n if (isRendered && (response.data as any).some(x => x[\"Id\"] === id)) {\r\n if ((response.data as any).find(x => x[\"Id\"] === id)[\"Completed\"] !== null) {\r\n setModuleDone(true);\r\n navigate(`/corso/${courseid}`);\r\n }\r\n }\r\n });\r\n axios\r\n .get(`usercourses/${courseid}/details`)\r\n .then((response) => { if (isRendered) setCourse(response.data); });\r\n axios\r\n .get(`coursemodules/${id}`)\r\n .then((response) => { if (isRendered) setModule(response.data); });\r\n return () => { isRendered = false; cleanUp(); };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (moduleDone)\r\n navigate(`/corso/${courseid}/quiz/${id}`, { state: { completed: true } });\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [moduleDone]);\r\n\r\n const next = () => {\r\n setModuleDone(true);\r\n };\r\n\r\n return (\r\n
    \r\n \r\n\r\n {course && module && }\r\n
    \r\n );\r\n};\r\n","import { useEffect, useState } from \"react\";\r\nimport { useNavigate, useLocation, useParams } from \"react-router-dom\";\r\nimport axios from \"axios\";\r\nimport { DErrorToastModel, DSuccessToastModel, GoBackButton } from \"components\";\r\nimport { useAppContext } from \"contexts\";\r\nimport { preventGoingBackOrLeavingPage } from \"utils/history\";\r\nimport { Confirmation, Questions } from \"./components\";\r\n\r\nexport const Quiz = () => {\r\n const navigate = useNavigate();\r\n const { id, courseid } = useParams();\r\n const location = useLocation();\r\n if (!location.state || (location.state as any).completed as boolean !== true)\r\n navigate(`/corso/${courseid}/modulo/${id}`);\r\n\r\n const [step, setStep] = useState(1);\r\n const [course, setCourse] = useState(undefined);\r\n const [module, setModule] = useState(undefined);\r\n const [moduleDone, setModuleDone] = useState(false);\r\n const { showToast } = useAppContext();\r\n\r\n const warningMessage = \"Sei sicuro di voler uscire dal modulo corrente? Dopo l'uscita dal modulo corrente, il modulo deve essere ricominciato dall'inizio.\";\r\n\r\n useEffect(() => {\r\n const {initialize, cleanUp} = preventGoingBackOrLeavingPage();\r\n initialize(!moduleDone, warningMessage);\r\n\r\n let isRendered = true;\r\n axios\r\n .get(`usercoursemodules/${courseid}`)\r\n .then((response) => {\r\n //check if module/quiz is not already done\r\n if (isRendered && (response.data as any).some(x => x[\"Id\"] === id)) {\r\n if ((response.data as any).find(x => x[\"Id\"] === id)[\"Completed\"] !== null) {\r\n setModuleDone(true);\r\n navigate(`/corso/${courseid}`);\r\n }\r\n }\r\n });\r\n axios\r\n .get(`usercourses/${courseid}/details`)\r\n .then((response) => { if (isRendered) setCourse(response.data); });\r\n axios\r\n .get(`coursemodules/${id}`)\r\n .then((response) => { if (isRendered) setModule(response.data); });\r\n return () => { isRendered = false; cleanUp(); };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (moduleDone) {\r\n if (step < 2)\r\n navigate(`/corso/${courseid}/modulo/${id}`);\r\n else\r\n navigate(`/corso/${courseid}`);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [moduleDone])\r\n\r\n const back = () => {\r\n navigate(`/corso/${courseid}/modulo/${id}`);\r\n };\r\n\r\n const next = () => {\r\n if (step < 2)\r\n setStep(step + 1);\r\n else {\r\n const data = { UserCourseId: courseid, CourseModuleId: id, Completed: new Date().toLocaleString(\"en-US\", { timeZone: \"Europe/Rome\" }) };\r\n axios\r\n .put(\"usercoursemodules\", JSON.stringify(data))\r\n .then(() => {\r\n setModuleDone(true);\r\n showToast(new DSuccessToastModel(\"Modulo completato con successo.\"));\r\n })\r\n .catch(() => showToast(new DErrorToastModel(\"Si è verificato un errore.\")));\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n \r\n\r\n {course && module &&\r\n <>\r\n {step === 1 && }\r\n {step === 2 && }\r\n \r\n }\r\n
    \r\n )\r\n}","import { useEffect, useState } from \"react\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport {\r\n DCard,\r\n DGrid,\r\n DGridIDColumn,\r\n DGridFormatting,\r\n DGridFormattingRule,\r\n DGridStringColumn,\r\n DGridDateColumn,\r\n DGridBooleanColumn,\r\n FormattingRulesOperator,\r\n DButton,\r\n DArrowRightCircleSymbol,\r\n DErrorSymbol,\r\n DWarningSymbol\r\n} from \"components\";\r\nimport { formatDate, getSettingAsNumber, getSettingAsString } from \"utils\";\r\nimport axios from \"axios\";\r\n\r\nimport \"./styles.scss\";\r\nimport { TooltipComponent } from \"@syncfusion/ej2-react-popups\";\r\n\r\nexport const UserHome = () => {\r\n const navigate = useNavigate();\r\n const [numberOfDaysToCompleteCourse, setNumberOfDaysToCompleteCourse,] = useState(0);\r\n const [introductionText, setIntroductionText,] = useState(\"\");\r\n const [uncompletedCourses, setUncompletedCourses] = useState(undefined);\r\n\r\n useEffect(() => {\r\n axios.get(\"usercourses/uncompleted\").then(({ data }) => {\r\n setUncompletedCourses(data as object[]);\r\n });\r\n const fetchSettings = async () => {\r\n setNumberOfDaysToCompleteCourse(await getSettingAsNumber(1));\r\n setIntroductionText(await getSettingAsString(9));\r\n };\r\n fetchSettings();\r\n }, []);\r\n\r\n const onClick = (courseId: string) => {\r\n navigate(`/corso/${courseId}`);\r\n };\r\n\r\n const showErrorSymbol = (data: any) => {\r\n return data[\"DaysRemaining\"] <= numberOfDaysToCompleteCourse / 4\r\n }\r\n\r\n const showWarningSymbol = (data: any) => {\r\n return data[\"DaysRemaining\"] <= numberOfDaysToCompleteCourse / 2 && data[\"DaysRemaining\"] > numberOfDaysToCompleteCourse / 4 && data[\"DaysRemaining\"] > 0\r\n }\r\n\r\n return (\r\n
    \r\n

    Panoramica

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

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {uncompletedCourses && uncompletedCourses.length > 0 ?\r\n uncompletedCourses.map((data, i) => {\r\n return (\r\n
    \r\n args.cancel = i <= 0} openDelay={1500}>\r\n 0 ? \"disabled\" : (showErrorSymbol(data) ? \"error-border\" : \"\")} ${i > 0 ? \"\" : (showWarningSymbol(data) ? \"warning-border\" : \"\")}`}\r\n displayImageAsHeader={true}\r\n title={data[\"Description\"]}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Assegnato il{formatDate(data[\"Assigned\"])}
    Da completare entro\r\n
    \r\n {`${formatDate(data[\"DueDate\"])}, (${data[\"DaysRemaining\"]} giorno/i)`}\r\n {showWarningSymbol(data) && }\r\n {showErrorSymbol(data) && }\r\n
    \r\n
    Durata\r\n {`${data[\"Duration\"]} h`}\r\n
    Moduli{data[\"CountModulesAll\"]}
    Stato{data[\"CountModulesDone\"] > 0 ? `Iniziato (${data[\"CountModulesDone\"]}/${data[\"CountModulesAll\"]})` : \"Non iniziato\"}
    \r\n
    \r\n { onClick(data[\"Id\"])} disabled={i > 0}>\r\n {data[\"CountModulesDone\"] > 0 ? \"Riprendi corso\" : \"Inizia corso\"}\r\n \r\n }\r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n })\r\n :\r\n

    Nessun corso trovato.

    \r\n }\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 { showWarningDialog } from \"components\";\r\n\r\nexport const preventGoingBackOrLeavingPage = () => {\r\n const initialize = (when: boolean, message: string) => {\r\n window.history.pushState({ name: \"browserBack\" }, \"on browser back click\", window.location.href);\r\n window.history.pushState({ name: \"browserBack\" }, \"on browser back click\", window.location.href);\r\n window.onpopstate = (event) => {\r\n if (event.state)\r\n showWarningDialog(message, () => window.history.back());\r\n };\r\n window.onbeforeunload = (event) => {\r\n if (when) {\r\n const e = event || window.event;\r\n e.preventDefault();\r\n if (e)\r\n e.returnValue = \"\";\r\n return \"\";\r\n }\r\n };\r\n }\r\n const cleanUp = () => {\r\n window.onpopstate = null;\r\n window.onbeforeunload = null;\r\n };\r\n return { initialize, cleanUp };\r\n}","export const getApiUrl = () => {\r\n return process.env.REACT_APP_API_URL;\r\n};\r\n\r\nexport const getCoursesUrl = () => {\r\n return process.env.REACT_APP_COURSES_URL;\r\n};","import axios from \"axios\";\r\n\r\nexport enum Role {\r\n \"User\" = \"User\",\r\n \"Admin\" = \"Admin\",\r\n \"SuperAdmin\" = \"SuperAdmin\",\r\n}\r\n\r\nexport class AuthenticatedUser {\r\n constructor(\r\n public Id: string,\r\n public UserName: string,\r\n public Name: string,\r\n public Role: Role,\r\n public Token: string\r\n ) {}\r\n}\r\n\r\nconst localStorageKey = \"user\";\r\n// const dateFormat = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{7}\\+\\d{2}:\\d{2}$/;\r\n// const reviver = (key, value) => { //necessary to parse C# date correctly as JS Date\r\n// if (typeof value === \"string\" && dateFormat.test(value)) {\r\n// return new Date(value);\r\n// }\r\n// return value;\r\n// }\r\n\r\nexport const getAuthenticatedUser = (): AuthenticatedUser | undefined => {\r\n const storedUser = localStorage.getItem(localStorageKey);\r\n if (storedUser) return JSON.parse(storedUser) as AuthenticatedUser; //JSON.parse(storedUser, reviver)\r\n return undefined;\r\n};\r\n\r\nexport const getAuthenticatedUserApiPath = (role?: Role): string => {\r\n if (role) return `${role.toLowerCase()}s`;\r\n return \"users\";\r\n};\r\n\r\nexport const setAuthenticatedUser = (data: any): void => {\r\n localStorage.setItem(localStorageKey, JSON.stringify(data));\r\n};\r\n\r\nconst clearUserFromLocalStorage = (): void => {\r\n localStorage.removeItem(localStorageKey);\r\n};\r\n\r\nexport const logout = (): void => {\r\n const user = getAuthenticatedUser();\r\n axios\r\n .get(`${getAuthenticatedUserApiPath(user?.Role)}/revoketoken`)\r\n .finally(() => {\r\n clearUserFromLocalStorage();\r\n switch (user?.Role) {\r\n case Role.Admin:\r\n window.location.href = \"/adminlogin\";\r\n break;\r\n case Role.SuperAdmin:\r\n window.location.href = \"/superadminlogin\";\r\n break;\r\n default:\r\n window.location.href = \"/login\";\r\n break;\r\n }\r\n });\r\n};\r\n","import axios from \"axios\";\r\nimport { getApiUrl } from \"./env\";\r\nimport { getAuthenticatedUser, logout } from \"./user\";\r\n\r\nexport const initializeAxios = () => {\r\n axios.defaults.baseURL = getApiUrl();\r\n axios.defaults.withCredentials = true;\r\n\r\n axios.interceptors.request.use(\r\n (config) => {\r\n config.headers.set({ \"Content-Type\": \"application/json\" });\r\n if (!config.url?.includes(\"authenticate\")) {\r\n const user = getAuthenticatedUser();\r\n if (user?.Token)\r\n config.headers[\"Authorization\"] = \"Bearer \" + user.Token;\r\n }\r\n return config;\r\n },\r\n (error) => {\r\n if (error.error.status === 0 && window.location.pathname !== \"/500\")\r\n window.location.href = \"/500\";\r\n return Promise.reject(error);\r\n }\r\n );\r\n\r\n axios.interceptors.response.use(\r\n (response) => {\r\n return Promise.resolve(response);\r\n },\r\n (error) => {\r\n if (error && error.response) {\r\n if (\r\n error.response.status === 401 &&\r\n window.location.pathname !== \"/login\" &&\r\n window.location.pathname !== \"/adminlogin\" &&\r\n window.location.pathname !== \"/superadminlogin\" &&\r\n window.location.pathname !== \"/logout\"\r\n )\r\n logout();\r\n else if (\r\n error.response.status === 500 &&\r\n window.location.pathname !== \"/500\"\r\n )\r\n window.location.href = \"/500\";\r\n } else if (window.location.pathname !== \"/500\")\r\n window.location.href = \"/500\";\r\n return Promise.reject(error);\r\n }\r\n );\r\n};\r\n","export const formatDate = (value: string | number | Date): string => {\r\n if (value) {\r\n const date = new Date(value);\r\n let day = date.getDate().toString();\r\n if (day.length === 1) day = `0${day}`;\r\n let month = (date.getMonth() + 1).toString();\r\n if (month.length === 1) month = `0${month}`;\r\n return `${day}/${month}/${date.getFullYear()}`;\r\n }\r\n return \"\";\r\n};\r\n\r\nexport const formatDateTime = (value: string | number | Date): string => {\r\n if (value) {\r\n const date = new Date(value);\r\n let hours = date.getHours().toString();\r\n if (hours.length === 1) hours = `0${hours}`;\r\n let minutes = date.getMinutes().toString();\r\n if (minutes.length === 1) minutes = `0${minutes}`;\r\n return `${formatDate(value)} ${hours}:${minutes}`;\r\n }\r\n return \"\";\r\n};\r\n\r\nexport const formatDateTimeForExport = (value: string | number | Date): string => {\r\n if (value) {\r\n const date = new Date(value);\r\n let day = date.getDate().toString();\r\n if (day.length === 1) day = `0${day}`;\r\n let month = (date.getMonth() + 1).toString();\r\n if (month.length === 1) month = `0${month}`;\r\n let hours = date.getHours().toString();\r\n if (hours.length === 1) hours = `0${hours}`;\r\n let minutes = date.getMinutes().toString();\r\n if (minutes.length === 1) minutes = `0${minutes}`;\r\n return `${date.getFullYear()}-${month}-${day}_${hours}-${minutes}`;\r\n }\r\n return \"\";\r\n};\r\n","import { Component, ErrorInfo } from \"react\";\r\nimport axios from \"axios\";\r\nimport { Page400 } from \"pages\";\r\n\r\ninterface IProps {\r\n children?: React.ReactNode;\r\n };\r\n\r\ninterface IState {\r\n hasError: boolean;\r\n};\r\n\r\nexport class ErrorBoundary extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { hasError: false };\r\n }\r\n\r\n logError(error: Error, errorInfo: ErrorInfo) {\r\n try {\r\n console.log(error, errorInfo);\r\n const data = {\r\n Message: error.message,\r\n StackTrace: error.stack\r\n };\r\n axios.post(\"errors\", JSON.stringify(data));\r\n } catch { }\r\n }\r\n\r\n static getDerivedStateFromError(_: Error) {\r\n return { hasError: true };\r\n }\r\n\r\n componentDidCatch(error: Error, errorInfo: ErrorInfo) {\r\n console.log(error, errorInfo);\r\n this.logError(error, errorInfo);\r\n }\r\n\r\n render() {\r\n if (this.state.hasError)\r\n return ;\r\n\r\n return this.props.children;\r\n }\r\n}","import {\r\n loadCldr,\r\n L10n,\r\n setCulture,\r\n setCurrencyCode,\r\n} from \"@syncfusion/ej2-base\";\r\n\r\nexport const i18n = () => {\r\n loadCldr(\r\n require(\"cldr-data/supplemental/numberingSystems.json\"),\r\n require(\"cldr-data/main/it/ca-gregorian.json\"),\r\n require(\"cldr-data/main/it/numbers.json\"),\r\n require(\"cldr-data/main/it/currencies.json\"),\r\n require(\"cldr-data/main/it/timeZoneNames.json\")\r\n );\r\n L10n.load(fixTranslations());\r\n setCulture(\"it\");\r\n setCurrencyCode(\"EUR\");\r\n};\r\n\r\nconst fixTranslations = (): Object => {\r\n const json = require(\"@syncfusion/ej2-locale/src/it.json\");\r\n json.it.pivotview.close = \"Chiudi\";\r\n json.it.pivotfieldlist.close = \"Chiudi\";\r\n // json.it.DocumentEditor.Close = \"Chiudi\";\r\n json.it.schedule.close = \"Chiudi\";\r\n json.it.spreadsheet.Close = \"Chiudi\";\r\n json.it.spreadsheet.Blanks = \"(Vuoto)\";\r\n json.it.documenteditor.Close = \"Chiudi\";\r\n json.it.kanban.close = \"Chiudi\";\r\n json.it.tab.closeButtonTitle = \"Chiudi\";\r\n json.it.grid.EmptyRecord = \"Nessun elemento trovato\";\r\n json.it.grid.GroupDropArea =\r\n \"Trascina qui un'intestazione di colonna per raggruppare per questa colonna\";\r\n json.it.grid.UnGroup = \"Clicca qui per rimuovere questo raggruppamento\";\r\n json.it.grid.FilterbarTitle = '\"Barra filtri';\r\n json.it.grid.Edit = \"Modifica\";\r\n json.it.grid.Update = \"Modifica\";\r\n json.it.grid.Wordexport = \"Esportazione Word\";\r\n json.it.grid.Search = \"Cerca\";\r\n json.it.grid.Columnchooser = \"Colonne\";\r\n json.it.grid.Item = \"elemento\";\r\n json.it.grid.Items = \"elementi\";\r\n json.it.grid.EditOperationAlert =\r\n \"Nessun elemento selezionato per modificare.\";\r\n json.it.grid.DeleteOperationAlert =\r\n \"Nessun elemento selezionato per eliminare.\";\r\n json.it.grid.OKButton = \"Ok\";\r\n json.it.grid.AddFormTitle = \"Aggiungi nuovo elemento\";\r\n json.it.grid.BatchSaveConfirm = \"Sei sicuro di voler salvare le modifiche?\";\r\n json.it.grid.ConfirmDelete = \"Sei sicuro di voler eliminare l'elemento?\";\r\n json.it.grid.SearchColumns = \"Colonne di ricerca\";\r\n json.it.grid.FilterButton = \"Filtra\";\r\n json.it.grid.Blanks = \"(Vuoto)\";\r\n json.it.grid.ClearButton = \"Cancella\";\r\n json.it.grid.Contains = \"Contiene\";\r\n json.it.grid.Copy = \"Copia\";\r\n json.it.grid.Ungroup = \"Espandi per questa colonna\";\r\n json.it.grid.EditRecord = \"Modifica elemento\";\r\n json.it.grid.DeleteRecord = \"Elimina elemento\";\r\n json.it.grid.FilterFalse = \"Falso\";\r\n json.it.grid.ClearFilter = \"Cancella filtri\";\r\n json.it.grid.DateTimeFilter = \"Filtri data e ora\";\r\n json.it.grid.MatchCase = \"distinguere maiuscolo/minuscolo\";\r\n json.it.grid.SortAtoZ = \"Ordina da A a Z\";\r\n json.it.grid.SortZtoA = \"Ordina da Z a A\";\r\n json.it.grid.SortByOldest = \"Ordina per più vecchio\";\r\n json.it.grid.SortByNewest = \"Ordina per più nuovo\";\r\n json.it.grid.SortSmallestToLargest = \"Ordina da piccolo a grande\";\r\n json.it.grid.SortLargestToSmallest = \"Ordina da grande a piccolo\";\r\n json.it.pager.pagerDropDown = \"elementi per pagina\";\r\n json.it.pager.pagerAllDropDown = \"elementi\";\r\n json.it.pager.totalItemInfo = \"({0} elemento)\";\r\n json.it.pager.totalItemsInfo = \"({0} elementi)\";\r\n json.it.dialog.close = \"Chiudi\";\r\n json.it.uploader.Browse = \"Scegli un file...\";\r\n json.it.uploader.Clear = \"Vuota\";\r\n json.it.uploader.dropFilesHint = \"oppure trascina il file qui\";\r\n json.it.uploader.uploadSuccessMessage = \"Il file è stato caricato con successo\";\r\n return json;\r\n};\r\n","import { Navigate, Outlet, useLocation } from \"react-router-dom\";\r\n\r\nexport const PrivateRoute = () => {\r\n let location = useLocation();\r\n\r\n if (!localStorage.getItem(\"user\"))\r\n return ;\r\n\r\n return <>{};\r\n};\r\n","import axios from \"axios\";\r\n\r\nconst getSetting = async (number: number): Promise => {\r\n return axios\r\n .get(`settings/value/${number}`)\r\n .then((response): string => {\r\n return (response.data as any)[\"Value\"] as string;\r\n })\r\n .catch((): string => \"\");\r\n};\r\n\r\nexport const getSettingAsString = async (number: number): Promise => {\r\n return await getSetting(number);\r\n}\r\n\r\nexport const getSettingAsNumber = async (number: number, defaultValue?: number): Promise => {\r\n const result = Number(await getSetting(number));\r\n return result ? result : (defaultValue ?? 0);\r\n}\r\n\r\nexport const getSettingAsBoolean = async (number: number, defaultValue?: boolean): Promise => {\r\n const result = await getSetting(number);\r\n return (result === \"1\" || result === \"true\" || result === \"True\" || result === \"TRUE\") ? true\r\n : (result === \"0\" || result === \"false\" || result === \"False\" || result === \"FALSE\") ? false\r\n : (defaultValue ?? false);\r\n}","export const isEMail = (input: string | undefined) => {\r\n if (!input)\r\n return false;\r\n\r\n var regex = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return input.match(regex);\r\n};","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: any;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n status: number;\n location: string;\n revalidate: boolean;\n reloadDocument?: boolean;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: any;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on `
    `,\n * useSubmit(), ``, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n// ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n// Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\n/**\n * Route loader function signature\n */\nexport type LoaderFunction = {\n (args: LoaderFunctionArgs):\n | Promise\n | DataFunctionValue;\n} & { hydrate?: boolean };\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (args: ActionFunctionArgs):\n | Promise\n | DataFunctionValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n actionResult?: any;\n defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction;\n action?: ActionFunction;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\nexport type PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if you could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: number[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n let decoded = decodePath(pathname);\n matches = matchRouteBranch(branches[i], decoded);\n }\n\n return matches;\n}\n\nexport interface UIMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: Data;\n handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UIMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle,\n };\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, compiledParams] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = compiledParams.reduce>(\n (memo, { paramName, isOptional }, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\ntype CompiledPathParam = { paramName: string; isOptional?: boolean };\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, CompiledPathParam[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let params: CompiledPathParam[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(\n /\\/:([\\w-]+)(\\?)?/g,\n (_: string, paramName: string, isOptional) => {\n params.push({ paramName, isOptional: isOptional != null });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n }\n );\n\n if (path.endsWith(\"*\")) {\n params.push({ paramName: \"*\" });\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, params];\n}\n\nfunction decodePath(value: string) {\n try {\n return value\n .split(\"/\")\n .map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\"))\n .join(\"/\");\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nexport function getResolveToMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[], v7_relativeSplatPath: boolean) {\n let pathMatches = getPathContributingMatches(matches);\n\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) =>\n idx === matches.length - 1 ? match.pathname : match.pathnameBase\n );\n }\n\n return pathMatches.map((match) => match.pathnameBase);\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\nexport type ErrorResponse = {\n status: number;\n statusText: string;\n data: any;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nexport class ErrorResponseImpl implements ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n private error?: Error;\n private internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n ActionFunction,\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n AgnosticRouteObject,\n DataResult,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n ImmutableRouteKey,\n LoaderFunction,\n MapRoutePropertiesFunction,\n MutationFormMethod,\n RedirectResult,\n RouteData,\n RouteManifest,\n ShouldRevalidateFunctionArgs,\n Submission,\n SuccessResult,\n UIMatch,\n V7_FormMethod,\n V7_MutationFormMethod,\n} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n getResolveToMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the future config for the router\n */\n get future(): FutureConfig;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the window associated with the router\n */\n get window(): RouterInit[\"window\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_fetcherPersist: boolean;\n v7_normalizeFormMethod: boolean;\n v7_partialHydration: boolean;\n v7_prependBasename: boolean;\n v7_relativeSplatPath: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: { requestContext?: unknown }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: { routeId?: string; requestContext?: unknown }\n ): Promise;\n}\n\ntype ViewTransitionOpts = {\n currentLocation: Location;\n nextLocation: Location;\n};\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (\n state: RouterState,\n opts: {\n deletedFetchers: string[];\n unstable_viewTransitionOpts?: ViewTransitionOpts;\n unstable_flushSync: boolean;\n }\n ): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n unstable_viewTransition?: boolean;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Error thrown from the current action, keyed by the route containing the\n * error boundary to render the error. To be committed to the state after\n * loaders have completed\n */\n pendingActionError?: RouteData;\n /**\n * Data returned from the current action, keyed by the route owning the action.\n * To be committed to the state after loaders have completed\n */\n pendingActionData?: RouteData;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\n/**\n * Wrapper object to allow us to throw any response out from callLoaderOrAction\n * for queryRouter while preserving whether or not it was thrown or returned\n * from the loader/action\n */\ninterface QueryRouteResponse {\n type: ResultType.data | ResultType.error;\n response: Response;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n let initialized: boolean;\n let hasLazyRoutes = initialMatches.some((m) => m.route.lazy);\n let hasLoaders = initialMatches.some((m) => m.route.loader);\n if (hasLazyRoutes) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!hasLoaders) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n let isRouteInitialized = (m: AgnosticDataRouteMatch) => {\n // No loader, nothing to initialize\n if (!m.route.loader) return true;\n // Explicitly opting-in to running on hydration\n if (m.route.loader.hydrate === true) return false;\n // Otherwise, initialized if hydrated with data or an error\n return (\n (loaderData && loaderData[m.route.id] !== undefined) ||\n (errors && errors[m.route.id] !== undefined)\n );\n };\n\n // If errors exist, don't consider routes below the boundary\n if (errors) {\n let idx = initialMatches.findIndex(\n (m) => errors![m.route.id] !== undefined\n );\n initialized = initialMatches.slice(0, idx + 1).every(isRouteInitialized);\n } else {\n initialized = initialMatches.every(isRouteInitialized);\n }\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions: Map> = new Map<\n string,\n Set\n >();\n\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener: (() => void) | null = null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: string[] = [];\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () =>\n persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () =>\n routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location, {\n initialHydration: true,\n });\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(\n newState: Partial,\n opts: {\n flushSync?: boolean;\n viewTransitionOpts?: ViewTransitionOpts;\n } = {}\n ): void {\n state = {\n ...state,\n ...newState,\n };\n\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers: string[] = [];\n let deletedFetchersKeys: string[] = [];\n\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach((subscriber) =>\n subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n unstable_viewTransitionOpts: opts.viewTransitionOpts,\n unstable_flushSync: opts.flushSync === true,\n })\n );\n\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach((key) => state.fetchers.delete(key));\n deletedFetchersKeys.forEach((key) => deleteFetcher(key));\n }\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>,\n { flushSync }: { flushSync?: boolean } = {}\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n let viewTransitionOpts: ViewTransitionOpts | undefined;\n\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === HistoryAction.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location,\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n }\n\n updateState(\n {\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n },\n {\n viewTransitionOpts,\n flushSync: flushSync === true,\n }\n );\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n future.v7_relativeSplatPath,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.unstable_viewTransition,\n flushSync,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n initialHydration?: boolean;\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n enableViewTransition?: boolean;\n flushSync?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(\n location,\n {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n },\n { flushSync }\n );\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches }, { flushSync });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionData: RouteData | undefined;\n let pendingError: RouteData | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingError = {\n [findNearestBoundary(matches).route.id]: opts.pendingError,\n };\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionOutput = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n { replace: opts.replace, flushSync }\n );\n\n if (actionOutput.shortCircuited) {\n return;\n }\n\n pendingActionData = actionOutput.pendingActionData;\n pendingError = actionOutput.pendingActionError;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n\n // Create a GET request for the loaders\n request = new Request(request.url, { signal: request.signal });\n }\n\n // Call loaders\n let { shortCircuited, loaderData, errors } = await handleLoaders(\n request,\n location,\n matches,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n opts && opts.initialHydration === true,\n flushSync,\n pendingActionData,\n pendingError\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n opts: { replace?: boolean; flushSync?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation }, { flushSync: opts.flushSync === true });\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n replace =\n result.location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(state, result, { submission, replace });\n return { shortCircuited: true };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n // Send back an empty object we can use to clear out any prior actionData\n pendingActionData: {},\n pendingActionError: { [boundaryMatch.route.id]: result.error },\n };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n return {\n pendingActionData: { [actionMatch.route.id]: result.data },\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n initialHydration?: boolean,\n flushSync?: boolean,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n future.v7_partialHydration && initialHydration === true,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionData,\n pendingError\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(\n location,\n {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingError || null,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n },\n { flushSync }\n );\n return { shortCircuited: true };\n }\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since it's not a \"navigation\"\n if (\n !isUninterruptedRevalidation &&\n (!future.v7_partialHydration || !initialHydration)\n ) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n let actionData = pendingActionData || state.actionData;\n updateState(\n {\n navigation: loadingNavigation,\n ...(actionData\n ? Object.keys(actionData).length === 0\n ? { actionData: null }\n : { actionData }\n : {}),\n ...(revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n },\n {\n flushSync,\n }\n );\n }\n\n revalidatingFetchers.forEach((rf) => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(state, redirect.result, { replace });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingError,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n // During partial hydration, preserve SSR errors for routes that don't re-run\n if (future.v7_partialHydration && initialHydration && state.errors) {\n Object.entries(state.errors)\n .filter(([id]) => !matchesToLoad.some((m) => m.route.id === id))\n .forEach(([routeId, error]) => {\n errors = Object.assign(errors || {}, { [routeId]: error });\n });\n }\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n future.v7_relativeSplatPath,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath }),\n { flushSync }\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(\n key,\n routeId,\n path,\n match,\n matches,\n flushSync,\n submission\n );\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(\n key,\n routeId,\n path,\n match,\n matches,\n flushSync,\n submission\n );\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n flushSync: boolean,\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync,\n });\n\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResult = await callLoaderOrAction(\n \"action\",\n fetchRequest,\n match,\n requestMatches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n );\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(state, actionResult, {\n fetcherSubmission: submission,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n false,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n { [match.route.id]: actionResult.data },\n undefined // No need to send through errors since we short circuit above\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(state, redirect.result);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n fetchers: new Map(state.fetchers),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n flushSync: boolean,\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(\n key,\n getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n ),\n { flushSync }\n );\n\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let result: DataResult = await callLoaderOrAction(\n \"loader\",\n fetchRequest,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n );\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(state, result);\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n state: RouterState,\n redirect: RedirectResult,\n {\n submission,\n fetcherSubmission,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n replace?: boolean;\n } = {}\n ) {\n if (redirect.revalidate) {\n isRevalidationRequired = true;\n }\n\n let redirectLocation = createLocation(state.location, redirect.location, {\n _isRedirect: true,\n });\n invariant(\n redirectLocation,\n \"Expected a location on the redirect navigation\"\n );\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.reloadDocument) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(redirect.location)) {\n const url = init.history.createURL(redirect.location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(redirect.location);\n } else {\n routerWindow.location.assign(redirect.location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true ? HistoryAction.Replace : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType } = state.navigation;\n if (\n !submission &&\n !fetcherSubmission &&\n formMethod &&\n formAction &&\n formEncType\n ) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (\n redirectPreserveMethodStatusCodes.has(redirect.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: redirect.location,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n // Call all navigation loaders and revalidating fetcher loaders in parallel,\n // then slice off the results into separate arrays so we can handle them\n // accordingly\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n )\n ),\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match && f.controller) {\n return callLoaderOrAction(\n \"loader\",\n createClientSideRequest(init.history, f.path, f.controller.signal),\n f.match,\n f.matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n );\n } else {\n let error: ErrorResult = {\n type: ResultType.error,\n error: getInternalRouterError(404, { pathname: f.path }),\n };\n return error;\n }\n }),\n ]);\n let loaderResults = results.slice(0, matchesToLoad.length);\n let fetcherResults = results.slice(matchesToLoad.length);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n loaderResults.map(() => request.signal),\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n fetchersToLoad.map((f) => (f.controller ? f.controller.signal : null)),\n true\n ),\n ]);\n\n return { results, loaderResults, fetcherResults };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n\n function updateFetcherState(\n key: string,\n fetcher: Fetcher,\n opts: { flushSync?: boolean } = {}\n ) {\n state.fetchers.set(key, fetcher);\n updateState(\n { fetchers: new Map(state.fetchers) },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function setFetcherError(\n key: string,\n routeId: string,\n error: any,\n opts: { flushSync?: boolean } = {}\n ) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState(\n {\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function getFetcher(key: string): Fetcher {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n state.fetchers.delete(key);\n }\n\n function deleteFetcherAndUpdateState(key: string): void {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface StaticHandlerFutureConfig {\n v7_relativeSplatPath: boolean;\n v7_throwAbortReason: boolean;\n}\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future: StaticHandlerFutureConfig = {\n v7_relativeSplatPath: false,\n v7_throwAbortReason: false,\n ...(opts ? opts.future : null),\n };\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n */\n async function query(\n request: Request,\n { requestContext }: { requestContext?: unknown } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(request, location, matches, requestContext);\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n }: { requestContext?: unknown; routeId?: string } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n match\n );\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction, we throw\n // it to bail out and then return or throw here based on whether the user\n // returned or threw\n if (isQueryRouteResponse(e)) {\n if (e.type === ResultType.error) {\n throw e.response;\n }\n return e.response;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath,\n { isStaticRequest: true, isRouteRequest, requestContext }\n );\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.status,\n headers: {\n Location: result.location,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(\n request,\n matches,\n requestContext,\n undefined,\n {\n [boundaryMatch.route.id]: result.error,\n }\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n let context = await loadRouteData(loaderRequest, matches, requestContext);\n\n return {\n ...context,\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch,\n pendingActionError?: RouteData\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(pendingActionError || {})[0]\n );\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors: pendingActionError || null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath,\n { isStaticRequest: true, isRouteRequest, requestContext }\n )\n ),\n ]);\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionError,\n activeDeferreds\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction throwStaticHandlerAbortedError(\n request: Request,\n isRouteRequest: boolean,\n future: StaticHandlerFutureConfig\n) {\n if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n throw request.signal.reason;\n }\n\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted: ${request.method} ${request.url}`);\n}\n\nfunction isSubmissionNavigation(\n opts: BaseNavigateOrFetchOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n v7_relativeSplatPath: boolean,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getResolveToMatches(contextualMatches, v7_relativeSplatPath),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Add an ?index param for matched index routes if we don't already have one\n if (\n (to == null || to === \"\" || to === \".\") &&\n activeRouteMatch &&\n activeRouteMatch.route.index &&\n !hasNakedIndexQuery(path.search)\n ) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: BaseNavigateOrFetchOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponseImpl;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId?: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isInitialLoad: boolean,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\n deletedFetchers: Set,\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingError\n ? Object.values(pendingError)[0]\n : pendingActionData\n ? Object.values(pendingActionData)[0]\n : undefined;\n\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingError ? Object.keys(pendingError)[0] : undefined;\n let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let { route } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n\n if (route.loader == null) {\n return false;\n }\n\n if (isInitialLoad) {\n if (route.loader.hydrate) {\n return true;\n }\n return (\n state.loaderData[route.id] === undefined &&\n // Don't re-run if the loader ran and threw an error\n (!state.errors || state.errors[route.id] === undefined)\n );\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n defaultShouldRevalidate:\n // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n // Clicked the same link, resubmitted a GET form\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial load (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (\n isInitialLoad ||\n !matches.some((m) => m.route.id === f.routeId) ||\n deletedFetchers.has(key)\n ) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.includes(key)) {\n // Always revalidate if the fetcher was cancelled\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n defaultShouldRevalidate: isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: ShouldRevalidateFunctionArgs\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n basename: string,\n v7_relativeSplatPath: boolean,\n opts: {\n isStaticRequest?: boolean;\n isRouteRequest?: boolean;\n requestContext?: unknown;\n } = {}\n): Promise {\n let resultType;\n let result;\n let onReject: (() => void) | undefined;\n\n let runHandler = (handler: ActionFunction | LoaderFunction) => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n return Promise.race([\n handler({\n request,\n params: match.params,\n context: opts.requestContext,\n }),\n abortPromise,\n ]);\n };\n\n try {\n let handler = match.route[type];\n\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let values = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadLazyRouteModule(match.route, mapRouteProperties, manifest),\n ]);\n if (handlerError) {\n throw handlerError;\n }\n result = values[0];\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n\n handler = match.route[type];\n if (handler) {\n // Handler still run even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, data: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n resultType = ResultType.error;\n result = e;\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n if (isResponse(result)) {\n let status = result.status;\n\n // Process redirects\n if (redirectStatusCodes.has(status)) {\n let location = result.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n // Support relative routing in internal redirects\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n location = normalizeTo(\n new URL(request.url),\n matches.slice(0, matches.indexOf(match) + 1),\n basename,\n true,\n location,\n v7_relativeSplatPath\n );\n } else if (!opts.isStaticRequest) {\n // Strip off the protocol+origin for same-origin + same-basename absolute\n // redirects. If this is a static request, we can let it go back to the\n // browser as-is\n let currentUrl = new URL(request.url);\n let url = location.startsWith(\"//\")\n ? new URL(currentUrl.protocol + location)\n : new URL(location);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n location = url.pathname + url.search + url.hash;\n }\n }\n\n // Don't process redirects in the router during static requests requests.\n // Instead, throw the Response and let the server handle it with an HTTP\n // redirect. We also update the Location header in place in this flow so\n // basename and relative routing is taken into account\n if (opts.isStaticRequest) {\n result.headers.set(\"Location\", location);\n throw result;\n }\n\n return {\n type: ResultType.redirect,\n status,\n location,\n revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null,\n reloadDocument: result.headers.get(\"X-Remix-Reload-Document\") !== null,\n };\n }\n\n // For SSR single-route requests, we want to hand Responses back directly\n // without unwrapping. We do this with the QueryRouteResponse wrapper\n // interface so we can know whether it was returned or thrown\n if (opts.isRouteRequest) {\n let queryRouteResponse: QueryRouteResponse = {\n type:\n resultType === ResultType.error ? ResultType.error : ResultType.data,\n response: result,\n };\n throw queryRouteResponse;\n }\n\n let data: any;\n\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return { type: ResultType.error, error: e };\n }\n\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: new ErrorResponseImpl(status, result.statusText, data),\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (resultType === ResultType.error) {\n return { type: resultType, error: result };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n // Look upwards from the matched route for the closest ancestor\n // error boundary, defaulting to the root match\n let boundaryMatch = findNearestBoundary(matches, id);\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError) {\n error = Object.values(pendingError)[0];\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n // Prefer higher error values if lower errors bubble to the same boundary\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n } else {\n loaderData[id] = result.data;\n }\n\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError) {\n errors = pendingError;\n loaderData[Object.keys(pendingError)[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingError,\n activeDeferreds\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match, controller } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route =\n routes.length === 1\n ? routes[0]\n : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\";\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: DataResult[]\n): { result: RedirectResult; idx: number } | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return { result, idx: i };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isQueryRouteResponse(obj: any): obj is QueryRouteResponse {\n return (\n obj &&\n isResponse(obj.response) &&\n (obj.type === ResultType.data || obj.type === ResultType.error)\n );\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: (AgnosticDataRouteMatch | null)[],\n results: DataResult[],\n signals: (AbortSignal | null)[],\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(\n signal,\n \"Expected an AbortSignal for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n}\n\nfunction restoreAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(\n TRANSITIONS_STORAGE_KEY\n );\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\n\nfunction persistAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n if (transitions.size > 0) {\n let json: Record = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(\n TRANSITIONS_STORAGE_KEY,\n JSON.stringify(json)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save applied view transitions in sessionStorage (${error}).`\n );\n }\n }\n}\n\n//#endregion\n","var instances = 'ej2_instances';\nvar uid = 0;\nvar isBlazorPlatform = false;\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function disableBlazorMode() {\n isBlazorPlatform = false;\n}\n/**\n * Create Instance from constructor function with desired parameters.\n *\n * @param {Function} classFunction - Class function to which need to create instance\n * @param {any[]} params - Parameters need to passed while creating instance\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function createInstance(classFunction, params) {\n var arrayParam = params;\n arrayParam.unshift(undefined);\n return new (Function.prototype.bind.apply(classFunction, arrayParam));\n}\n/**\n * To run a callback function immediately after the browser has completed other operations.\n *\n * @param {Function} handler - callback function to be triggered.\n * @returns {Function} ?\n * @private\n */\nexport function setImmediate(handler) {\n var unbind;\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n intCrypto.getRandomValues(num);\n var secret = 'ej2' + combineArray(num);\n // eslint-disable-next-line\n var messageHandler = function (event) {\n if (event.source === window && typeof event.data === 'string' && event.data.length <= 32 && event.data === secret) {\n handler();\n unbind();\n }\n };\n window.addEventListener('message', messageHandler, false);\n window.postMessage(secret, '*');\n return unbind = function () {\n window.removeEventListener('message', messageHandler);\n handler = messageHandler = secret = undefined;\n };\n}\n/**\n * To get nameSpace value from the desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getValue(nameSpace, obj) {\n // eslint-disable-next-line\n var value = obj;\n var splits = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n for (var i = 0; i < splits.length && !isUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n }\n return value;\n}\n/**\n * To set value for the nameSpace in desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} value - Value that you need to set.\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function setValue(nameSpace, value, obj) {\n var keys = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n // eslint-disable-next-line\n var start = obj || {};\n // eslint-disable-next-line\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[parseInt(i.toString(), 10)];\n if (i + 1 === length) {\n fromObj[\"\" + key] = value === undefined ? {} : value;\n }\n else if (isNullOrUndefined(fromObj[\"\" + key])) {\n fromObj[\"\" + key] = {};\n }\n fromObj = fromObj[\"\" + key];\n }\n return start;\n}\n/**\n * Delete an item from Object\n *\n * @param {any} obj - Object in which we need to delete an item.\n * @param {string} key - String value to the get the inner object\n * @returns {void} ?\n * @private\n */\n// eslint-disable-next-line\nexport function deleteObject(obj, key) {\n delete obj[\"\" + key];\n}\n/**\n *@private\n */\n// eslint-disable-next-line\nexport var containerObject = typeof window !== 'undefined' ? window : {};\n/**\n * Check weather the given argument is only object.\n *\n * @param {any} obj - Object which is need to check.\n * @returns {boolean} ?\n * @private\n */\n// eslint-disable-next-line\nexport function isObject(obj) {\n var objCon = {};\n return (!isNullOrUndefined(obj) && obj.constructor === objCon.constructor);\n}\n/**\n * To get enum value by giving the string.\n *\n * @param {any} enumObject - Enum object.\n * @param {string} enumValue - Enum value to be searched\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getEnumValue(enumObject, enumValue) {\n // eslint-disable-next-line\n return enumObject[enumValue];\n}\n/**\n * Merge the source object into destination object.\n *\n * @param {any} source - source object which is going to merge with destination object\n * @param {any} destination - object need to be merged\n * @returns {void} ?\n * @private\n */\nexport function merge(source, destination) {\n if (!isNullOrUndefined(destination)) {\n var temrObj = source;\n var tempProp = destination;\n var keys = Object.keys(destination);\n var deepmerge = 'deepMerge';\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!isNullOrUndefined(temrObj[\"\" + deepmerge]) && (temrObj[\"\" + deepmerge].indexOf(key) !== -1) &&\n (isObject(tempProp[\"\" + key]) || Array.isArray(tempProp[\"\" + key]))) {\n extend(temrObj[\"\" + key], temrObj[\"\" + key], tempProp[\"\" + key], true);\n }\n else {\n temrObj[\"\" + key] = tempProp[\"\" + key];\n }\n }\n }\n}\n/**\n * Extend the two object with newer one.\n *\n * @param {any} copied - Resultant object after merged\n * @param {Object} first - First object need to merge\n * @param {Object} second - Second object need to merge\n * @param {boolean} deep ?\n * @returns {Object} ?\n * @private\n */\nexport function extend(copied, first, second, deep) {\n var result = copied && typeof copied === 'object' ? copied : {};\n var length = arguments.length;\n if (deep) {\n length = length - 1;\n }\n var _loop_1 = function (i) {\n // eslint-disable-next-line\n if (!arguments_1[i]) {\n return \"continue\";\n }\n // eslint-disable-next-line\n var obj1 = arguments_1[i];\n Object.keys(obj1).forEach(function (key) {\n var src = result[\"\" + key];\n var copy = obj1[\"\" + key];\n var clone;\n var isArrayChanged = Array.isArray(copy) && Array.isArray(src) && (copy.length !== src.length);\n // eslint-disable-next-line\n var blazorEventExtend = isBlazor() ? (!(src instanceof Event) && !isArrayChanged) : true;\n if (deep && blazorEventExtend && (isObject(copy) || Array.isArray(copy))) {\n if (isObject(copy)) {\n clone = src ? src : {};\n // eslint-disable-next-line\n if (Array.isArray(clone) && clone.hasOwnProperty('isComplexArray')) {\n extend(clone, {}, copy, deep);\n }\n else {\n result[\"\" + key] = extend(clone, {}, copy, deep);\n }\n }\n else {\n /* istanbul ignore next */\n clone = isBlazor() ? src && Object.keys(copy).length : src ? src : [];\n // eslint-disable-next-line\n result[\"\" + key] = extend([], clone, copy, (clone && clone.length) || (copy && copy.length));\n }\n }\n else {\n result[\"\" + key] = copy;\n }\n });\n };\n var arguments_1 = arguments;\n for (var i = 1; i < length; i++) {\n _loop_1(i);\n }\n return result;\n}\n/**\n * To check whether the object is null or undefined.\n *\n * @param {Object} value - To check the object is null or undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isNullOrUndefined(value) {\n return value === undefined || value === null;\n}\n/**\n * To check whether the object is undefined.\n *\n * @param {Object} value - To check the object is undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isUndefined(value) {\n return ('undefined' === typeof value);\n}\n/**\n * To return the generated unique name\n *\n * @param {string} definedName - To concatenate the unique id to provided name\n * @returns {string} ?\n * @private\n */\nexport function getUniqueID(definedName) {\n return definedName + '_' + uid++;\n}\n/**\n * It limits the rate at which a function can fire. The function will fire only once every provided second instead of as quickly.\n *\n * @param {Function} eventFunction - Specifies the function to run when the event occurs\n * @param {number} delay - A number that specifies the milliseconds for function delay call option\n * @returns {Function} ?\n * @private\n */\nexport function debounce(eventFunction, delay) {\n // eslint-disable-next-line\n var out;\n return function () {\n var _this = this;\n // eslint-disable-next-line\n var args = arguments;\n var later = function () {\n out = null;\n return eventFunction.apply(_this, args);\n };\n clearTimeout(out);\n out = setTimeout(later, delay);\n };\n}\n/**\n * To convert the object to string for query url\n *\n * @param {Object} data ?\n * @returns {string} ?\n * @private\n */\n// eslint-disable-next-line\nexport function queryParams(data) {\n var array = [];\n var keys = Object.keys(data);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n array.push(encodeURIComponent(key) + '=' + encodeURIComponent('' + data[\"\" + key]));\n }\n return array.join('&');\n}\n/**\n * To check whether the given array contains object.\n *\n * @param {any} value - Specifies the T type array to be checked.\n * @returns {boolean} ?\n * @private\n */\nexport function isObjectArray(value) {\n var parser = Object.prototype.toString;\n if (parser.call(value) === '[object Array]') {\n if (parser.call(value[0]) === '[object Object]') {\n return true;\n }\n }\n return false;\n}\n/**\n * To check whether the child element is descendant to parent element or parent and child are same element.\n *\n * @param {Element} child - Specifies the child element to compare with parent.\n * @param {Element} parent - Specifies the parent element.\n * @returns {boolean} ?\n * @private\n */\nexport function compareElementParent(child, parent) {\n var node = child;\n if (node === parent) {\n return true;\n }\n else if (node === document || !node) {\n return false;\n }\n else {\n return compareElementParent(node.parentNode, parent);\n }\n}\n/**\n * To throw custom error message.\n *\n * @param {string} message - Specifies the error message to be thrown.\n * @returns {void} ?\n * @private\n */\nexport function throwError(message) {\n try {\n throw new Error(message);\n }\n catch (e) {\n // eslint-disable-next-line\n throw e.message + '\\n' + e.stack;\n }\n}\n/**\n * This function is used to print given element\n *\n * @param {Element} element - Specifies the print content element.\n * @param {Window} printWindow - Specifies the print window.\n * @returns {Window} ?\n * @private\n */\nexport function print(element, printWindow) {\n var div = document.createElement('div');\n var links = [].slice.call(document.getElementsByTagName('head')[0].querySelectorAll('base, link, style'));\n var blinks = [].slice.call(document.getElementsByTagName('body')[0].querySelectorAll('link, style'));\n if (blinks.length) {\n for (var l = 0, len = blinks.length; l < len; l++) {\n links.push(blinks[parseInt(l.toString(), 10)]);\n }\n }\n var reference = '';\n if (isNullOrUndefined(printWindow)) {\n printWindow = window.open('', 'print', 'height=452,width=1024,tabbar=no');\n }\n div.appendChild(element.cloneNode(true));\n for (var i = 0, len = links.length; i < len; i++) {\n reference += links[parseInt(i.toString(), 10)].outerHTML;\n }\n printWindow.document.write(' ' + reference + '' + div.innerHTML +\n '' + '');\n printWindow.document.close();\n printWindow.focus();\n // eslint-disable-next-line\n var interval = setInterval(function () {\n if (printWindow.ready) {\n printWindow.print();\n printWindow.close();\n clearInterval(interval);\n }\n }, 500);\n return printWindow;\n}\n/**\n * Function to normalize the units applied to the element.\n *\n * @param {number|string} value ?\n * @returns {string} result\n * @private\n */\nexport function formatUnit(value) {\n var result = value + '';\n if (result.match(/auto|cm|mm|in|px|pt|pc|%|em|ex|ch|rem|vw|vh|vmin|vmax/)) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {boolean} result\n * @private\n */\nexport function isBlazor() {\n return isBlazorPlatform;\n}\n/**\n * Function to convert xPath to DOM element in blazor platform\n *\n * @returns {HTMLElement} result\n * @param {HTMLElement | object} element ?\n * @private\n */\nexport function getElement(element) {\n var xPath = 'xPath';\n if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[\"\" + xPath])) {\n return document.evaluate(element[\"\" + xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n return element;\n}\n/**\n * Function to fetch the Instances of a HTML element for the given component.\n *\n * @param {string | HTMLElement} element ?\n * @param {any} component ?\n * @returns {Object} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getInstance(element, component) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n for (var _i = 0, _a = elem[\"\" + instances]; _i < _a.length; _i++) {\n var inst = _a[_i];\n if (inst instanceof component) {\n return inst;\n }\n }\n }\n return null;\n}\n/**\n * Function to add instances for the given element.\n *\n * @param {string | HTMLElement} element ?\n * @param {Object} instance ?\n * @returns {void} ?\n * @private\n */\nexport function addInstance(element, instance) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n elem[\"\" + instances].push(instance);\n }\n else {\n elem[\"\" + instances] = [instance];\n }\n}\n/**\n * Function to generate the unique id.\n *\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function uniqueID() {\n if ((typeof window) === 'undefined') {\n return;\n }\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\n/**\n *\n * @param {Int16Array} num ?\n * @returns {string} ?\n */\nfunction combineArray(num) {\n var ret = '';\n for (var i = 0; i < 5; i++) {\n ret += (i ? ',' : '') + num[parseInt(i.toString(), 10)];\n }\n return ret;\n}\n","/**\n * Parser\n */\nvar defaultNumberingSystem = {\n 'latn': {\n '_digits': '0123456789',\n '_type': 'numeric'\n }\n};\nimport { isUndefined, getValue, isBlazor } from '../util';\nvar defaultNumberSymbols = {\n 'decimal': '.',\n 'group': ',',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'exponential': 'E'\n};\nvar latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n/**\n * Interface for parser base\n *\n * @private\n */\nvar ParserBase = /** @class */ (function () {\n function ParserBase() {\n }\n /**\n * Returns the cldr object for the culture specifies\n *\n * @param {Object} obj - Specifies the object from which culture object to be acquired.\n * @param {string} cName - Specifies the culture name.\n * @returns {Object} ?\n */\n ParserBase.getMainObject = function (obj, cName) {\n var value = isBlazor() ? cName : 'main.' + cName;\n return getValue(value, obj);\n };\n /**\n * Returns the numbering system object from given cldr data.\n *\n * @param {Object} obj - Specifies the object from which number system is acquired.\n * @returns {Object} ?\n */\n ParserBase.getNumberingSystem = function (obj) {\n return getValue('supplemental.numberingSystems', obj) || this.numberingSystems;\n };\n /**\n * Returns the reverse of given object keys or keys specified.\n *\n * @param {Object} prop - Specifies the object to be reversed.\n * @param {number[]} keys - Optional parameter specifies the custom keyList for reversal.\n * @returns {Object} ?\n */\n ParserBase.reverseObject = function (prop, keys) {\n var propKeys = keys || Object.keys(prop);\n var res = {};\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var key = propKeys_1[_i];\n // eslint-disable-next-line\n if (!res.hasOwnProperty(prop[key])) {\n // eslint-disable-next-line\n res[prop[key]] = key;\n }\n }\n return res;\n };\n /**\n * Returns the symbol regex by skipping the escape sequence.\n *\n * @param {string[]} props - Specifies the array values to be skipped.\n * @returns {RegExp} ?\n */\n ParserBase.getSymbolRegex = function (props) {\n var regexStr = props.map(function (str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n }).join('|');\n var regExp = RegExp;\n return new regExp(regexStr, 'g');\n };\n /**\n *\n * @param {Object} prop ?\n * @returns {Object} ?\n */\n ParserBase.getSymbolMatch = function (prop) {\n var matchKeys = Object.keys(defaultNumberSymbols);\n var ret = {};\n for (var _i = 0, matchKeys_1 = matchKeys; _i < matchKeys_1.length; _i++) {\n var key = matchKeys_1[_i];\n // eslint-disable-next-line\n ret[prop[key]] = defaultNumberSymbols[key];\n }\n return ret;\n };\n /**\n * Returns regex string for provided value\n *\n * @param {string} val ?\n * @returns {string} ?\n */\n ParserBase.constructRegex = function (val) {\n var len = val.length;\n var ret = '';\n for (var i = 0; i < len; i++) {\n if (i !== len - 1) {\n ret += val[parseInt(i.toString(), 10)] + '|';\n }\n else {\n ret += val[parseInt(i.toString(), 10)];\n }\n }\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {string} value - Specifies the values to be replaced.\n * @param {RegExp} regex - Specifies the regex to search.\n * @param {Object} obj - Specifies the object matcher to be replace value parts.\n * @returns {string} ?\n */\n ParserBase.convertValueParts = function (value, regex, obj) {\n return value.replace(regex, function (str) {\n // eslint-disable-next-line\n return obj[str];\n });\n };\n /**\n * Returns default numbering system object for formatting from cldr data\n *\n * @param {Object} obj ?\n * @returns {NumericObject} ?\n */\n ParserBase.getDefaultNumberingSystem = function (obj) {\n var ret = {};\n ret.obj = getValue('numbers', obj);\n ret.nSystem = getValue('defaultNumberingSystem', ret.obj);\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} needSymbols ?\n * @param {boolean} blazorMode ?\n * @returns {Object} ?\n */\n ParserBase.getCurrentNumericOptions = function (curObj, numberSystem, needSymbols, blazorMode) {\n var ret = {};\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem) || blazorMode) {\n var digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n ret.numericPair = this.reverseObject(digits, latnNumberSystem);\n var regExp = RegExp;\n ret.numberParseRegex = new regExp(this.constructRegex(digits), 'g');\n ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']';\n if (needSymbols) {\n ret.numericRegex = digits[0] + '-' + digits[9];\n ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem);\n ret.numberSystem = cur.nSystem;\n }\n }\n }\n return ret;\n };\n /**\n * Returns number mapper object for the provided cldr data\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} isNumber ?\n * @returns {NumberMapper} ?\n */\n // eslint-disable-next-line\n ParserBase.getNumberMapper = function (curObj, numberSystem, isNumber) {\n var ret = { mapper: {} };\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem)) {\n ret.numberSystem = cur.nSystem;\n ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols);\n var digits = getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n for (var _i = 0, latnNumberSystem_1 = latnNumberSystem; _i < latnNumberSystem_1.length; _i++) {\n var i = latnNumberSystem_1[_i];\n // eslint-disable-next-line\n ret.mapper[i] = digits[i];\n }\n }\n }\n return ret;\n };\n ParserBase.nPair = 'numericPair';\n ParserBase.nRegex = 'numericRegex';\n ParserBase.numberingSystems = defaultNumberingSystem;\n return ParserBase;\n}());\nexport { ParserBase };\n/**\n * @private\n */\nvar blazorCurrencyData = {\n 'DJF': 'Fdj',\n 'ERN': 'Nfk',\n 'ETB': 'Br',\n 'NAD': '$',\n 'ZAR': 'R',\n 'XAF': 'FCFA',\n 'GHS': 'GH₵',\n 'XDR': 'XDR',\n 'AED': 'د.إ.',\n 'BHD': 'د.ب.',\n 'DZD': 'د.ج.',\n 'EGP': 'ج.م.',\n 'ILS': '₪',\n 'IQD': 'د.ع.',\n 'JOD': 'د.ا.',\n 'KMF': 'CF',\n 'KWD': 'د.ك.',\n 'LBP': 'ل.ل.',\n 'LYD': 'د.ل.',\n 'MAD': 'د.م.',\n 'MRU': 'أ.م.',\n 'OMR': 'ر.ع.',\n 'QAR': 'ر.ق.',\n 'SAR': 'ر.س.',\n 'SDG': 'ج.س.',\n 'SOS': 'S',\n 'SSP': '£',\n 'SYP': 'ل.س.',\n 'TND': 'د.ت.',\n 'YER': 'ر.ي.',\n 'CLP': '$',\n 'INR': '₹',\n 'TZS': 'TSh',\n 'EUR': '€',\n 'AZN': '₼',\n 'RUB': '₽',\n 'BYN': 'Br',\n 'ZMW': 'K',\n 'BGN': 'лв.',\n 'NGN': '₦',\n 'XOF': 'CFA',\n 'BDT': '৳',\n 'CNY': '¥',\n 'BAM': 'КМ',\n 'UGX': 'USh',\n 'USD': '$',\n 'CZK': 'Kč',\n 'GBP': '£',\n 'DKK': 'kr.',\n 'KES': 'Ksh',\n 'CHF': 'CHF',\n 'MVR': 'ރ.',\n 'BTN': 'Nu.',\n 'XCD': 'EC$',\n 'AUD': '$',\n 'BBD': '$',\n 'BIF': 'FBu',\n 'BMD': '$',\n 'BSD': '$',\n 'BWP': 'P',\n 'BZD': '$',\n 'CAD': '$',\n 'NZD': '$',\n 'FJD': '$',\n 'FKP': '£',\n 'GIP': '£',\n 'GMD': 'D',\n 'GYD': '$',\n 'HKD': '$',\n 'IDR': 'Rp',\n 'JMD': '$',\n 'KYD': '$',\n 'LRD': '$',\n 'MGA': 'Ar',\n 'MOP': 'MOP$',\n 'MUR': 'Rs',\n 'MWK': 'MK',\n 'MYR': 'RM',\n 'PGK': 'K',\n 'PHP': '₱',\n 'PKR': 'Rs',\n 'RWF': 'RF',\n 'SBD': '$',\n 'SCR': 'SR',\n 'SEK': 'kr',\n 'SGD': '$',\n 'SHP': '£',\n 'SLL': 'Le',\n 'ANG': 'NAf.',\n 'SZL': 'E',\n 'TOP': 'T$',\n 'TTD': '$',\n 'VUV': 'VT',\n 'WST': 'WS$',\n 'ARS': '$',\n 'BOB': 'Bs',\n 'BRL': 'R$',\n 'COP': '$',\n 'CRC': '₡',\n 'CUP': '$',\n 'DOP': '$',\n 'GTQ': 'Q',\n 'HNL': 'L',\n 'MXN': '$',\n 'NIO': 'C$',\n 'PAB': 'B/.',\n 'PEN': 'S/',\n 'PYG': '₲',\n 'UYU': '$',\n 'VES': 'Bs.S',\n 'IRR': 'ريال',\n 'GNF': 'FG',\n 'CDF': 'FC',\n 'HTG': 'G',\n 'XPF': 'FCFP',\n 'HRK': 'kn',\n 'HUF': 'Ft',\n 'AMD': '֏',\n 'ISK': 'kr',\n 'JPY': '¥',\n 'GEL': '₾',\n 'CVE': '​',\n 'KZT': '₸',\n 'KHR': '៛',\n 'KPW': '₩',\n 'KRW': '₩',\n 'KGS': 'сом',\n 'AOA': 'Kz',\n 'LAK': '₭',\n 'MZN': 'MTn',\n 'MKD': 'ден',\n 'MNT': '₮',\n 'BND': '$',\n 'MMK': 'K',\n 'NOK': 'kr',\n 'NPR': 'रु',\n 'AWG': 'Afl.',\n 'SRD': '$',\n 'PLN': 'zł',\n 'AFN': '؋',\n 'STN': 'Db',\n 'MDL': 'L',\n 'RON': 'lei',\n 'UAH': '₴',\n 'LKR': 'රු.',\n 'ALL': 'Lekë',\n 'RSD': 'дин.',\n 'TJS': 'смн',\n 'THB': '฿',\n 'TMT': 'm.',\n 'TRY': '₺',\n 'UZS': 'сўм',\n 'VND': '₫',\n 'TWD': 'NT$'\n};\n/**\n *\n * @param {string} currencyCode ?\n * @returns {string} ?\n */\nexport function getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}\n","/***\n * Hijri parser\n */\n// eslint-disable-next-line\nexport var HijriParser;\n(function (HijriParser) {\n var dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990,\n 29019, 29049, 29078, 29108, 29137, 29167, 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522,\n 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759, 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053,\n 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348, 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585,\n 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939, 30968, 30998, 31027, 31057, 31086, 31116,\n 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530, 31559, 31589, 31618, 31648,\n 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120, 32150, 32180,\n 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711,\n 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243,\n 33272, 33302, 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775,\n 33804, 33834, 33863, 33893, 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306,\n 34336, 34365, 34395, 34424, 34454, 34483, 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837,\n 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074, 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370,\n 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665, 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901,\n 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254, 36284, 36314, 36343, 36373, 36403, 36433,\n 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845, 36875, 36904, 36934, 36963,\n 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436, 37465, 37495,\n 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027,\n 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558,\n 38587, 38617, 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089,\n 39118, 39148, 39178, 39208, 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621,\n 39650, 39680, 39709, 39739, 39768, 39798, 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153,\n 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389, 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685,\n 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980, 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216,\n 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570, 41599, 41629, 41658, 41688, 41718, 41748,\n 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161, 42190, 42220, 42249, 42279,\n 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751, 42780, 42810,\n 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342,\n 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873,\n 43903, 43932, 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405,\n 44434, 44464, 44493, 44523, 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936,\n 44966, 44996, 45025, 45055, 45084, 45114, 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468,\n 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704, 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999,\n 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295, 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531,\n 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885, 46915, 46944, 46974, 47003, 47033, 47063,\n 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476, 47506, 47535, 47565, 47594,\n 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066, 48096, 48125,\n 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657,\n 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189,\n 49218, 49248, 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720,\n 49749, 49779, 49809, 49838, 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252,\n 50281, 50311, 50340, 50370, 50400, 50429, 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784,\n 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019, 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315,\n 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611, 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846,\n 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200, 52230, 52260, 52290, 52319, 52349, 52379,\n 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792, 52822, 52851, 52881, 52910,\n 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383, 53412, 53441,\n 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973,\n 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505,\n 54535, 54564, 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036,\n 55066, 55095, 55125, 55154, 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567,\n 55597, 55627, 55657, 55686, 55716, 55745, 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100,\n 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335, 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631,\n 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926, 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162,\n 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517, 57546, 57576, 57605, 57634, 57664, 57694,\n 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107, 58137, 58167, 58196, 58226,\n 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698, 58727, 58757,\n 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288,\n 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820,\n 59850, 59879, 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352,\n 60381, 60411, 60440, 60469, 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883,\n 60912, 60942, 60972, 61002, 61031, 61061, 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415,\n 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651, 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947,\n 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242, 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478,\n 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832, 62862, 62891, 62921, 62950, 62980, 63009,\n 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423, 63453, 63482, 63512, 63541,\n 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014, 64043, 64073,\n 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603,\n 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136,\n 65166, 65195, 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667,\n 65697, 65726, 65755, 65785, 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199,\n 66228, 66258, 66287, 66317, 66346, 66376, 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730,\n 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967, 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262,\n 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557, 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793,\n 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148, 68177, 68207, 68236, 68266, 68295, 68325,\n 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738, 68768, 68797, 68827, 68857,\n 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330, 69359, 69388,\n 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919,\n 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451,\n 70481, 70510, 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983,\n 71013, 71042, 71071, 71101, 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514,\n 71543, 71573, 71602, 71632, 71662, 71691, 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046,\n 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282, 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577,\n 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872, 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109,\n 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464, 73493, 73523, 73552, 73581, 73611, 73640,\n 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053, 74083, 74113, 74142, 74172,\n 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645, 74675, 74704,\n 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235,\n 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766,\n 75796, 75826, 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299,\n 76328, 76358, 76387, 76416, 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830,\n 76859, 76889, 76918, 76948, 76977, 77007, 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361,\n 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598, 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893,\n 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188, 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425,\n 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779, 78808, 78838, 78867, 78897, 78926, 78956,\n 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369, 79399, 79428, 79458, 79487,\n 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960, 79990\n ];\n /**\n *\n * @param {Date} gDate ?\n * @returns {Object} ?\n */\n function getHijriDate(gDate) {\n var day = gDate.getDate();\n var month = gDate.getMonth();\n var year = gDate.getFullYear();\n var tMonth = month + 1;\n var tYear = year;\n if (tMonth < 3) {\n tYear -= 1;\n tMonth += 12;\n }\n var yPrefix = Math.floor(tYear / 100.);\n var julilanOffset = yPrefix - Math.floor(yPrefix / 4.) - 2;\n var julianNumber = Math.floor(365.25 * (tYear + 4716)) + Math.floor(30.6001 * (tMonth + 1)) + day - julilanOffset - 1524;\n yPrefix = Math.floor((julianNumber - 1867216.25) / 36524.25);\n julilanOffset = yPrefix - Math.floor(yPrefix / 4.) + 1;\n var b = julianNumber + julilanOffset + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var tempMonth = Math.floor((b - d) / 30.6001);\n day = (b - d) - Math.floor(30.6001 * tempMonth);\n month = Math.floor((b - d) / 20.6001);\n if (month > 13) {\n c += 1;\n month -= 12;\n }\n month -= 1;\n year = c - 4716;\n var modifiedJulianDate = julianNumber - 2400000;\n // date calculation for year after 2077\n var iyear = 10631. / 30.;\n var z = julianNumber - 1948084;\n var cyc = Math.floor(z / 10631.);\n z = z - 10631 * cyc;\n var j = Math.floor((z - 0.1335) / iyear);\n var iy = 30 * cyc + j;\n z = z - Math.floor(j * iyear + 0.1335);\n var im = Math.floor((z + 28.5001) / 29.5);\n /* istanbul ignore next */\n if (im === 13) {\n im = 12;\n }\n var tempDay = z - Math.floor(29.5001 * im - 29);\n var i = 0;\n for (; i < dateCorrection.length; i++) {\n if (dateCorrection[parseInt(i.toString(), 10)] > modifiedJulianDate) {\n break;\n }\n }\n var iln = i + 16260;\n var ii = Math.floor((iln - 1) / 12);\n var hYear = ii + 1;\n var hmonth = iln - 12 * ii;\n var hDate = modifiedJulianDate - dateCorrection[i - 1] + 1;\n if ((hDate + '').length > 2) {\n hDate = tempDay;\n hmonth = im;\n hYear = iy;\n }\n return { year: hYear, month: hmonth, date: hDate };\n }\n HijriParser.getHijriDate = getHijriDate;\n /**\n *\n * @param {number} year ?\n * @param {number} month ?\n * @param {number} day ?\n * @returns {Date} ?\n */\n function toGregorian(year, month, day) {\n var iy = year;\n var im = month;\n var id = day;\n var ii = iy - 1;\n var iln = (ii * 12) + 1 + (im - 1);\n var i = iln - 16260;\n var mcjdn = id + dateCorrection[i - 1] - 1;\n var julianDate = mcjdn + 2400000;\n var z = Math.floor(julianDate + 0.5);\n var a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var gDay = b - d - Math.floor(e * 30.6001);\n var gMonth = e - (e > 13.5 ? 13 : 1);\n var gYear = c - (gMonth > 2.5 ? 4716 : 4715);\n /* istanbul ignore next */\n if (gYear <= 0) {\n gMonth--;\n } // No year zero\n return new Date(gYear + '/' + (gMonth) + '/' + gDay);\n }\n HijriParser.toGregorian = toGregorian;\n})(HijriParser || (HijriParser = {}));\n","import { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nimport { isUndefined, throwError, getValue, isBlazor } from '../util';\nimport { HijriParser } from '../hijri-parser';\nimport { isNullOrUndefined, extend } from '../util';\nvar abbreviateRegexGlobal = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|K|cccc|ccc|WW|W|G+|z+/gi;\nvar standalone = 'stand-alone';\nvar weekdayKey = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nexport var basicPatterns = ['short', 'medium', 'long', 'full'];\nvar timeSetter = {\n m: 'getMinutes',\n h: 'getHours',\n H: 'getHours',\n s: 'getSeconds',\n d: 'getDate',\n f: 'getMilliseconds'\n};\nexport var datePartMatcher = {\n 'M': 'month',\n 'd': 'day',\n 'E': 'weekday',\n 'c': 'weekday',\n 'y': 'year',\n 'm': 'minute',\n 'h': 'hour',\n 'H': 'hour',\n 's': 'second',\n 'L': 'month',\n 'a': 'designator',\n 'z': 'timeZone',\n 'Z': 'timeZone',\n 'G': 'era',\n 'f': 'milliseconds'\n};\nvar timeSeparator = 'timeSeparator';\n/* tslint:disable no-any */\n/**\n * Date Format is a framework provides support for date formatting.\n *\n * @private\n */\nvar DateFormat = /** @class */ (function () {\n function DateFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which date will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateFormat.dateFormat = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numObject = getValue('parserObject.numbers', dependable);\n var dateObject = dependable.dateObject;\n var formatOptions = { isIslamic: base.islamicRegex.test(option.calendar) };\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n formatOptions.dateSeperator = isBlazor() ? getValue('dateSeperator', dateObject) : base.getDateSeparator(dependable.dateObject);\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n if (isBlazor()) {\n resPattern = resPattern.replace(/tt/, 'a');\n }\n formatOptions.pattern = resPattern;\n formatOptions.numMapper = isBlazor() ?\n extend({}, numObject) : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n var patternMatch = resPattern.match(abbreviateRegexGlobal) || [];\n for (var _i = 0, patternMatch_1 = patternMatch; _i < patternMatch_1.length; _i++) {\n var str = patternMatch_1[_i];\n var len = str.length;\n var char = str[0];\n if (char === 'K') {\n char = 'h';\n }\n switch (char) {\n case 'E':\n case 'c':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.weekday = getValue('days.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.weekday = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.month = getValue('months.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.month = dependable.dateObject[base.month][standalone][base.monthIndex[len]];\n }\n break;\n case 'a':\n formatOptions.designator = isBlazor() ?\n getValue('dayPeriods', dateObject) : getValue('dayPeriods.format.wide', dateObject);\n break;\n case 'G':\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n formatOptions.era = isBlazor() ? getValue('eras', dateObject) : getValue('eras.' + eText, dependable.dateObject);\n break;\n case 'z':\n formatOptions.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n break;\n }\n }\n }\n return function (value) {\n if (isNaN(value.getDate())) {\n return null;\n }\n return _this.intDateFormatter(value, formatOptions);\n };\n };\n /**\n * Returns formatted date string based on options passed.\n *\n * @param {Date} value ?\n * @param {FormatOptions} options ?\n * @returns {string} ?\n */\n DateFormat.intDateFormatter = function (value, options) {\n var pattern = options.pattern;\n var ret = '';\n var matches = pattern.match(base.dateParseRegex);\n var dObject = this.getCurrentDateValue(value, options.isIslamic);\n for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) {\n var match = matches_1[_i];\n var length_1 = match.length;\n var char = match[0];\n if (char === 'K') {\n char = 'h';\n }\n var curval = void 0;\n var curvalstr = '';\n var isNumber = void 0;\n var processNumber = void 0;\n var curstr = '';\n switch (char) {\n case 'M':\n case 'L':\n curval = dObject.month;\n if (length_1 > 2) {\n // eslint-disable-next-line\n ret += options.month[curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n // eslint-disable-next-line\n ret += options.weekday[weekdayKey[value.getDay()]];\n break;\n case 'H':\n case 'h':\n case 'm':\n case 's':\n case 'd':\n case 'f':\n isNumber = true;\n if (char === 'd') {\n curval = dObject.date;\n }\n else if (char === 'f') {\n isNumber = false;\n processNumber = true;\n // eslint-disable-next-line\n curvalstr = value[timeSetter[char]]().toString();\n curvalstr = curvalstr.substring(0, length_1);\n var curlength = curvalstr.length;\n if (length_1 !== curlength) {\n if (length_1 > 3) {\n continue;\n }\n for (var i = 0; i < length_1 - curlength; i++) {\n curvalstr = '0' + curvalstr.toString();\n }\n }\n curstr += curvalstr;\n }\n else {\n // eslint-disable-next-line\n curval = value[timeSetter[char]]();\n }\n if (char === 'h') {\n curval = curval % 12 || 12;\n }\n break;\n case 'y':\n processNumber = true;\n curstr += dObject.year;\n if (length_1 === 2) {\n curstr = curstr.substr(curstr.length - 2);\n }\n break;\n case 'a':\n // eslint-disable-next-line\n var desig = value.getHours() < 12 ? 'am' : 'pm';\n // eslint-disable-next-line\n ret += options.designator[desig];\n break;\n case 'G':\n // eslint-disable-next-line\n var dec = value.getFullYear() < 0 ? 0 : 1;\n // eslint-disable-next-line\n var retu = options.era[dec];\n if (isNullOrUndefined(retu)) {\n // eslint-disable-next-line\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n case '\\'':\n ret += (match === '\\'\\'') ? '\\'' : match.replace(/'/g, '');\n break;\n case 'z':\n // eslint-disable-next-line\n var timezone = value.getTimezoneOffset();\n // eslint-disable-next-line\n var pattern_1 = (length_1 < 4) ? '+H;-H' : options.timeZone.hourFormat;\n pattern_1 = pattern_1.replace(/:/g, options.numMapper.timeSeparator);\n if (timezone === 0) {\n ret += options.timeZone.gmtZeroFormat;\n }\n else {\n processNumber = true;\n curstr = this.getTimeZoneValue(timezone, pattern_1);\n }\n curstr = options.timeZone.gmtFormat.replace(/\\{0\\}/, curstr);\n break;\n case ':':\n // eslint-disable-next-line\n ret += options.numMapper.numberSymbols[timeSeparator];\n break;\n case '/':\n ret += options.dateSeperator;\n break;\n case 'W':\n isNumber = true;\n curval = base.getWeekOfYear(value);\n break;\n default:\n ret += match;\n }\n if (isNumber) {\n processNumber = true;\n curstr = this.checkTwodigitNumber(curval, length_1);\n }\n if (processNumber) {\n ret += parser.convertValueParts(curstr, base.latnParseRegex, options.numMapper.mapper);\n }\n }\n return ret;\n };\n DateFormat.getCurrentDateValue = function (value, isIslamic) {\n if (isIslamic) {\n return HijriParser.getHijriDate(value);\n }\n return { year: value.getFullYear(), month: value.getMonth() + 1, date: value.getDate() };\n };\n /**\n * Returns two digit numbers for given value and length\n *\n * @param {number} val ?\n * @param {number} len ?\n * @returns {string} ?\n */\n DateFormat.checkTwodigitNumber = function (val, len) {\n var ret = val + '';\n if (len === 2 && ret.length !== 2) {\n return '0' + ret;\n }\n return ret;\n };\n /**\n * Returns the value of the Time Zone.\n *\n * @param {number} tVal ?\n * @param {string} pattern ?\n * @returns {string} ?\n * @private\n */\n DateFormat.getTimeZoneValue = function (tVal, pattern) {\n var _this = this;\n var splt = pattern.split(';');\n var curPattern = splt[tVal > 0 ? 1 : 0];\n var no = Math.abs(tVal);\n return curPattern = curPattern.replace(/HH?|mm/g, function (str) {\n var len = str.length;\n var ishour = str.indexOf('H') !== -1;\n return _this.checkTwodigitNumber(Math.floor(ishour ? (no / 60) : (no % 60)), len);\n });\n };\n return DateFormat;\n}());\nexport { DateFormat };\n","import { isUndefined, throwError, isNullOrUndefined, extend, isBlazor, getValue } from '../util';\nimport { defaultCurrencyCode } from '../internationalization';\nimport { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nvar errorText = {\n 'ms': 'minimumSignificantDigits',\n 'ls': 'maximumSignificantDigits',\n 'mf': 'minimumFractionDigits',\n 'lf': 'maximumFractionDigits'\n};\nvar percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar mapper = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\n/**\n * Module for number formatting.\n *\n * @private\n */\nvar NumberFormat = /** @class */ (function () {\n function NumberFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberFormat.numberFormatter = function (culture, option, cldr) {\n var _this = this;\n var fOptions = extend({}, option);\n var cOptions = {};\n var dOptions = {};\n var symbolPattern;\n var dependable = base.getDependables(cldr, culture, '', true);\n var numObject = dependable.numericObject;\n dOptions.numberMapper = isBlazor() ? extend({}, numObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : base.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol);\n /* eslint-disable @typescript-eslint/no-explicit-any */\n dOptions.percentSymbol = isBlazor() ? getValue('numberSymbols.percentSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + percentSign];\n dOptions.minusSymbol = isBlazor() ? getValue('numberSymbols.minusSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + minusSign];\n var symbols = dOptions.numberMapper.numberSymbols;\n if ((option.format) && !(base.formatRegex.test(option.format))) {\n cOptions = base.customFormat(option.format, dOptions, dependable.numericObject);\n }\n else {\n extend(fOptions, base.getProperNumericSkeleton(option.format || 'N'));\n fOptions.isCurrency = fOptions.type === 'currency';\n fOptions.isPercent = fOptions.type === 'percent';\n if (!isBlazor()) {\n symbolPattern = base.getSymbolPattern(fOptions.type, dOptions.numberMapper.numberSystem, dependable.numericObject, fOptions.isAccount);\n }\n fOptions.groupOne = this.checkValueRange(fOptions.maximumSignificantDigits, fOptions.minimumSignificantDigits, true);\n this.checkValueRange(fOptions.maximumFractionDigits, fOptions.minimumFractionDigits, false, true);\n if (!isUndefined(fOptions.fractionDigits)) {\n fOptions.minimumFractionDigits = fOptions.maximumFractionDigits = fOptions.fractionDigits;\n }\n if (isUndefined(fOptions.useGrouping)) {\n fOptions.useGrouping = true;\n }\n if (fOptions.isCurrency && !isBlazor()) {\n symbolPattern = symbolPattern.replace(/\\u00A4/g, base.defaultCurrency);\n }\n if (!isBlazor()) {\n var split = symbolPattern.split(';');\n cOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, dOptions.currencySymbol);\n cOptions.pData = base.getFormatData(split[0], false, dOptions.currencySymbol);\n if (fOptions.useGrouping) {\n fOptions.groupSeparator = symbols[mapper[2]];\n fOptions.groupData = this.getGroupingDetails(split[0]);\n }\n }\n else {\n cOptions.nData = extend({}, {}, getValue(fOptions.type + 'nData', numObject));\n cOptions.pData = extend({}, {}, getValue(fOptions.type + 'pData', numObject));\n if (fOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([cOptions.pData, cOptions.nData], dOptions.currencySymbol, option.currency);\n }\n }\n var minFrac = isUndefined(fOptions.minimumFractionDigits);\n if (minFrac) {\n fOptions.minimumFractionDigits = cOptions.nData.minimumFraction;\n }\n if (isUndefined(fOptions.maximumFractionDigits)) {\n var mval = cOptions.nData.maximumFraction;\n fOptions.maximumFractionDigits = isUndefined(mval) && fOptions.isPercent ? 0 : mval;\n }\n var mfrac = fOptions.minimumFractionDigits;\n var lfrac = fOptions.maximumFractionDigits;\n if (!isUndefined(mfrac) && !isUndefined(lfrac)) {\n if (mfrac > lfrac) {\n fOptions.maximumFractionDigits = mfrac;\n }\n }\n }\n extend(cOptions.nData, fOptions);\n extend(cOptions.pData, fOptions);\n return function (value) {\n if (isNaN(value)) {\n return symbols[mapper[1]];\n }\n else if (!isFinite(value)) {\n return symbols[mapper[0]];\n }\n return _this.intNumberFormatter(value, cOptions, dOptions, option);\n };\n };\n /**\n * Returns grouping details for the pattern provided\n *\n * @param {string} pattern ?\n * @returns {GroupDetails} ?\n */\n NumberFormat.getGroupingDetails = function (pattern) {\n var ret = {};\n var match = pattern.match(base.negativeDataRegex);\n if (match && match[4]) {\n var pattern_1 = match[4];\n var p = pattern_1.lastIndexOf(',');\n if (p !== -1) {\n var temp = pattern_1.split('.')[0];\n ret.primary = (temp.length - p) - 1;\n var s = pattern_1.lastIndexOf(',', p - 1);\n if (s !== -1) {\n ret.secondary = p - 1 - s;\n }\n }\n }\n return ret;\n };\n /**\n * Returns if the provided integer range is valid.\n *\n * @param {number} val1 ?\n * @param {number} val2 ?\n * @param {boolean} checkbothExist ?\n * @param {boolean} isFraction ?\n * @returns {boolean} ?\n */\n NumberFormat.checkValueRange = function (val1, val2, checkbothExist, isFraction) {\n var decide = isFraction ? 'f' : 's';\n var dint = 0;\n var str1 = errorText['l' + decide];\n // eslint-disable-next-line\n var str2 = errorText['m' + decide];\n if (!isUndefined(val1)) {\n this.checkRange(val1, str1, isFraction);\n dint++;\n }\n if (!isUndefined(val2)) {\n this.checkRange(val2, str2, isFraction);\n dint++;\n }\n if (dint === 2) {\n if (val1 < val2) {\n throwError(str2 + 'specified must be less than the' + str1);\n }\n else {\n return true;\n }\n }\n else if (checkbothExist && dint === 1) {\n throwError('Both' + str2 + 'and' + str2 + 'must be present');\n }\n return false;\n };\n /**\n * Check if the provided fraction range is valid\n *\n * @param {number} val ?\n * @param {string} text ?\n * @param {boolean} isFraction ?\n * @returns {void} ?\n */\n NumberFormat.checkRange = function (val, text, isFraction) {\n var range = isFraction ? [0, 20] : [1, 21];\n if (val < range[0] || val > range[1]) {\n throwError(text + 'value must be within the range' + range[0] + 'to' + range[1]);\n }\n };\n /**\n * Returns formatted numeric string for provided formatting options\n *\n * @param {number} value ?\n * @param {base.GenericFormatOptions} fOptions ?\n * @param {CommonOptions} dOptions ?\n * @param {NumberFormatOptions} [option] ?\n * @returns {string} ?\n */\n NumberFormat.intNumberFormatter = function (value, fOptions, dOptions, option) {\n var curData;\n if (isUndefined(fOptions.nData.type)) {\n return undefined;\n }\n else {\n if (value < 0) {\n value = value * -1;\n curData = fOptions.nData;\n }\n else if (value === 0) {\n curData = fOptions.zeroData || fOptions.pData;\n }\n else {\n curData = fOptions.pData;\n }\n var fValue = '';\n if (curData.isPercent) {\n value = value * 100;\n }\n if (curData.groupOne) {\n fValue = this.processSignificantDigits(value, curData.minimumSignificantDigits, curData.maximumSignificantDigits);\n }\n else {\n fValue = this.processFraction(value, curData.minimumFractionDigits, curData.maximumFractionDigits, option);\n if (curData.minimumIntegerDigits) {\n fValue = this.processMinimumIntegers(fValue, curData.minimumIntegerDigits);\n }\n if (dOptions.isCustomFormat && curData.minimumFractionDigits < curData.maximumFractionDigits\n && /\\d+\\.\\d+/.test(fValue)) {\n var temp = fValue.split('.');\n var decimalPart = temp[1];\n var len = decimalPart.length;\n for (var i = len - 1; i >= 0; i--) {\n if (decimalPart[\"\" + i] === '0' && i >= curData.minimumFractionDigits) {\n decimalPart = decimalPart.slice(0, i);\n }\n else {\n break;\n }\n }\n fValue = temp[0] + '.' + decimalPart;\n }\n }\n if (curData.type === 'scientific') {\n fValue = value.toExponential(curData.maximumFractionDigits);\n fValue = fValue.replace('e', dOptions.numberMapper.numberSymbols[mapper[4]]);\n }\n fValue = fValue.replace('.', dOptions.numberMapper.numberSymbols[mapper[3]]);\n fValue = curData.format === '#,###,,;(#,###,,)' ? this.customPivotFormat(parseInt(fValue, 10)) : fValue;\n if (curData.useGrouping) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper[3]] || '.', curData.groupData.secondary);\n }\n fValue = parser.convertValueParts(fValue, base.latnParseRegex, dOptions.numberMapper.mapper);\n if (curData.nlead === 'N/A') {\n return curData.nlead;\n }\n else {\n if (fValue === '0' && option && option.format === '0') {\n return fValue + curData.nend;\n }\n return curData.nlead + fValue + curData.nend;\n }\n }\n };\n /**\n * Returns significant digits processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @returns {string} ?\n */\n NumberFormat.processSignificantDigits = function (value, min, max) {\n var temp = value + '';\n var tn;\n var length = temp.length;\n if (length < min) {\n return value.toPrecision(min);\n }\n else {\n temp = value.toPrecision(max);\n tn = +temp;\n return tn + '';\n }\n };\n /**\n * Returns grouped numeric string\n *\n * @param {string} val ?\n * @param {number} level1 ?\n * @param {string} sep ?\n * @param {string} decimalSymbol ?\n * @param {number} level2 ?\n * @returns {string} ?\n */\n NumberFormat.groupNumbers = function (val, level1, sep, decimalSymbol, level2) {\n var flag = !isNullOrUndefined(level2) && level2 !== 0;\n var split = val.split(decimalSymbol);\n var prefix = split[0];\n var length = prefix.length;\n var str = '';\n while (length > level1) {\n str = prefix.slice(length - level1, length) + (str.length ?\n (sep + str) : '');\n length -= level1;\n if (flag) {\n level1 = level2;\n flag = false;\n }\n }\n split[0] = prefix.slice(0, length) + (str.length ? sep : '') + str;\n return split.join(decimalSymbol);\n };\n /**\n * Returns fraction processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @param {NumberFormatOptions} [option] ?\n * @returns {string} ?\n */\n NumberFormat.processFraction = function (value, min, max, option) {\n var temp = (value + '').split('.')[1];\n var length = temp ? temp.length : 0;\n if (min && length < min) {\n var ret = '';\n if (length === 0) {\n ret = value.toFixed(min);\n }\n else {\n ret += value;\n for (var j = 0; j < min - length; j++) {\n ret += '0';\n }\n return ret;\n }\n return value.toFixed(min);\n }\n else if (!isNullOrUndefined(max) && (length > max || max === 0)) {\n return value.toFixed(max);\n }\n var str = value + '';\n if (str[0] === '0' && option && option.format === '###.00') {\n str = str.slice(1);\n }\n return str;\n };\n /**\n * Returns integer processed numeric string\n *\n * @param {string} value ?\n * @param {number} min ?\n * @returns {string} ?\n */\n NumberFormat.processMinimumIntegers = function (value, min) {\n var temp = value.split('.');\n var lead = temp[0];\n var len = lead.length;\n if (len < min) {\n for (var i = 0; i < min - len; i++) {\n lead = '0' + lead;\n }\n temp[0] = lead;\n }\n return temp.join('.');\n };\n /**\n * Returns custom format for pivot table\n *\n * @param {number} value ?\n * @returns {string} ?\n */\n NumberFormat.customPivotFormat = function (value) {\n if (value >= 500000) {\n value /= 1000000;\n // eslint-disable-next-line\n var _a = value.toString().split('.'), integer = _a[0], decimal = _a[1];\n return decimal && +decimal.substring(0, 1) >= 5\n ? Math.ceil(value).toString()\n : Math.floor(value).toString();\n }\n return '';\n };\n return NumberFormat;\n}());\nexport { NumberFormat };\n","import { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nimport { isUndefined, throwError, getValue, isNullOrUndefined, isBlazor } from '../util';\nimport { datePartMatcher } from './date-formatter';\nimport { HijriParser } from '../hijri-parser';\nvar standalone = 'stand-alone';\nvar latnRegex = /^[0-9]*$/;\nvar timeSetter = {\n minute: 'setMinutes',\n hour: 'setHours',\n second: 'setSeconds',\n day: 'setDate',\n month: 'setMonth',\n milliseconds: 'setMilliseconds'\n};\nvar month = 'months';\n/* tslint:disable no-any */\n/**\n * Date Parser.\n *\n * @private\n */\nvar DateParser = /** @class */ (function () {\n function DateParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which string date will be parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateParser.dateParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), false, isBlazor());\n var parseOptions = {};\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n var regexString = '';\n var hourOnly;\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n parseOptions = { isIslamic: base.islamicRegex.test(option.calendar), pattern: resPattern, evalposition: {}, culture: culture };\n var patternMatch = resPattern.match(base.dateParseRegex) || [];\n var length_1 = patternMatch.length;\n var gmtCorrection = 0;\n var zCorrectTemp = 0;\n var isgmtTraversed = false;\n var nRegx = numOptions.numericRegex;\n // eslint-disable-next-line\n var numMapper = isBlazor() ? dependable.parserObject.numbers :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n for (var i = 0; i < length_1; i++) {\n var str = patternMatch[parseInt(i.toString(), 10)];\n var len = str.length;\n var char = (str[0] === 'K') ? 'h' : str[0];\n var isNumber = void 0;\n var canUpdate = void 0;\n // eslint-disable-next-line\n var charKey = datePartMatcher[char];\n var optional = (len === 2) ? '' : '?';\n if (isgmtTraversed) {\n gmtCorrection = zCorrectTemp;\n isgmtTraversed = false;\n }\n switch (char) {\n case 'E':\n case 'c':\n // eslint-disable-next-line\n var weekData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n weekData = getValue('days.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n weekData = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n var weekObject = parser.reverseObject(weekData);\n // tslint:enable\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\n case 'M':\n case 'L':\n case 'd':\n case 'm':\n case 's':\n case 'h':\n case 'H':\n case 'f':\n canUpdate = true;\n if ((char === 'M' || char === 'L') && len > 2) {\n var monthData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n monthData = getValue('months.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n monthData = dependable.dateObject[month][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(monthData);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n }\n else if (char === 'f') {\n if (len > 3) {\n continue;\n }\n isNumber = true;\n regexString += '(' + nRegx + nRegx + '?' + nRegx + '?' + ')';\n }\n else {\n isNumber = true;\n regexString += '(' + nRegx + nRegx + optional + ')';\n }\n if (char === 'h') {\n parseOptions.hour12 = true;\n }\n break;\n case 'W':\n // eslint-disable-next-line\n var opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\n case 'y':\n canUpdate = isNumber = true;\n if (len === 2) {\n regexString += '(' + nRegx + nRegx + ')';\n }\n else {\n regexString += '(' + nRegx + '{' + len + ',})';\n }\n break;\n case 'a':\n canUpdate = true;\n // eslint-disable-next-line\n var periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(periodValur);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n break;\n case 'G':\n canUpdate = true;\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + '?)';\n break;\n case 'z':\n // eslint-disable-next-line\n var tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n // eslint-disable-next-line\n parseOptions[charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n // eslint-disable-next-line\n var tzone = parseOptions[charKey];\n hourOnly = (len < 4);\n // eslint-disable-next-line\n var hpattern = hourOnly ? '+H;-H' : tzone.hourFormat;\n hpattern = hpattern.replace(/:/g, numMapper.timeSeparator);\n regexString += '(' + this.parseTimeZoneRegx(hpattern, tzone, nRegx) + ')?';\n isgmtTraversed = true;\n zCorrectTemp = hourOnly ? 6 : 12;\n break;\n case '\\'':\n // eslint-disable-next-line\n var iString = str.replace(/'/g, '');\n regexString += '(' + iString + ')?';\n break;\n default:\n regexString += '([\\\\D])';\n break;\n }\n if (canUpdate) {\n parseOptions.evalposition[\"\" + charKey] = { isNumber: isNumber, pos: i + 1 + gmtCorrection, hourOnly: hourOnly };\n }\n if (i === length_1 - 1 && !isNullOrUndefined(regexString)) {\n var regExp = RegExp;\n parseOptions.parserRegex = new regExp('^' + regexString + '$', 'i');\n }\n }\n }\n return function (value) {\n var parsedDateParts = _this.internalDateParse(value, parseOptions, numOptions);\n if (isNullOrUndefined(parsedDateParts) || !Object.keys(parsedDateParts).length) {\n return null;\n }\n if (parseOptions.isIslamic) {\n var dobj = {};\n var tYear = parsedDateParts.year;\n var tDate = parsedDateParts.day;\n var tMonth = parsedDateParts.month;\n var ystrig = tYear ? (tYear + '') : '';\n var is2DigitYear = (ystrig.length === 2);\n if (!tYear || !tMonth || !tDate || is2DigitYear) {\n dobj = HijriParser.getHijriDate(new Date());\n }\n if (is2DigitYear) {\n tYear = parseInt((dobj.year + '').slice(0, 2) + ystrig, 10);\n }\n // tslint:disable-next-line\n var dateObject = HijriParser.toGregorian(tYear || dobj.year, tMonth || dobj.month, tDate || dobj.date);\n parsedDateParts.year = dateObject.getFullYear();\n parsedDateParts.month = dateObject.getMonth() + 1;\n parsedDateParts.day = dateObject.getDate();\n }\n return _this.getDateObject(parsedDateParts);\n };\n };\n /* tslint:disable */\n /**\n * Returns date object for provided date options\n *\n * @param {DateParts} options ?\n * @param {Date} value ?\n * @returns {Date} ?\n */\n DateParser.getDateObject = function (options, value) {\n var res = value || new Date();\n res.setMilliseconds(0);\n var tKeys = ['hour', 'minute', 'second', 'milliseconds', 'month', 'day'];\n var y = options.year;\n var desig = options.designator;\n var tzone = options.timeZone;\n if (!isUndefined(y)) {\n var len = (y + '').length;\n if (len <= 2) {\n var century = Math.floor(res.getFullYear() / 100) * 100;\n y += century;\n }\n res.setFullYear(y);\n }\n for (var _i = 0, tKeys_1 = tKeys; _i < tKeys_1.length; _i++) {\n var key = tKeys_1[_i];\n // eslint-disable-next-line\n var tValue = options[key];\n if (isUndefined(tValue) && key === 'day') {\n res.setDate(1);\n }\n if (!isUndefined(tValue)) {\n if (key === 'month') {\n tValue -= 1;\n if (tValue < 0 || tValue > 11) {\n return new Date('invalid');\n }\n var pDate = res.getDate();\n res.setDate(1);\n // eslint-disable-next-line\n res[timeSetter[key]](tValue);\n var lDate = new Date(res.getFullYear(), tValue + 1, 0).getDate();\n res.setDate(pDate < lDate ? pDate : lDate);\n }\n else {\n if (key === 'day') {\n var lastDay = new Date(res.getFullYear(), res.getMonth() + 1, 0).getDate();\n if ((tValue < 1 || tValue > lastDay)) {\n return null;\n }\n }\n // eslint-disable-next-line\n res[timeSetter[key]](tValue);\n }\n }\n }\n if (!isUndefined(desig)) {\n var hour = res.getHours();\n if (desig === 'pm') {\n res.setHours(hour + (hour === 12 ? 0 : 12));\n }\n else if (hour === 12) {\n res.setHours(0);\n }\n }\n if (!isUndefined(tzone)) {\n var tzValue = tzone - res.getTimezoneOffset();\n if (tzValue !== 0) {\n res.setMinutes(res.getMinutes() + tzValue);\n }\n }\n return res;\n };\n /**\n * Returns date parsing options for provided value along with parse and numeric options\n *\n * @param {string} value ?\n * @param {ParseOptions} parseOptions ?\n * @param {NumericOptions} num ?\n * @returns {DateParts} ?\n */\n DateParser.internalDateParse = function (value, parseOptions, num) {\n var matches = value.match(parseOptions.parserRegex);\n var retOptions = { 'hour': 0, 'minute': 0, 'second': 0 };\n if (isNullOrUndefined(matches)) {\n return null;\n }\n else {\n var props = Object.keys(parseOptions.evalposition);\n for (var _i = 0, props_1 = props; _i < props_1.length; _i++) {\n var prop = props_1[_i];\n var curObject = parseOptions.evalposition[\"\" + prop];\n var matchString = matches[curObject.pos];\n if (curObject.isNumber) {\n // eslint-disable-next-line\n retOptions[prop] = this.internalNumberParser(matchString, num);\n }\n else {\n if (prop === 'timeZone' && !isUndefined(matchString)) {\n var pos = curObject.pos;\n var val = void 0;\n var tmatch = matches[pos + 1];\n var flag = !isUndefined(tmatch);\n if (curObject.hourOnly) {\n val = this.getZoneValue(flag, tmatch, matches[pos + 4], num) * 60;\n }\n else {\n val = this.getZoneValue(flag, tmatch, matches[pos + 7], num) * 60;\n val += this.getZoneValue(flag, matches[pos + 4], matches[pos + 10], num);\n }\n if (!isNullOrUndefined(val)) {\n retOptions[\"\" + prop] = val;\n }\n }\n else {\n var cultureOptions = ['en-US', 'en-MH', 'en-MP'];\n // eslint-disable-next-line\n matchString = ((prop === 'month') && (!parseOptions.isIslamic) && (parseOptions.culture === 'en' || parseOptions.culture === 'en-GB' || parseOptions.culture === 'en-US'))\n ? matchString[0].toUpperCase() + matchString.substring(1).toLowerCase() : matchString;\n // eslint-disable-next-line\n matchString = ((prop !== 'month') && (prop === 'designator') && parseOptions.culture && parseOptions.culture.indexOf('en-') !== -1 && cultureOptions.indexOf(parseOptions.culture) === -1)\n ? matchString.toLowerCase() : matchString;\n // eslint-disable-next-line\n retOptions[prop] = parseOptions[prop][matchString];\n }\n }\n }\n if (parseOptions.hour12) {\n retOptions.hour12 = true;\n }\n }\n return retOptions;\n };\n /**\n * Returns parsed number for provided Numeric string and Numeric Options\n *\n * @param {string} value ?\n * @param {NumericOptions} option ?\n * @returns {number} ?\n */\n DateParser.internalNumberParser = function (value, option) {\n value = parser.convertValueParts(value, option.numberParseRegex, option.numericPair);\n if (latnRegex.test(value)) {\n return +value;\n }\n return null;\n };\n /**\n * Returns parsed time zone RegExp for provided hour format and time zone\n *\n * @param {string} hourFormat ?\n * @param {base.TimeZoneOptions} tZone ?\n * @param {string} nRegex ?\n * @returns {string} ?\n */\n DateParser.parseTimeZoneRegx = function (hourFormat, tZone, nRegex) {\n var pattern = tZone.gmtFormat;\n var ret;\n var cRegex = '(' + nRegex + ')' + '(' + nRegex + ')';\n var splitStr;\n ret = hourFormat.replace('+', '\\\\+');\n if (hourFormat.indexOf('HH') !== -1) {\n ret = ret.replace(/HH|mm/g, '(' + cRegex + ')');\n }\n else {\n ret = ret.replace(/H|m/g, '(' + cRegex + '?)');\n }\n // eslint-disable-next-line\n splitStr = (ret.split(';').map(function (str) {\n return pattern.replace('{0}', str);\n }));\n ret = splitStr.join('|') + '|' + tZone.gmtZeroFormat;\n return ret;\n };\n /**\n * Returns zone based value.\n *\n * @param {boolean} flag ?\n * @param {string} val1 ?\n * @param {string} val2 ?\n * @param {NumericOptions} num ?\n * @returns {number} ?\n */\n DateParser.getZoneValue = function (flag, val1, val2, num) {\n var ival = flag ? val1 : val2;\n if (!ival) {\n return 0;\n }\n var value = this.internalNumberParser(ival, num);\n if (flag) {\n return -value;\n }\n return value;\n };\n return DateParser;\n}());\nexport { DateParser };\n","import { extend, isNullOrUndefined, isBlazor, getValue } from '../util';\nimport { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nvar regExp = RegExp;\n// eslint-disable-next-line\nvar parseRegex = new regExp('^([^0-9]*)' + '(([0-9,]*[0-9]+)(\\.[0-9]+)?)' + '([Ee][+-]?[0-9]+)?([^0-9]*)$');\nvar groupRegex = /,/g;\nvar keys = ['minusSign', 'infinity'];\n/**\n * Module for Number Parser.\n *\n * @private\n */\nvar NumberParser = /** @class */ (function () {\n function NumberParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberParser.numberParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numOptions;\n if ((base.formatRegex.test(option.format)) || !(option.format)) {\n extend(parseOptions, base.getProperNumericSkeleton(option.format || 'N'));\n parseOptions.custom = false;\n if (!parseOptions.fractionDigits) {\n if (option.maximumFractionDigits) {\n parseOptions.maximumFractionDigits = option.maximumFractionDigits;\n }\n }\n }\n else {\n extend(parseOptions, base.customFormat(option.format, null, null));\n }\n var numbers = getValue('numbers', dependable.parserObject);\n // eslint-disable-next-line\n numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = parser.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n // eslint-disable-next-line\n parseOptions.infinity = numOptions.symbolNumberSystem[keys[1]];\n var symbolpattern;\n if (!isBlazor()) {\n symbolpattern = base.getSymbolPattern(parseOptions.type, numOptions.numberSystem, dependable.numericObject, parseOptions.isAccount);\n if (symbolpattern) {\n symbolpattern = symbolpattern.replace(/\\u00A4/g, base.defaultCurrency);\n var split = symbolpattern.split(';');\n parseOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, '');\n parseOptions.pData = base.getFormatData(split[0], true, '');\n }\n }\n else {\n parseOptions.nData = extend({}, {}, getValue(parseOptions.type + 'nData', numbers));\n parseOptions.pData = extend({}, {}, getValue(parseOptions.type + 'pData', numbers));\n if (parseOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([parseOptions.pData, parseOptions.nData], getValue('currencySymbol', numbers), option.currency);\n }\n }\n return function (value) {\n return _this.getParsedNumber(value, parseOptions, numOptions);\n };\n };\n /**\n * Returns parsed number for the provided formatting options\n *\n * @param {string} value ?\n * @param {NumericParts} options ?\n * @param {NumericOptions} numOptions ?\n * @returns {number} ?\n */\n NumberParser.getParsedNumber = function (value, options, numOptions) {\n var isNegative;\n var isPercent;\n var tempValue;\n var lead;\n var end;\n var ret;\n if (value.indexOf(options.infinity) !== -1) {\n return Infinity;\n }\n else {\n value = parser.convertValueParts(value, options.symbolRegex, numOptions.symbolMatch);\n value = parser.convertValueParts(value, numOptions.numberParseRegex, numOptions.numericPair);\n value = value.indexOf('-') !== -1 ? value.replace('-.', '-0.') : value;\n if (value.indexOf('.') === 0) {\n value = '0' + value;\n }\n var matches = value.match(parseRegex);\n if (isNullOrUndefined(matches)) {\n return NaN;\n }\n lead = matches[1];\n tempValue = matches[2];\n var exponent = matches[5];\n end = matches[6];\n isNegative = options.custom ? ((lead === options.nData.nlead) && (end === options.nData.nend)) :\n ((lead.indexOf(options.nData.nlead) !== -1) && (end.indexOf(options.nData.nend) !== -1));\n isPercent = isNegative ?\n options.nData.isPercent :\n options.pData.isPercent;\n tempValue = tempValue.replace(groupRegex, '');\n if (exponent) {\n tempValue += exponent;\n }\n ret = +tempValue;\n if (options.type === 'percent' || isPercent) {\n ret = ret / 100;\n }\n if (options.custom || options.fractionDigits) {\n ret = parseFloat(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.fractionDigits));\n }\n if (options.maximumFractionDigits) {\n ret = this.convertMaxFracDigits(tempValue, options, ret, isNegative);\n }\n if (isNegative) {\n ret *= -1;\n }\n return ret;\n }\n };\n NumberParser.convertMaxFracDigits = function (value, options, ret, isNegative) {\n var decimalSplitValue = value.split('.');\n if (decimalSplitValue[1] && decimalSplitValue[1].length > options.maximumFractionDigits) {\n ret = +(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.maximumFractionDigits));\n }\n return ret;\n };\n return NumberParser;\n}());\nexport { NumberParser };\n","import { isNullOrUndefined, getValue, extend, isBlazor } from './util';\nvar Observer = /** @class */ (function () {\n function Observer(context) {\n this.ranArray = [];\n this.boundedEvents = {};\n if (isNullOrUndefined(context)) {\n return;\n }\n this.context = context;\n }\n /**\n * To attach handler for given property in current context.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Specifies the handler function to be called while event notified.\n * @param {Object} context - Specifies the context binded to the handler.\n * @param {string} id - specifies the random generated id.\n * @returns {void}\n */\n Observer.prototype.on = function (property, handler, context, id) {\n if (isNullOrUndefined(handler)) {\n return;\n }\n var cntxt = context || this.context;\n if (this.notExist(property)) {\n this.boundedEvents[\"\" + property] = [{ handler: handler, context: cntxt, id: id }];\n return;\n }\n if (!isNullOrUndefined(id)) {\n if (this.ranArray.indexOf(id) === -1) {\n this.ranArray.push(id);\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt, id: id });\n }\n }\n else if (!this.isHandlerPresent(this.boundedEvents[\"\" + property], handler)) {\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt });\n }\n };\n /**\n * To remove handlers from a event attached using on() function.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Optional argument specifies the handler function to be called while event notified.\n * @param {string} id - specifies the random generated id.\n * @returns {void} ?\n */\n Observer.prototype.off = function (property, handler, id) {\n if (this.notExist(property)) {\n return;\n }\n var curObject = getValue(property, this.boundedEvents);\n if (handler) {\n for (var i = 0; i < curObject.length; i++) {\n if (id) {\n if (curObject[parseInt(i.toString(), 10)].id === id) {\n curObject.splice(i, 1);\n var indexLocation = this.ranArray.indexOf(id);\n if (indexLocation !== -1) {\n this.ranArray.splice(indexLocation, 1);\n }\n break;\n }\n }\n else if (handler === curObject[parseInt(i.toString(), 10)].handler) {\n curObject.splice(i, 1);\n break;\n }\n }\n }\n else {\n delete this.boundedEvents[\"\" + property];\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it was failure to call.\n * @returns {void} ?\n */\n Observer.prototype.notify = function (property, argument, successHandler, errorHandler) {\n if (this.notExist(property)) {\n if (successHandler) {\n successHandler.call(this, argument);\n }\n return;\n }\n if (argument) {\n argument.name = property;\n }\n var blazor = 'Blazor';\n var curObject = getValue(property, this.boundedEvents).slice(0);\n if (window[\"\" + blazor]) {\n return this.blazorCallback(curObject, argument, successHandler, errorHandler, 0);\n }\n else {\n for (var _i = 0, curObject_1 = curObject; _i < curObject_1.length; _i++) {\n var cur = curObject_1[_i];\n cur.handler.call(cur.context, argument);\n }\n if (successHandler) {\n successHandler.call(this, argument);\n }\n }\n };\n Observer.prototype.blazorCallback = function (objs, argument, successHandler, errorHandler, index) {\n var _this = this;\n var isTrigger = index === objs.length - 1;\n if (index < objs.length) {\n var obj_1 = objs[parseInt(index.toString(), 10)];\n var promise = obj_1.handler.call(obj_1.context, argument);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n return promise;\n }\n promise.then(function (data) {\n data = typeof data === 'string' && _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data;\n extend(argument, argument, data, true);\n if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return _this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }).catch(function (data) {\n if (errorHandler) {\n errorHandler.call(obj_1.context, typeof data === 'string' &&\n _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data);\n }\n });\n }\n else if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }\n };\n // eslint-disable-next-line\n Observer.prototype.dateReviver = function (key, value) {\n var dPattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\n if (isBlazor && typeof value === 'string' && value.match(dPattern) !== null) {\n return (new Date(value));\n }\n return (value);\n };\n Observer.prototype.isJson = function (value) {\n try {\n JSON.parse(value);\n }\n catch (e) {\n return false;\n }\n return true;\n };\n /**\n * To destroy handlers in the event\n *\n * @returns {void} ?\n */\n Observer.prototype.destroy = function () {\n this.boundedEvents = this.context = undefined;\n };\n /**\n * To remove internationalization events\n *\n * @returns {void} ?\n */\n Observer.prototype.offIntlEvents = function () {\n // eslint-disable-next-line\n var eventsArr = this.boundedEvents['notifyExternalChange'];\n if (eventsArr) {\n for (var i = 0; i < eventsArr.length; i++) {\n // eslint-disable-next-line\n var curContext = eventsArr[\"\" + i].context;\n if (curContext && curContext.detectFunction && curContext.randomId && !curContext.isRendered) {\n this.off('notifyExternalChange', curContext.detectFunction, curContext.randomId);\n i--;\n }\n }\n if (!this.boundedEvents['notifyExternalChange'].length) {\n delete this.boundedEvents['notifyExternalChange'];\n }\n }\n };\n /**\n * Returns if the property exists.\n *\n * @param {string} prop ?\n * @returns {boolean} ?\n */\n Observer.prototype.notExist = function (prop) {\n // eslint-disable-next-line\n return this.boundedEvents.hasOwnProperty(prop) === false || this.boundedEvents[prop].length <= 0;\n };\n /**\n * Returns if the handler is present.\n *\n * @param {BoundOptions[]} boundedEvents ?\n * @param {Function} handler ?\n * @returns {boolean} ?\n */\n Observer.prototype.isHandlerPresent = function (boundedEvents, handler) {\n for (var _i = 0, boundedEvents_1 = boundedEvents; _i < boundedEvents_1.length; _i++) {\n var cur = boundedEvents_1[_i];\n if (cur.handler === handler) {\n return true;\n }\n }\n return false;\n };\n return Observer;\n}());\nexport { Observer };\n","import { DateFormat } from './intl/date-formatter';\nimport { NumberFormat } from './intl/number-formatter';\nimport { DateParser } from './intl/date-parser';\nimport { NumberParser } from './intl/number-parser';\nimport { IntlBase } from './intl/intl-base';\nimport { extend, getValue, isBlazor } from './util';\nimport { Observer } from './observer';\n/**\n * Specifies the observer used for external change detection.\n */\nexport var onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nexport var rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n *\n * @private\n */\nexport var cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n *\n * @private\n */\nexport var defaultCulture = 'en-US';\n/**\n * Specifies default currency code to be considered\n *\n * @private\n */\nexport var defaultCurrencyCode = 'USD';\nvar mapper = ['numericObject', 'dateObject'];\n/**\n * Internationalization class provides support to parse and format the number and date object to the desired format.\n * ```typescript\n * // To set the culture globally\n * setCulture('en-GB');\n *\n * // To set currency code globally\n * setCurrencyCode('EUR');\n *\n * //Load cldr data\n * loadCldr(gregorainData);\n * loadCldr(timeZoneData);\n * loadCldr(numbersData);\n * loadCldr(numberSystemData);\n *\n * // To use formatter in component side\n * let Intl:Internationalization = new Internationalization();\n *\n * // Date formatting\n * let dateFormatter: Function = Intl.getDateFormat({skeleton:'long',type:'dateTime'});\n * dateFormatter(new Date('11/2/2016'));\n * dateFormatter(new Date('25/2/2030'));\n * Intl.formatDate(new Date(),{skeleton:'E'});\n *\n * //Number formatting\n * let numberFormatter: Function = Intl.getNumberFormat({skeleton:'C5'})\n * numberFormatter(24563334);\n * Intl.formatNumber(123123,{skeleton:'p2'});\n *\n * // Date parser\n * let dateParser: Function = Intl.getDateParser({skeleton:'short',type:'time'});\n * dateParser('10:30 PM');\n * Intl.parseDate('10',{skeleton:'H'});\n * ```\n */\nvar Internationalization = /** @class */ (function () {\n function Internationalization(cultureName) {\n if (cultureName) {\n this.culture = cultureName;\n }\n }\n /**\n * Returns the format function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateFormat = function (options) {\n return DateFormat.dateFormat(this.getCulture(), options || { type: 'date', skeleton: 'short' }, cldrData);\n };\n /**\n * Returns the format function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberFormat = function (options) {\n if (options && !options.currency) {\n options.currency = defaultCurrencyCode;\n }\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberFormat.numberFormatter(this.getCulture(), options || {}, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateParser = function (options) {\n return DateParser.dateParser(this.getCulture(), options || { skeleton: 'short', type: 'date' }, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberParser = function (options) {\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberParser.numberParser(this.getCulture(), options || { format: 'N' }, cldrData);\n };\n /**\n * Returns the formatted string based on format options.\n *\n * @param {number} value - Specifies the number to format.\n * @param {NumberFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatNumber = function (value, option) {\n return this.getNumberFormat(option)(value);\n };\n /**\n * Returns the formatted date string based on format options.\n *\n * @param {Date} value - Specifies the number to format.\n * @param {DateFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatDate = function (value, option) {\n return this.getDateFormat(option)(value);\n };\n /**\n * Returns the date object for given date string and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {DateFormatOptions} option - Specifies the parse options in which the date string will be parsed.\n * @returns {Date} ?\n */\n Internationalization.prototype.parseDate = function (value, option) {\n return this.getDateParser(option)(value);\n };\n /**\n * Returns the number object from the given string value and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {NumberFormatOptions} option - Specifies the parse options in which the string number will be parsed.\n * @returns {number} ?\n */\n Internationalization.prototype.parseNumber = function (value, option) {\n return this.getNumberParser(option)(value);\n };\n /**\n * Returns Native Date Time Pattern\n *\n * @param {DateFormatOptions} option - Specifies the parse options for resultant date time pattern.\n * @param {boolean} isExcelFormat - Specifies format value to be converted to excel pattern.\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getDatePattern = function (option, isExcelFormat) {\n return IntlBase.getActualDateTimeFormat(this.getCulture(), option, cldrData, isExcelFormat);\n };\n /**\n * Returns Native Number Pattern\n *\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @param {boolean} isExcel ?\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getNumberPattern = function (option, isExcel) {\n return IntlBase.getActualNumberFormat(this.getCulture(), option, cldrData, isExcel);\n };\n /**\n * Returns the First Day of the Week\n *\n * @returns {number} ?\n */\n Internationalization.prototype.getFirstDayOfWeek = function () {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n };\n /**\n * Returns the culture\n *\n * @returns {string} ?\n */\n Internationalization.prototype.getCulture = function () {\n return this.culture || defaultCulture;\n };\n return Internationalization;\n}());\nexport { Internationalization };\n/**\n * Set the default culture to all EJ2 components\n *\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCulture(cultureName) {\n defaultCulture = cultureName;\n onIntlChange.notify('notifyExternalChange', { 'locale': defaultCulture });\n}\n/**\n * Set the default currency code to all EJ2 components\n *\n * @param {string} currencyCode Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCurrencyCode(currencyCode) {\n defaultCurrencyCode = currencyCode;\n onIntlChange.notify('notifyExternalChange', { 'currencyCode': defaultCurrencyCode });\n}\n/**\n * Load the CLDR data into context\n *\n * @param {Object[]} data Specifies the CLDR data's to be used for formatting and parser.\n * @returns {void} ?\n */\nexport function loadCldr() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var obj = data_1[_a];\n extend(cldrData, obj, {}, true);\n }\n}\n/**\n * To enable or disable RTL functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable rtl option.\n * @returns {void} ?\n */\nexport function enableRtl(status) {\n if (status === void 0) { status = true; }\n rightToLeft = status;\n onIntlChange.notify('notifyExternalChange', { enableRtl: rightToLeft });\n}\n/**\n * To get the numeric CLDR object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} type ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getNumericObject(locale, type) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n // eslint-disable-next-line\n var dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper[1]];\n var numSystem = getValue('defaultNumberingSystem', numObject);\n var symbPattern = isBlazor() ? getValue('numberSymbols', numObject) : getValue('symbols-numberSystem-' + numSystem, numObject);\n var pattern = IntlBase.getSymbolPattern(type || 'decimal', numSystem, numObject, false);\n return extend(symbPattern, IntlBase.getFormatData(pattern, true, '', true), { 'dateSeparator': IntlBase.getDateSeparator(dateObject) });\n}\n/**\n * To get the numeric CLDR number base object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} currency - Specifies the currency for which numericObject to be returned.\n * @returns {string} ?\n * @ignore\n * @private\n */\nexport function getNumberDependable(locale, currency) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n // eslint-disable-next-line\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n *\n * @param {string} mode ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getDefaultDateObject(mode) {\n // eslint-disable-next-line\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}\n","import { defaultCurrencyCode } from '../internationalization';\nimport { getValue, isNullOrUndefined, extend, isBlazor } from '../util';\nimport { ParserBase as parser, getBlazorCurrencySymbol } from './parser-base';\nimport { DateFormat } from './date-formatter';\nimport { NumberFormat } from './number-formatter';\nimport { isUndefined } from '../util';\nvar regExp = RegExp;\nexport var blazorCultureFormats = {\n 'en-US': {\n 'd': 'M/d/y',\n 'D': 'EEEE, MMMM d, y',\n 'f': 'EEEE, MMMM d, y h:mm a',\n 'F': 'EEEE, MMMM d, y h:mm:s a',\n 'g': 'M/d/y h:mm a',\n 'G': 'M/d/yyyy h:mm:ss tt',\n 'm': 'MMMM d',\n 'M': 'MMMM d',\n 'r': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 'R': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 's': 'yyyy\\'-\\'MM\\'-\\'dd\\'T\\'HH\\':\\'mm\\':\\'ss',\n 't': 'h:mm tt',\n 'T': 'h:m:s tt',\n 'u': 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n 'U': 'dddd, MMMM d, yyyy h:mm:ss tt',\n 'y': 'MMMM yyyy',\n 'Y': 'MMMM yyyy'\n }\n};\n/**\n * Date base common constants and function for date parser and formatter.\n */\n// eslint-disable-next-line\nexport var IntlBase;\n(function (IntlBase) {\n /* eslint-disable */\n // tslint:disable-next-line:max-line-length.\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*[0#\\ ]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;\n var fractionRegex = /[0-9]/g;\n IntlBase.defaultCurrency = '$';\n var mapper = ['infinity', 'nan', 'group', 'decimal'];\n var patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;\n var patternMatch = {\n 'G': '',\n 'M': 'm',\n 'L': 'm',\n 'H': 'h',\n 'c': 'd',\n '\\'': '\"',\n ' a': ' AM/PM',\n 'yy': 'yy',\n 'y': 'yyyy',\n 'EEEE': 'dddd',\n 'E': 'ddd'\n };\n IntlBase.dateConverterMapper = /dddd|ddd/ig;\n var defaultFirstDay = 'sun';\n IntlBase.islamicRegex = /^islamic/;\n var firstDayMapper = {\n 'sun': 0,\n 'mon': 1,\n 'tue': 2,\n 'wed': 3,\n 'thu': 4,\n 'fri': 5,\n 'sat': 6\n };\n IntlBase.formatRegex = new regExp(\"(^[ncpae]{1})([0-1]?[0-9]|20)?$\", \"i\");\n IntlBase.currencyFormatRegex = new regExp(\"(^[ca]{1})([0-1]?[0-9]|20)?$\", \"i\");\n IntlBase.curWithoutNumberRegex = /(c|a)$/ig;\n var typeMapper = {\n '$': 'isCurrency',\n '%': 'isPercent',\n '-': 'isNegative',\n 0: 'nlead',\n 1: 'nend'\n };\n IntlBase.dateParseRegex = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];\n /* tslint:disable:quotemark */\n IntlBase.defaultObject = {\n 'dates': {\n 'calendars': {\n 'gregorian': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'narrow': {\n '1': 'J',\n '2': 'F',\n '3': 'M',\n '4': 'A',\n '5': 'M',\n '6': 'J',\n '7': 'J',\n '8': 'A',\n '9': 'S',\n '10': 'O',\n '11': 'N',\n '12': 'D'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'Before Christ',\n '0-alt-variant': 'Before Common Era',\n '1': 'Anno Domini',\n '1-alt-variant': 'Common Era'\n },\n 'eraAbbr': {\n '0': 'BC',\n '0-alt-variant': 'BCE',\n '1': 'AD',\n '1-alt-variant': 'CE'\n },\n 'eraNarrow': {\n '0': 'B',\n '0-alt-variant': 'BCE',\n '1': 'A',\n '1-alt-variant': 'CE'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y',\n 'long': 'MMMM d, y',\n 'medium': 'MMM d, y',\n 'short': 'M/d/yy'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'hmsv': 'h:mm:ss a v',\n 'Hmsv': 'HH:mm:ss v',\n 'hmv': 'h:mm a v',\n 'Hmv': 'HH:mm v',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y',\n 'yM': 'M/y',\n 'yMd': 'M/d/y',\n 'yMEd': 'E, M/d/y',\n 'yMMM': 'MMM y',\n 'yMMMd': 'MMM d, y',\n 'yMMMEd': 'E, MMM d, y',\n 'yMMMM': 'MMMM y'\n }\n }\n },\n 'islamic': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Muh.',\n '2': 'Saf.',\n '3': 'Rab. I',\n '4': 'Rab. II',\n '5': 'Jum. I',\n '6': 'Jum. II',\n '7': 'Raj.',\n '8': 'Sha.',\n '9': 'Ram.',\n '10': 'Shaw.',\n '11': 'Dhuʻl-Q.',\n '12': 'Dhuʻl-H.'\n },\n 'narrow': {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '10': '10',\n '11': '11',\n '12': '12'\n },\n 'wide': {\n '1': 'Muharram',\n '2': 'Safar',\n '3': 'Rabiʻ I',\n '4': 'Rabiʻ II',\n '5': 'Jumada I',\n '6': 'Jumada II',\n '7': 'Rajab',\n '8': 'Shaʻban',\n '9': 'Ramadan',\n '10': 'Shawwal',\n '11': 'Dhuʻl-Qiʻdah',\n '12': 'Dhuʻl-Hijjah'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'AH'\n },\n 'eraAbbr': {\n '0': 'AH'\n },\n 'eraNarrow': {\n '0': 'AH'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y G',\n 'long': 'MMMM d, y G',\n 'medium': 'MMM d, y G',\n 'short': 'M/d/y GGGGG'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y G',\n 'yyyy': 'y G',\n 'yyyyM': 'M/y GGGGG',\n 'yyyyMd': 'M/d/y GGGGG',\n 'yyyyMEd': 'E, M/d/y GGGGG',\n 'yyyyMMM': 'MMM y G',\n 'yyyyMMMd': 'MMM d, y G',\n 'yyyyMMMEd': 'E, MMM d, y G',\n 'yyyyMMMM': 'MMMM y G',\n 'yyyyQQQ': 'QQQ y G',\n 'yyyyQQQQ': 'QQQQ y G'\n }\n }\n }\n },\n 'timeZoneNames': {\n 'hourFormat': '+HH:mm;-HH:mm',\n 'gmtFormat': 'GMT{0}',\n 'gmtZeroFormat': 'GMT'\n }\n },\n 'numbers': {\n 'currencies': {\n 'USD': {\n 'displayName': 'US Dollar',\n 'symbol': '$',\n 'symbol-alt-narrow': '$'\n },\n 'EUR': {\n 'displayName': 'Euro',\n 'symbol': '€',\n 'symbol-alt-narrow': '€'\n },\n 'GBP': {\n 'displayName': 'British Pound',\n 'symbol-alt-narrow': '£'\n }\n },\n 'defaultNumberingSystem': 'latn',\n 'minimumGroupingDigits': '1',\n 'symbols-numberSystem-latn': {\n 'decimal': '.',\n 'group': ',',\n 'list': ';',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'exponential': 'E',\n 'superscriptingExponent': '×',\n 'perMille': '‰',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'timeSeparator': ':'\n },\n 'decimalFormats-numberSystem-latn': {\n 'standard': '#,##0.###'\n },\n 'percentFormats-numberSystem-latn': {\n 'standard': '#,##0%'\n },\n 'currencyFormats-numberSystem-latn': {\n 'standard': '¤#,##0.00',\n 'accounting': '¤#,##0.00;(¤#,##0.00)'\n },\n 'scientificFormats-numberSystem-latn': {\n 'standard': '#E0'\n }\n }\n };\n IntlBase.blazorDefaultObject = {\n 'numbers': {\n 'mapper': {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9'\n },\n 'mapperDigits': '0123456789',\n 'numberSymbols': {\n 'decimal': '.',\n 'group': ',',\n 'plusSign': '+',\n 'minusSign': '-',\n 'percentSign': '%',\n 'nan': 'NaN',\n 'timeSeparator': ':',\n 'infinity': '∞'\n },\n 'timeSeparator': ':',\n 'currencySymbol': '$',\n 'currencypData': {\n 'nlead': '$',\n 'nend': '',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentpData': {\n 'nlead': '',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentnData': {\n 'nlead': '-',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'currencynData': {\n 'nlead': '($',\n 'nend': ')',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalnData': {\n 'nlead': '-',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalpData': {\n 'nlead': '',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n }\n },\n 'dates': {\n 'dayPeriods': {\n 'am': 'AM',\n 'pm': 'PM'\n },\n 'dateSeperator': '/',\n 'days': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n },\n 'months': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n },\n 'eras': {\n '1': 'AD'\n }\n }\n };\n /* tslint:enable:quotemark */\n IntlBase.monthIndex = {\n 3: 'abbreviated',\n 4: 'wide',\n 5: 'narrow',\n 1: 'abbreviated'\n };\n /**\n *\n */\n IntlBase.month = 'months';\n IntlBase.days = 'days';\n /**\n * Default numerber Object\n */\n IntlBase.patternMatcher = {\n C: 'currency',\n P: 'percent',\n N: 'decimal',\n A: 'currency',\n E: 'scientific'\n };\n /**\n * Returns the resultant pattern based on the skeleton, dateObject and the type provided\n *\n * @private\n * @param {string} skeleton ?\n * @param {Object} dateObject ?\n * @param {string} type ?\n * @param {boolean} isIslamic ?\n * @param {string} blazorCulture ?\n * @returns {string} ?\n */\n function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {\n var resPattern;\n var iType = type || 'date';\n if (blazorCulture) {\n resPattern = compareBlazorDateFormats({ skeleton: skeleton }, blazorCulture).format ||\n compareBlazorDateFormats({ skeleton: 'd' }, 'en-US').format;\n }\n else {\n if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {\n resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);\n if (iType === 'dateTime') {\n var dPattern = getValue('dateFormats.' + skeleton, dateObject);\n var tPattern = getValue('timeFormats.' + skeleton, dateObject);\n resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);\n }\n }\n else {\n resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);\n }\n if (isUndefined(resPattern) && skeleton === 'yMd') {\n resPattern = 'M/d/y';\n }\n }\n return resPattern;\n }\n IntlBase.getResultantPattern = getResultantPattern;\n /**\n * Returns the dependable object for provided cldr data and culture\n *\n * @private\n * @param {Object} cldr ?\n * @param {string} culture ?\n * @param {string} mode ?\n * @param {boolean} isNumber ?\n * @returns {any} ?\n */\n function getDependables(cldr, culture, mode, isNumber) {\n var ret = {};\n var calendartype = mode || 'gregorian';\n ret.parserObject = parser.getMainObject(cldr, culture) || (isBlazor() ? IntlBase.blazorDefaultObject : IntlBase.defaultObject);\n if (isNumber) {\n ret.numericObject = getValue('numbers', ret.parserObject);\n }\n else {\n var dateString = isBlazor() ? 'dates' : ('dates.calendars.' + calendartype);\n ret.dateObject = getValue(dateString, ret.parserObject);\n }\n return ret;\n }\n IntlBase.getDependables = getDependables;\n /**\n * Returns the symbol pattern for provided parameters\n *\n * @private\n * @param {string} type ?\n * @param {string} numSystem ?\n * @param {Object} obj ?\n * @param {boolean} isAccount ?\n * @returns {string} ?\n */\n function getSymbolPattern(type, numSystem, obj, isAccount) {\n return getValue(type + 'Formats-numberSystem-' +\n numSystem + (isAccount ? '.accounting' : '.standard'), obj) || (isAccount ? getValue(type + 'Formats-numberSystem-' +\n numSystem + '.standard', obj) : '');\n }\n IntlBase.getSymbolPattern = getSymbolPattern;\n /**\n *\n * @param {string} format ?\n * @returns {string} ?\n */\n function ConvertDateToWeekFormat(format) {\n var convertMapper = format.match(IntlBase.dateConverterMapper);\n if (convertMapper && isBlazor()) {\n var tempString = convertMapper[0].length === 3 ? 'EEE' : 'EEEE';\n return format.replace(IntlBase.dateConverterMapper, tempString);\n }\n return format;\n }\n IntlBase.ConvertDateToWeekFormat = ConvertDateToWeekFormat;\n /**\n *\n * @param {DateFormatOptions} formatOptions ?\n * @param {string} culture ?\n * @returns {DateFormatOptions} ?\n */\n function compareBlazorDateFormats(formatOptions, culture) {\n var format = formatOptions.format || formatOptions.skeleton;\n var curFormatMapper = getValue((culture || 'en-US') + '.' + format, blazorCultureFormats);\n if (!curFormatMapper) {\n curFormatMapper = getValue('en-US.' + format, blazorCultureFormats);\n }\n if (curFormatMapper) {\n curFormatMapper = ConvertDateToWeekFormat(curFormatMapper);\n formatOptions.format = curFormatMapper.replace(/tt/, 'a');\n }\n return formatOptions;\n }\n IntlBase.compareBlazorDateFormats = compareBlazorDateFormats;\n /**\n * Returns proper numeric skeleton\n *\n * @private\n * @param {string} skeleton ?\n * @returns {any} ?\n */\n function getProperNumericSkeleton(skeleton) {\n var matches = skeleton.match(IntlBase.formatRegex);\n var ret = {};\n var pattern = matches[1].toUpperCase();\n ret.isAccount = (pattern === 'A');\n ret.type = IntlBase.patternMatcher[pattern];\n if (skeleton.length > 1) {\n ret.fractionDigits = parseInt(matches[2], 10);\n }\n return ret;\n }\n IntlBase.getProperNumericSkeleton = getProperNumericSkeleton;\n /**\n * Returns format data for number formatting like minimum fraction, maximum fraction, etc..,\n *\n * @private\n * @param {string} pattern ?\n * @param {boolean} needFraction ?\n * @param {string} cSymbol ?\n * @param {boolean} fractionOnly ?\n * @returns {any} ?\n */\n function getFormatData(pattern, needFraction, cSymbol, fractionOnly) {\n var nData = fractionOnly ? {} : { nlead: '', nend: '' };\n var match = pattern.match(IntlBase.customRegex);\n if (match) {\n if (!fractionOnly) {\n nData.nlead = changeCurrencySymbol(match[1], cSymbol);\n nData.nend = changeCurrencySymbol(match[10], cSymbol);\n nData.groupPattern = match[4];\n }\n var fraction = match[7];\n if (fraction && needFraction) {\n var fmatch = fraction.match(fractionRegex);\n if (!isNullOrUndefined(fmatch)) {\n nData.minimumFraction = fmatch.length;\n }\n else {\n nData.minimumFraction = 0;\n }\n nData.maximumFraction = fraction.length - 1;\n }\n }\n return nData;\n }\n IntlBase.getFormatData = getFormatData;\n /**\n * Changes currency symbol\n *\n * @private\n * @param {string} val ?\n * @param {string} sym ?\n * @returns {string} ?\n */\n function changeCurrencySymbol(val, sym) {\n if (val) {\n val = val.replace(IntlBase.defaultCurrency, sym);\n return (sym === '') ? val.trim() : val;\n }\n return '';\n }\n IntlBase.changeCurrencySymbol = changeCurrencySymbol;\n /**\n * Returns currency symbol based on currency code ?\n *\n * @private\n * @param {Object} numericObject ?\n * @param {string} currencyCode ?\n * @param {string} altSymbol ?\n * @returns {string} ?\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol) {\n var symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n var getCurrency = getValue('currencies.' + currencyCode + symbol, numericObject) ||\n getValue('currencies.' + currencyCode + '.symbol-alt-narrow', numericObject) || '$';\n return getCurrency;\n }\n IntlBase.getCurrencySymbol = getCurrencySymbol;\n /**\n * Returns formatting options for custom number format\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {any} obj ?\n * @returns {any} ?\n */\n function customFormat(format, dOptions, obj) {\n var options = {};\n var formatSplit = format.split(';');\n var data = ['pData', 'nData', 'zeroData'];\n for (var i = 0; i < formatSplit.length; i++) {\n options[data[i]] = customNumberFormat(formatSplit[i], dOptions, obj);\n }\n if (isNullOrUndefined(options.nData)) {\n options.nData = extend({}, options.pData);\n options.nData.nlead = isNullOrUndefined(dOptions) ? '-' + options.nData.nlead : dOptions.minusSymbol + options.nData.nlead;\n }\n return options;\n }\n IntlBase.customFormat = customFormat;\n /**\n * Returns custom formatting options\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {Object} numObject ?\n * @returns {any} ?\n */\n function customNumberFormat(format, dOptions, numObject) {\n var cOptions = { type: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 };\n var pattern = format.match(IntlBase.customRegex);\n if (isNullOrUndefined(pattern) || (pattern[5] === '' && format !== 'N/A')) {\n cOptions.type = undefined;\n return cOptions;\n }\n cOptions.nlead = pattern[1];\n cOptions.nend = pattern[10];\n var integerPart = pattern[6];\n var spaceCapture = integerPart.match(/\\ $/g) ? true : false;\n var spaceGrouping = integerPart.replace(/\\ $/g, '').indexOf(' ') !== -1;\n cOptions.useGrouping = integerPart.indexOf(',') !== -1 || spaceGrouping;\n integerPart = integerPart.replace(/,/g, '');\n var fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n dOptions.isCustomFormat = true;\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n }\n else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n var symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n cOptions.groupSeparator = spaceGrouping ? ' ' : dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/'/g, '');\n cOptions.nend = spaceCapture ? ' ' + cOptions.nend.replace(/'/g, '') : cOptions.nend.replace(/'/g, '');\n }\n return cOptions;\n }\n IntlBase.customNumberFormat = customNumberFormat;\n /**\n * Returns formatting options for currency or percent type\n *\n * @private\n * @param {string[]} parts ?\n * @param {string} actual ?\n * @param {string} symbol ?\n * @returns {any} ?\n */\n function isCurrencyPercent(parts, actual, symbol) {\n var options = { nlead: parts[0], nend: parts[1] };\n for (var i = 0; i < 2; i++) {\n var part = parts[parseInt(i.toString(), 10)];\n var loc = part.indexOf(actual);\n if ((loc !== -1) && ((loc < part.indexOf('\\'')) || (loc > part.lastIndexOf('\\'')))) {\n options[typeMapper[i]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n options[typeMapper[actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n *\n * @private\n * @param {Object} dateObj ?\n * @returns {string} ?\n */\n function getDateSeparator(dateObj) {\n var value = (getValue('dateFormats.short', dateObj) || '').match(/[d‏M‏]([^d‏M])[d‏M‏]/i);\n return value ? value[1] : '/';\n }\n IntlBase.getDateSeparator = getDateSeparator;\n /**\n * Returns Native Date Time pattern\n *\n * @private\n * @param {string} culture ?\n * @param {DateFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcelFormat ?\n * @returns {string} ?\n */\n function getActualDateTimeFormat(culture, options, cldr, isExcelFormat) {\n var dependable = getDependables(cldr, culture, options.calendar);\n if (isBlazor()) {\n options = compareBlazorDateFormats(options, culture);\n }\n var actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);\n if (isExcelFormat) {\n actualPattern = actualPattern.replace(patternRegex, function (pattern) {\n return patternMatch[pattern];\n });\n if (actualPattern.indexOf('z') !== -1) {\n var tLength = actualPattern.match(/z/g).length;\n var timeZonePattern = void 0;\n var options_1 = { 'timeZone': {} };\n options_1.numMapper = parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n options_1.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n var value = new Date();\n var timezone = value.getTimezoneOffset();\n var pattern = (tLength < 4) ? '+H;-H' : options_1.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options_1.numMapper.timeSeparator);\n if (timezone === 0) {\n timeZonePattern = options_1.timeZone.gmtZeroFormat;\n }\n else {\n timeZonePattern = DateFormat.getTimeZoneValue(timezone, pattern);\n timeZonePattern = options_1.timeZone.gmtFormat.replace(/\\{0\\}/, timeZonePattern);\n }\n actualPattern = actualPattern.replace(/[z]+/, '\"' + timeZonePattern + '\"');\n }\n actualPattern = actualPattern.replace(/ $/, '');\n }\n return actualPattern;\n }\n IntlBase.getActualDateTimeFormat = getActualDateTimeFormat;\n /**\n *\n * @param {string} actual ?\n * @param {any} option ?\n * @returns {any} ?\n */\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n var split = actual.split(',');\n actual = (split[0] + getValue('numberMapper.numberSymbols.group', option) +\n split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option)));\n }\n else {\n actual = actual.replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n }\n return actual;\n }\n /**\n * Returns Native Number pattern\n *\n * @private\n * @param {string} culture ?\n * @param {NumberFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcel ?\n * @returns {string} ?\n */\n function getActualNumberFormat(culture, options, cldr, isExcel) {\n var dependable = getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numrericObject = dependable.numericObject;\n var minFrac;\n var curObj = {};\n var curMatch = (options.format || '').match(IntlBase.currencyFormatRegex);\n var type = IntlBase.formatRegex.test(options.format) ? getProperNumericSkeleton(options.format || 'N') : {};\n var dOptions = {};\n if (curMatch) {\n dOptions.numberMapper = isBlazor() ?\n extend({}, dependable.numericObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n var curCode = isBlazor() ? getValue('currencySymbol', dependable.numericObject) :\n getCurrencySymbol(dependable.numericObject, options.currency || defaultCurrencyCode, options.altSymbol);\n var symbolPattern = getSymbolPattern('currency', dOptions.numberMapper.numberSystem, dependable.numericObject, (/a/i).test(options.format));\n symbolPattern = symbolPattern.replace(/\\u00A4/g, curCode);\n var split = symbolPattern.split(';');\n curObj.hasNegativePattern = isBlazor() ? true : (split.length > 1);\n curObj.nData = isBlazor() ? getValue(type.type + 'nData', numrericObject) :\n getFormatData(split[1] || '-' + split[0], true, curCode);\n curObj.pData = isBlazor() ? getValue(type.type + 'pData', numrericObject) :\n getFormatData(split[0], false, curCode);\n if (!curMatch[2] && !options.minimumFractionDigits && !options.maximumFractionDigits) {\n minFrac = getFormatData(symbolPattern.split(';')[0], true, '', true).minimumFraction;\n }\n }\n var actualPattern;\n if ((IntlBase.formatRegex.test(options.format)) || !(options.format)) {\n extend(parseOptions, getProperNumericSkeleton(options.format || 'N'));\n parseOptions.custom = false;\n actualPattern = '###0';\n if (parseOptions.fractionDigits || options.minimumFractionDigits || options.maximumFractionDigits || minFrac) {\n var defaultMinimum = 0;\n if (parseOptions.fractionDigits) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseOptions.fractionDigits;\n }\n actualPattern = fractionDigitsPattern(actualPattern, minFrac || parseOptions.fractionDigits ||\n options.minimumFractionDigits || defaultMinimum, options.maximumFractionDigits || defaultMinimum);\n }\n if (options.minimumIntegerDigits) {\n actualPattern = minimumIntegerPattern(actualPattern, options.minimumIntegerDigits);\n }\n if (options.useGrouping) {\n actualPattern = groupingPattern(actualPattern);\n }\n if (parseOptions.type === 'currency' || (parseOptions.type && isBlazor())) {\n if (isBlazor() && parseOptions.type !== 'currency') {\n curObj.pData = getValue(parseOptions.type + 'pData', numrericObject);\n curObj.nData = getValue(parseOptions.type + 'nData', numrericObject);\n }\n var cPattern = actualPattern;\n actualPattern = curObj.pData.nlead + cPattern + curObj.pData.nend;\n if (curObj.hasNegativePattern || isBlazor()) {\n actualPattern += ';' + curObj.nData.nlead + cPattern + curObj.nData.nend;\n }\n }\n if (parseOptions.type === 'percent' && !isBlazor()) {\n actualPattern += ' %';\n }\n }\n else {\n actualPattern = options.format.replace(/'/g, '\"');\n }\n if (Object.keys(dOptions).length > 0) {\n actualPattern = !isExcel ? processSymbol(actualPattern, dOptions) : actualPattern;\n }\n return actualPattern;\n }\n IntlBase.getActualNumberFormat = getActualNumberFormat;\n /**\n *\n * @param {string} pattern ?\n * @param {number} minDigits ?\n * @param {number} maxDigits ?\n * @returns {string} ?\n */\n function fractionDigitsPattern(pattern, minDigits, maxDigits) {\n pattern += '.';\n for (var a = 0; a < minDigits; a++) {\n pattern += '0';\n }\n if (minDigits < maxDigits) {\n var diff = maxDigits - minDigits;\n for (var b = 0; b < diff; b++) {\n pattern += '#';\n }\n }\n return pattern;\n }\n IntlBase.fractionDigitsPattern = fractionDigitsPattern;\n /**\n *\n * @param {string} pattern ?\n * @param {number} digits ?\n * @returns {string} ?\n */\n function minimumIntegerPattern(pattern, digits) {\n var temp = pattern.split('.');\n var integer = '';\n for (var x = 0; x < digits; x++) {\n integer += '0';\n }\n return temp[1] ? (integer + '.' + temp[1]) : integer;\n }\n IntlBase.minimumIntegerPattern = minimumIntegerPattern;\n /**\n *\n * @param {string} pattern ?\n * @returns {string} ?\n */\n function groupingPattern(pattern) {\n var temp = pattern.split('.');\n var integer = temp[0];\n var no = 3 - integer.length % 3;\n var hash = (no && no === 1) ? '#' : (no === 2 ? '##' : '');\n integer = hash + integer;\n pattern = '';\n for (var x = integer.length - 1; x > 0; x = x - 3) {\n pattern = ',' + integer[x - 2] + integer[x - 1] + integer[parseInt(x.toString(), 10)] + pattern;\n }\n pattern = pattern.slice(1);\n return temp[1] ? (pattern + '.' + temp[1]) : pattern;\n }\n IntlBase.groupingPattern = groupingPattern;\n /**\n *\n * @param {string} culture ?\n * @param {Object} cldr ?\n * @returns {number} ?\n */\n function getWeekData(culture, cldr) {\n var firstDay = defaultFirstDay;\n var mapper = getValue('supplemental.weekData.firstDay', cldr);\n var iCulture = culture;\n if ((/en-/).test(iCulture)) {\n iCulture = iCulture.slice(3);\n }\n iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);\n if (mapper) {\n firstDay = mapper[\"\" + iCulture] || mapper[iCulture.slice(0, 2)] || defaultFirstDay;\n }\n return firstDayMapper[\"\" + firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param {any} pData ?\n * @param {string} aCurrency ?\n * @param {string} rCurrency ?\n * @returns {void} ?\n */\n function replaceBlazorCurrency(pData, aCurrency, rCurrency) {\n var iCurrency = getBlazorCurrencySymbol(rCurrency);\n if (aCurrency !== iCurrency) {\n for (var _i = 0, pData_1 = pData; _i < pData_1.length; _i++) {\n var data = pData_1[_i];\n data.nend = data.nend.replace(aCurrency, iCurrency);\n data.nlead = data.nlead.replace(aCurrency, iCurrency);\n }\n }\n }\n IntlBase.replaceBlazorCurrency = replaceBlazorCurrency;\n /**\n * @private\n * @param {Date} date ?\n * @returns {number} ?\n */\n function getWeekOfYear(date) {\n var newYear = new Date(date.getFullYear(), 0, 1);\n var day = newYear.getDay();\n var weeknum;\n day = (day >= 0 ? day : day + 7);\n var daynum = Math.floor((date.getTime() - newYear.getTime() -\n (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\n if (day < 4) {\n weeknum = Math.floor((daynum + day - 1) / 7) + 1;\n if (weeknum > 52) {\n var nYear = new Date(date.getFullYear() + 1, 0, 1);\n var nday = nYear.getDay();\n nday = nday >= 0 ? nday : nday + 7;\n weeknum = nday < 4 ? 1 : 53;\n }\n }\n else {\n weeknum = Math.floor((daynum + day - 1) / 7);\n }\n return weeknum;\n }\n IntlBase.getWeekOfYear = getWeekOfYear;\n})(IntlBase || (IntlBase = {}));\n","import { isNullOrUndefined, merge } from './util';\nvar headerRegex = /^(.*?):[ \\t]*([^\\r\\n]*)$/gm;\nvar defaultType = 'GET';\n/**\n * Ajax class provides ability to make asynchronous HTTP request to the server\n * ```typescript\n * var ajax = new Ajax(\"index.html\", \"GET\", true);\n * ajax.send().then(\n * function (value) {\n * console.log(value);\n * },\n * function (reason) {\n * console.log(reason);\n * });\n * ```\n */\nvar Ajax = /** @class */ (function () {\n /**\n * Constructor for Ajax class\n *\n * @param {string|Object} options ?\n * @param {string} type ?\n * @param {boolean} async ?\n * @returns defaultType any\n */\n function Ajax(options, type, async, contentType) {\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n *\n * @default true\n */\n this.mode = true;\n /**\n * A boolean value indicating whether to ignore the promise reject.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n this.options = {};\n if (typeof options === 'string') {\n this.url = options;\n this.type = type ? type.toUpperCase() : defaultType;\n this.mode = !isNullOrUndefined(async) ? async : true;\n }\n else if (typeof options === 'object') {\n this.options = options;\n merge(this, this.options);\n }\n this.type = this.type ? this.type.toUpperCase() : defaultType;\n this.contentType = (this.contentType !== undefined) ? this.contentType : contentType;\n }\n /**\n *\n * Send the request to server.\n *\n * @param {any} data - To send the user data\n * @return {Promise} ?\n */\n Ajax.prototype.send = function (data) {\n var _this = this;\n this.data = isNullOrUndefined(data) ? this.data : data;\n var eventArgs = {\n cancel: false,\n httpRequest: null\n };\n var promise = new Promise(function (resolve, reject) {\n _this.httpRequest = new XMLHttpRequest();\n _this.httpRequest.onreadystatechange = function () { _this.stateChange(resolve, reject); };\n if (!isNullOrUndefined(_this.onLoad)) {\n _this.httpRequest.onload = _this.onLoad;\n }\n if (!isNullOrUndefined(_this.onProgress)) {\n _this.httpRequest.onprogress = _this.onProgress;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onAbort)) {\n _this.httpRequest.onabort = _this.onAbort;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onError)) {\n _this.httpRequest.onerror = _this.onError;\n }\n //** Upload Events **/\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onUploadProgress)) {\n _this.httpRequest.upload.onprogress = _this.onUploadProgress;\n }\n _this.httpRequest.open(_this.type, _this.url, _this.mode);\n // Set default headers\n if (!isNullOrUndefined(_this.data) && _this.contentType !== null) {\n _this.httpRequest.setRequestHeader('Content-Type', _this.contentType || 'application/json; charset=utf-8');\n }\n if (_this.beforeSend) {\n eventArgs.httpRequest = _this.httpRequest;\n _this.beforeSend(eventArgs);\n }\n if (!eventArgs.cancel) {\n _this.httpRequest.send(!isNullOrUndefined(_this.data) ? _this.data : null);\n }\n });\n return promise;\n };\n Ajax.prototype.successHandler = function (data) {\n if (this.onSuccess) {\n this.onSuccess(data, this);\n }\n return data;\n };\n Ajax.prototype.failureHandler = function (reason) {\n if (this.onFailure) {\n this.onFailure(this.httpRequest);\n }\n return reason;\n };\n Ajax.prototype.stateChange = function (resolve, reject) {\n var data = this.httpRequest.responseText;\n if (this.dataType && this.dataType.toLowerCase() === 'json') {\n if (data === '') {\n data = undefined;\n }\n else {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // no exception handle\n }\n }\n }\n if (this.httpRequest.readyState === 4) {\n //success range should be 200 to 299\n if ((this.httpRequest.status >= 200 && this.httpRequest.status <= 299) || this.httpRequest.status === 304) {\n resolve(this.successHandler(data));\n }\n else {\n if (this.emitError) {\n reject(new Error(this.failureHandler(this.httpRequest.statusText)));\n }\n else {\n resolve();\n }\n }\n }\n };\n /**\n * To get the response header from XMLHttpRequest\n *\n * @param {string} key Key to search in the response header\n * @returns {string} ?\n */\n Ajax.prototype.getResponseHeader = function (key) {\n var responseHeaders;\n var header;\n // eslint-disable-next-line\n responseHeaders = {};\n var headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n while (headers) {\n responseHeaders[headers[1].toLowerCase()] = headers[2];\n headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n }\n // eslint-disable-next-line\n header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n };\n return Ajax;\n}());\nexport { Ajax };\n","import { isNullOrUndefined as isNOU, isObject, merge } from './util';\n/**\n * The Fetch class provides a way to make asynchronous network requests, typically to retrieve resources from a server.\n * ```typescript\n * var fetchApi = new Fetch('index.html', 'GET');\n * fetchApi.send()\n * .then((value) => {\n * console.log(value);\n * }).catch((error) => {\n * console.log(error);\n * });\n * ```\n */\nvar Fetch = /** @class */ (function () {\n /**\n * Constructor for Fetch class.\n *\n * @param {string|Object} options - Specifies the URL or Request object with URL to which the request is to be sent.\n * @param {string} type - Specifies which request method is to be used, such as GET, POST, etc.\n * @param {string} contentType - Specifies the content type of the request, which is used to indicate the original media type of the resource.\n */\n function Fetch(options, type, contentType) {\n /**\n * Specifies which request method is to be used, such as GET, POST, etc.\n *\n * @default GET\n */\n this.type = 'GET';\n /**\n * A boolean value indicating whether to reject the promise or not.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n if (typeof options === 'string') {\n this.url = options;\n this.type = !isNOU(type) ? type.toUpperCase() : this.type;\n this.contentType = contentType;\n }\n else if (isObject(options) && Object.keys(options).length > 0) {\n merge(this, options);\n }\n this.contentType = !isNOU(this.contentType) ? this.contentType : 'application/json; charset=utf-8';\n }\n /**\n * Send the request to server.\n *\n * @param {string|Object} data - Specifies the data that needs to be added to the request.\n * @returns {Promise} - Returns the response to a request.\n */\n Fetch.prototype.send = function (data) {\n var _this = this;\n var contentTypes = {\n 'application/json': 'json',\n 'multipart/form-data': 'formData',\n 'application/octet-stream': 'blob',\n 'application/x-www-form-urlencoded': 'formData'\n };\n try {\n if (isNOU(this.fetchRequest) && this.type === 'GET') {\n this.fetchRequest = new Request(this.url, { method: this.type });\n }\n else if (isNOU(this.fetchRequest)) {\n this.data = !isNOU(data) ? data : this.data;\n this.fetchRequest = new Request(this.url, {\n method: this.type,\n headers: { 'Content-Type': this.contentType },\n body: this.data\n });\n }\n var eventArgs = { cancel: false, fetchRequest: this.fetchRequest };\n this.triggerEvent(this['beforeSend'], eventArgs);\n if (eventArgs.cancel) {\n return null;\n }\n this.fetchResponse = fetch(this.fetchRequest);\n return this.fetchResponse.then(function (response) {\n _this.triggerEvent(_this['onLoad'], response);\n if (!response.ok) {\n throw response;\n }\n var responseType = 'text';\n for (var _i = 0, _a = Object.keys(contentTypes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (response.headers.get('Content-Type') && response.headers.get('Content-Type').indexOf(key) !== -1) {\n responseType = contentTypes[key];\n }\n }\n return response[responseType]();\n // eslint-disable-next-line\n }).then(function (data) {\n _this.triggerEvent(_this['onSuccess'], data, _this);\n return data;\n // eslint-disable-next-line\n }).catch(function (error) {\n var returnVal = {};\n if (_this.emitError) {\n _this.triggerEvent(_this['onFailure'], error);\n returnVal = Promise.reject(error);\n }\n return returnVal;\n });\n }\n catch (error) {\n return error;\n }\n };\n Fetch.prototype.triggerEvent = function (callback, data, instance) {\n if (!isNOU(callback) && typeof callback === 'function') {\n callback(data, instance);\n }\n };\n return Fetch;\n}());\nexport { Fetch };\n","import { isUndefined } from './util';\nvar REGX_MOBILE = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i;\nvar REGX_IE = /msie|trident/i;\nvar REGX_IE11 = /Trident\\/7\\./;\nvar REGX_IOS = /(ipad|iphone|ipod touch)/i;\nvar REGX_IOS7 = /(ipad|iphone|ipod touch);.*os 7_\\d|(ipad|iphone|ipod touch);.*os 8_\\d/i;\nvar REGX_ANDROID = /android/i;\nvar REGX_WINDOWS = /trident|windows phone|edge/i;\nvar REGX_VERSION = /(version)[ /]([\\w.]+)/i;\nvar REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ /]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ /]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ /]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ /]([\\w.]+)/i,\n SAFARI: /(safari)[ /]([\\w.]+)/i,\n WEBKIT: /(webkit)[ /]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.browserDetails = window.browserDetails || {};\n}\n/**\n * Get configuration details for Browser\n *\n * @private\n */\nvar Browser = /** @class */ (function () {\n function Browser() {\n }\n Browser.extractBrowserDetail = function () {\n var browserInfo = { culture: {} };\n var keys = Object.keys(REGX_BROWSER);\n var clientInfo = [];\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n clientInfo = Browser.userAgent.match(REGX_BROWSER[\"\" + key]);\n if (clientInfo) {\n browserInfo.name = (clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase());\n browserInfo.name = (clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name);\n browserInfo.version = clientInfo[2];\n browserInfo.culture.name = browserInfo.culture.language = navigator.language;\n // eslint-disable-next-line\n if (!!Browser.userAgent.match(REGX_IE11)) {\n browserInfo.name = 'msie';\n break;\n }\n var version = Browser.userAgent.match(REGX_VERSION);\n if (browserInfo.name === 'safari' && version) {\n browserInfo.version = version[2];\n }\n break;\n }\n }\n return browserInfo;\n };\n /**\n * To get events from the browser\n *\n * @param {string} event - type of event triggered.\n * @returns {boolean}\n */\n Browser.getEvent = function (event) {\n // eslint-disable-next-line\n var events = {\n start: {\n isPointer: 'pointerdown', isTouch: 'touchstart', isDevice: 'mousedown'\n },\n move: {\n isPointer: 'pointermove', isTouch: 'touchmove', isDevice: 'mousemove'\n },\n end: {\n isPointer: 'pointerup', isTouch: 'touchend', isDevice: 'mouseup'\n },\n cancel: {\n isPointer: 'pointercancel', isTouch: 'touchcancel', isDevice: 'mouseleave'\n }\n };\n return (Browser.isPointer ? events[\"\" + event].isPointer :\n (Browser.isTouch ? events[\"\" + event].isTouch + (!Browser.isDevice ? ' ' + events[\"\" + event].isDevice : '')\n : events[\"\" + event].isDevice));\n };\n /**\n * To get the Touch start event from browser\n *\n * @returns {string}\n */\n Browser.getTouchStartEvent = function () {\n return Browser.getEvent('start');\n };\n /**\n * To get the Touch end event from browser\n *\n * @returns {string}\n */\n Browser.getTouchEndEvent = function () {\n return Browser.getEvent('end');\n };\n /**\n * To get the Touch move event from browser\n *\n * @returns {string}\n */\n Browser.getTouchMoveEvent = function () {\n return Browser.getEvent('move');\n };\n /**\n * To cancel the touch event from browser\n *\n * @returns {string}\n */\n Browser.getTouchCancelEvent = function () {\n return Browser.getEvent('cancel');\n };\n /**\n * Check whether the browser on the iPad device is Safari or not\n *\n * @returns {boolean}\n */\n Browser.isSafari = function () {\n return (Browser.isDevice && Browser.isIos && Browser.isTouch && typeof window !== 'undefined'\n && window.navigator.userAgent.toLowerCase().indexOf('iphone') === -1\n && window.navigator.userAgent.toLowerCase().indexOf('safari') > -1);\n };\n /**\n * To get the value based on provided key and regX\n *\n * @param {string} key ?\n * @param {RegExp} regX ?\n * @returns {Object} ?\n */\n Browser.getValue = function (key, regX) {\n var browserDetails = typeof window !== 'undefined' ? window.browserDetails : {};\n if (typeof navigator !== 'undefined' && navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && Browser.isTouch === true && !REGX_BROWSER.CHROME.test(navigator.userAgent)) {\n browserDetails['isIos'] = true;\n browserDetails['isDevice'] = true;\n browserDetails['isTouch'] = true;\n browserDetails['isPointer'] = true;\n }\n if ('undefined' === typeof browserDetails[\"\" + key]) {\n return browserDetails[\"\" + key] = regX.test(Browser.userAgent);\n }\n return browserDetails[\"\" + key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties\n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n *\n * @param {string} uA ?\n */\n set: function (uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"info\", {\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n *\n * @returns {BrowserInfo} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIE\", {\n /**\n * Property is to get whether the userAgent is based IE.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIE', REGX_IE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isTouch\", {\n /**\n * Property is to get whether the browser has touch support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isTouch)) {\n return (window.browserDetails.isTouch =\n ('ontouchstart' in window.navigator) ||\n (window &&\n window.navigator &&\n (window.navigator.maxTouchPoints > 0)) || ('ontouchstart' in window));\n }\n return window.browserDetails.isTouch;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isPointer\", {\n /**\n * Property is to get whether the browser has Pointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = ('pointerEnabled' in window.navigator);\n }\n return window.browserDetails.isPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isMSPointer\", {\n /**\n * Property is to get whether the browser has MSPointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = ('msPointerEnabled' in window.navigator);\n }\n return window.browserDetails.isMSPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isDevice\", {\n /**\n * Property is to get whether the userAgent is device based.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isDevice', REGX_MOBILE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos\", {\n /**\n * Property is to get whether the userAgent is IOS.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos', REGX_IOS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos7\", {\n /**\n * Property is to get whether the userAgent is Ios7.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos7', REGX_IOS7);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isAndroid\", {\n /**\n * Property is to get whether the userAgent is Android.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWebView\", {\n /**\n * Property is to identify whether application ran in web view.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap)\n && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWindows\", {\n /**\n * Property is to get whether the userAgent is Windows.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchStartEvent\", {\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchMoveEvent\", {\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchEndEvent\", {\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchCancelEvent\", {\n /**\n * Property is to cancel the touch end event.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n },\n enumerable: true,\n configurable: true\n });\n /* istanbul ignore next */\n Browser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n return Browser;\n}());\nexport { Browser };\n","import { debounce, extend } from './util';\nimport { Browser } from './browser';\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * ```html\n *
    \n * \n * ```\n */\nvar EventHandler = /** @class */ (function () {\n function EventHandler() {\n }\n // to get the event data based on element\n EventHandler.addOrGetEventData = function (element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n }\n else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n };\n /**\n * Add an event to the specified DOM element.\n *\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} intDebounce - Specifies at what interval given event listener should be triggered.\n * @returns {Function} ?\n */\n EventHandler.add = function (element, eventName, listener, bindTo, intDebounce) {\n var eventData = EventHandler.addOrGetEventData(element);\n var debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n }\n else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n var event = eventName.split(' ');\n for (var i = 0; i < event.length; i++) {\n eventData.push({\n name: event[parseInt(i.toString(), 10)],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener);\n }\n else {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener, { passive: false });\n }\n }\n return debounceListener;\n };\n /**\n * Remove an event listener that has been attached before.\n *\n * @param {any} element - Specifies the target html element to remove the event\n * @param {string} eventName - A string that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @returns {void} ?\n */\n EventHandler.remove = function (element, eventName, listener) {\n var eventData = EventHandler.addOrGetEventData(element);\n var event = eventName.split(' ');\n var _loop_1 = function (j) {\n var index = -1;\n var debounceListener;\n if (eventData && eventData.length !== 0) {\n eventData.some(function (x, i) {\n return x.name === event[parseInt(j.toString(), 10)] && x.listener === listener ?\n (index = i, debounceListener = x.debounce, true) : false;\n });\n }\n if (index !== -1) {\n eventData.splice(index, 1);\n }\n if (debounceListener) {\n element.removeEventListener(event[parseInt(j.toString(), 10)], debounceListener);\n }\n };\n for (var j = 0; j < event.length; j++) {\n _loop_1(j);\n }\n };\n /**\n * Clear all the event listeners that has been previously attached to the element.\n *\n * @param {any} element - Specifies the target html element to clear the events\n * @returns {void} ?\n */\n EventHandler.clearEvents = function (element) {\n var eventData;\n var copyData;\n // eslint-disable-next-line\n eventData = EventHandler.addOrGetEventData(element);\n // eslint-disable-next-line\n copyData = extend([], copyData, eventData);\n for (var i = 0; i < copyData.length; i++) {\n var parseValue = copyData[parseInt(i.toString(), 10)];\n element.removeEventListener(parseValue.name, parseValue.debounce);\n eventData.shift();\n }\n };\n /**\n * Trigger particular event of the element.\n *\n * @param {any} element - Specifies the target html element to trigger the events\n * @param {string} eventName - Specifies the event to trigger for the specified element.\n * Can be a custom event, or any of the standard events.\n * @param {any} eventProp - Additional parameters to pass on to the event properties\n * @returns {void} ?\n */\n EventHandler.trigger = function (element, eventName, eventProp) {\n var eventData = EventHandler.addOrGetEventData(element);\n for (var _i = 0, eventData_1 = eventData; _i < eventData_1.length; _i++) {\n var event_1 = eventData_1[_i];\n if (event_1.name === eventName) {\n event_1.debounce.call(this, eventProp);\n }\n }\n };\n return EventHandler;\n}());\nexport { EventHandler };\n","/**\n * Functions related to dom operations.\n */\nimport { EventHandler } from './event-handler';\nimport { isNullOrUndefined, getValue, setValue, isObject, extend } from './util';\nvar SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n *\n * @param {string} tagName - Name of the tag, id and class names.\n * @param {ElementProperties} properties - Object to set properties in the element.\n * @param {ElementProperties} properties.id - To set the id to the created element.\n * @param {ElementProperties} properties.className - To add classes to the element.\n * @param {ElementProperties} properties.innerHTML - To set the innerHTML to element.\n * @param {ElementProperties} properties.styles - To set the some custom styles to element.\n * @param {ElementProperties} properties.attrs - To set the attributes to element.\n * @returns {any} ?\n * @private\n */\nexport function createElement(tagName, properties) {\n var element = (SVG_REG.test(tagName) ? document.createElementNS('http://www.w3.org/2000/svg', tagName) : document.createElement(tagName));\n if (typeof (properties) === 'undefined') {\n return element;\n }\n element.innerHTML = (properties.innerHTML ? properties.innerHTML : '');\n if (properties.className !== undefined) {\n element.className = properties.className;\n }\n if (properties.id !== undefined) {\n element.id = properties.id;\n }\n if (properties.styles !== undefined) {\n element.setAttribute('style', properties.styles);\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to add a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function addClass(elements, classes) {\n var classList = getClassList(classes);\n var regExp = RegExp;\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, classList_1 = classList; _b < classList_1.length; _b++) {\n var className = classList_1[_b];\n if (isObject(ele)) {\n var curClass = getValue('attributes.className', ele);\n if (isNullOrUndefined(curClass)) {\n setValue('attributes.className', className, ele);\n }\n else if (!new regExp('\\\\b' + className + '\\\\b', 'i').test(curClass)) {\n setValue('attributes.className', curClass + ' ' + className, ele);\n }\n }\n else {\n if (!ele.classList.contains(className)) {\n ele.classList.add(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function removeClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n var flag = isObject(ele);\n var canRemove = flag ? getValue('attributes.className', ele) : ele.className !== '';\n if (canRemove) {\n for (var _b = 0, classList_2 = classList; _b < classList_2.length; _b++) {\n var className = classList_2[_b];\n if (flag) {\n var classes_1 = getValue('attributes.className', ele);\n var classArr = classes_1.split(' ');\n var index = classArr.indexOf(className);\n if (index !== -1) {\n classArr.splice(index, 1);\n }\n setValue('attributes.className', classArr.join(' '), ele);\n }\n else {\n ele.classList.remove(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to get classlist.\n *\n * @param {string | string[]} classes - An element the need to check visibility\n * @returns {string[]} ?\n * @private\n */\nfunction getClassList(classes) {\n var classList = [];\n if (typeof classes === 'string') {\n classList.push(classes);\n }\n else {\n classList = classes;\n }\n return classList;\n}\n/**\n * The function used to check element is visible or not.\n *\n * @param {Element|Node} element - An element the need to check visibility\n * @returns {boolean} ?\n * @private\n */\nexport function isVisible(element) {\n var ele = element;\n return (ele.style.visibility === '' && ele.offsetWidth > 0);\n}\n/**\n * The function used to insert an array of elements into a first of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to prepend.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function prepend(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.insertBefore(docFrag, toElement.firstElementChild);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to append.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function append(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n if (fromElements instanceof NodeList) {\n while (fromElements.length > 0) {\n docFrag.appendChild(fromElements[0]);\n }\n }\n else {\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n *\n * @param {Element} ele - An element is going to evaluate the script\n * @returns {void} ?\n */\nfunction executeScript(ele) {\n var eleArray = ele.querySelectorAll('script');\n eleArray.forEach(function (element) {\n var script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from parentnode\n *\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function detach(element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n}\n/**\n * The function used to remove the element from Dom also clear the bounded events\n *\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @returns {void} ?\n * @private\n */\nexport function remove(element) {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n}\n/**\n * The function helps to set multiple attributes to an element\n *\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {string} attributes - JSON Object that is going to as attributes.\n * @returns {Element} ?\n * @private\n */\n// eslint-disable-next-line\nexport function attributes(element, attributes) {\n var keys = Object.keys(attributes);\n var ele = element;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (isObject(ele)) {\n var iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[\"\" + iKey] = attributes[\"\" + key];\n }\n else {\n ele.setAttribute(key, attributes[\"\" + key]);\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function select(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n return context.querySelector(selector);\n}\n/**\n * The function selects an array of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {HTMLElement[]} ?\n * @private\n */\n// eslint-disable-next-line\nexport function selectAll(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n}\n/**\n * The function selects an id of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @returns {string} ?\n * @private\n */\nfunction querySelectId(selector) {\n var charRegex = /(!|\"|\\$|%|&|'|\\(|\\)|\\*|\\/|:|;|<|=|\\?|@|\\]|\\^|`|{|}|\\||\\+|~)/g;\n if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {\n var idList = selector.split(',');\n for (var i = 0; i < idList.length; i++) {\n var list = idList[parseInt(i.toString(), 10)].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[parseInt(j.toString(), 10)].indexOf('#') > -1) {\n if (!list[parseInt(j.toString(), 10)].match(/\\[.*\\]/)) {\n var splitId = list[parseInt(j.toString(), 10)].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[parseInt(j.toString(), 10)].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[parseInt(j.toString(), 10)] = setId.join('.');\n }\n }\n }\n }\n idList[parseInt(i.toString(), 10)] = list.join(' ');\n }\n return idList.join(',');\n }\n return selector;\n}\n/**\n * Returns single closest parent element based on class selector.\n *\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @returns {Element} ?\n * @private\n */\nexport function closest(element, selector) {\n var el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n *\n * @param {Element|Node} element - An element that need to get siblings.\n * @returns {Element[]} ?\n * @private\n */\nexport function siblings(element) {\n var siblings = [];\n var childNodes = Array.prototype.slice.call(element.parentNode.childNodes);\n for (var _i = 0, childNodes_1 = childNodes; _i < childNodes_1.length; _i++) {\n var curNode = childNodes_1[_i];\n if (curNode.nodeType === Node.ELEMENT_NODE && element !== curNode) {\n siblings.push(curNode);\n }\n }\n return siblings;\n}\n/**\n * set the value if not exist. Otherwise set the existing value\n *\n * @param {HTMLElement} element - An element to which we need to set value.\n * @param {string} property - Property need to get or set.\n * @param {string} value - value need to set.\n * @returns {string} ?\n * @private\n */\nexport function getAttributeOrDefault(element, property, value) {\n var attrVal;\n var isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n }\n else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n }\n else {\n element.attributes[\"\" + property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n *\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @returns {void} ?\n * @private\n */\nexport function setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n Object.keys(attrs).forEach(function (key) {\n // eslint-disable-next-line\n element.style[key] = attrs[key];\n });\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n *\n * @param {Element} element - Element for add and remove classes\n * @param {string[]} addClasses - List of classes need to be add to the element\n * @param {string[]} removeClasses - List of classes need to be remove from the element\n * @returns {void} ?\n * @private\n */\nexport function classList(element, addClasses, removeClasses) {\n addClass([element], addClasses);\n removeClass([element], removeClasses);\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function matches(element, selector) {\n // eslint-disable-next-line\n var matches = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (matches) {\n return matches.call(element, selector);\n }\n else {\n return [].indexOf.call(document.querySelectorAll(selector), element) !== -1;\n }\n}\n/**\n * Method to get the html text from DOM.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} innerHTML - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function includeInnerHTML(ele, innerHTML) {\n ele.innerHTML = innerHTML;\n}\n/**\n * Method to get the containsclass.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} className - String selector which element will satisfy.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function containsClass(ele, className) {\n if (isObject(ele)) {\n // eslint-disable-next-line\n return new RegExp('\\\\b' + className + '\\\\b', 'i').test(ele.attributes.className);\n }\n else {\n return ele.classList.contains(className);\n }\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Object} element - Element to compare with the selector.\n * @param {boolean} deep ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\n }\n }\n else {\n return element.cloneNode(deep);\n }\n}\n","import { isUndefined, isNullOrUndefined, merge, setImmediate, setValue, isBlazor, getValue, extend } from './util';\nimport { addClass, removeClass } from './dom';\nimport { Observer } from './observer';\nvar isColEName = new RegExp(']');\n/* tslint:enable:no-any */\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n *\n * @private\n */\nvar Base = /** @class */ (function () {\n /**\n * Base constructor accept options and element\n *\n * @param {Object} options ?\n * @param {string} element ?\n */\n function Base(options, element) {\n this.isRendered = false;\n this.isComplexArraySetter = false;\n this.isServerRendered = false;\n this.allowServerDataBinding = true;\n this.isProtectedOnChange = true;\n this.properties = {};\n this.changedProperties = {};\n this.oldProperties = {};\n this.bulkChanges = {};\n this.refreshing = false;\n this.ignoreCollectionWatch = false;\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.childChangedProperties = {};\n this.modelObserver = new Observer(this);\n if (!isUndefined(element)) {\n if ('string' === typeof (element)) {\n this.element = document.querySelector(element);\n }\n else {\n this.element = element;\n }\n if (!isNullOrUndefined(this.element)) {\n this.isProtectedOnChange = false;\n this.addInstance();\n }\n }\n if (!isUndefined(options)) {\n this.setProperties(options, true);\n }\n this.isDestroyed = false;\n }\n /** Property base section */\n /**\n * Function used to set bunch of property at a time.\n *\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange ? - Specifies to true when we set properties.\n * @returns {void} ?\n */\n Base.prototype.setProperties = function (prop, muteOnChange) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = !!muteOnChange;\n merge(this, prop);\n if (muteOnChange !== true) {\n merge(this.changedProperties, prop);\n this.dataBind();\n }\n else if (isBlazor() && this.isRendered) {\n this.serverDataBind(prop);\n }\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.isProtectedOnChange = prevDetection;\n };\n /**\n * Calls for child element data bind\n *\n * @param {Object} obj ?\n * @param {Object} parent ?\n * @returns {void} ?\n */\n // tslint:disable-next-line:no-any\n Base.callChildDataBind = function (obj, parent) {\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (parent[\"\" + key] instanceof Array) {\n for (var _a = 0, _b = parent[\"\" + key]; _a < _b.length; _a++) {\n var obj_1 = _b[_a];\n if (obj_1.dataBind !== undefined) {\n obj_1.dataBind();\n }\n }\n }\n else {\n parent[\"\" + key].dataBind();\n }\n }\n };\n Base.prototype.clearChanges = function () {\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.childChangedProperties = {};\n };\n /**\n * Bind property changes immediately to components\n *\n * @returns {void} ?\n */\n Base.prototype.dataBind = function () {\n Base.callChildDataBind(this.childChangedProperties, this);\n if (Object.getOwnPropertyNames(this.changedProperties).length) {\n var prevDetection = this.isProtectedOnChange;\n var newChanges = this.changedProperties;\n var oldChanges = this.oldProperties;\n this.clearChanges();\n this.isProtectedOnChange = true;\n this.onPropertyChanged(newChanges, oldChanges);\n this.isProtectedOnChange = prevDetection;\n }\n };\n /* tslint:disable:no-any */\n Base.prototype.serverDataBind = function (newChanges) {\n if (!isBlazor()) {\n return;\n }\n newChanges = newChanges ? newChanges : {};\n extend(this.bulkChanges, {}, newChanges, true);\n var sfBlazor = 'sfBlazor';\n if (this.allowServerDataBinding && window[\"\" + sfBlazor].updateModel) {\n window[\"\" + sfBlazor].updateModel(this);\n this.bulkChanges = {};\n }\n };\n /* tslint:enable:no-any */\n Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\n // tslint:disable-next-line:no-any\n var newChanges = {};\n newChanges[\"\" + key] = newValue;\n this.serverDataBind(newChanges);\n }\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.finalUpdate();\n this.finalUpdate = setImmediate(this.dataBind.bind(this));\n };\n /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} handler - Specifies the call to run when the event occurs.\n * @returns {void} ?\n */\n Base.prototype.addEventListener = function (eventName, handler) {\n this.modelObserver.on(eventName, handler);\n };\n /**\n * Removes the handler from the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} handler - Specifies the function to remove\n * @returns {void} ?\n */\n Base.prototype.removeEventListener = function (eventName, handler) {\n this.modelObserver.off(eventName, handler);\n };\n /**\n * Triggers the handlers in the specified event.\n *\n * @private\n * @param {string} eventName - Specifies the event to trigger for the specified component properties.\n * Can be a custom event, or any of the standard events.\n * @param {Event} eventProp - Additional parameters to pass on to the event properties\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it failured to call.\n * @returns {void} ?\n */\n Base.prototype.trigger = function (eventName, eventProp, successHandler, errorHandler) {\n var _this = this;\n if (this.isDestroyed !== true) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n var data = this.modelObserver.notify(eventName, eventProp, successHandler, errorHandler);\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n var blazor = 'Blazor';\n if (window[\"\" + blazor]) {\n var promise = handler.call(this, eventProp);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n data = promise;\n }\n else {\n promise.then(function (data) {\n if (successHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ?\n JSON.parse(data) : data;\n successHandler.call(_this, data);\n }\n }).catch(function (data) {\n if (errorHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n errorHandler.call(_this, data);\n }\n });\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n this.isProtectedOnChange = prevDetection;\n return data;\n }\n };\n /**\n * To maintain instance in base class\n *\n * @returns {void} ?\n */\n Base.prototype.addInstance = function () {\n // Add module class to the root element\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-lib', moduleClass]);\n if (!isNullOrUndefined(this.element.ej2_instances)) {\n this.element.ej2_instances.push(this);\n }\n else {\n setValue('ej2_instances', [this], this.element);\n }\n };\n /**\n * To remove the instance from the element\n *\n * @returns {void} ?\n */\n Base.prototype.destroy = function () {\n var _this = this;\n // eslint-disable-next-line\n this.element.ej2_instances =\n this.element.ej2_instances ?\n this.element.ej2_instances.filter(function (i) {\n if (proxyToRaw) {\n return proxyToRaw(i) !== proxyToRaw(_this);\n }\n return i !== _this;\n })\n : [];\n removeClass([this.element], ['e-' + this.getModuleName()]);\n if (this.element.ej2_instances.length === 0) {\n // Remove module class from the root element\n removeClass([this.element], ['e-lib']);\n }\n this.clearChanges();\n this.modelObserver.destroy();\n this.isDestroyed = true;\n };\n return Base;\n}());\nexport { Base };\n/**\n * Global function to get the component instance from the rendered element.\n *\n * @param {HTMLElement} elem Specifies the HTMLElement or element id string.\n * @param {string} comp Specifies the component module name or Component.\n * @returns {any} ?\n */\n// tslint:disable-next-line:no-any\nexport function getComponent(elem, comp) {\n var instance;\n var i;\n var ele = typeof elem === 'string' ? document.getElementById(elem) : elem;\n for (i = 0; i < ele.ej2_instances.length; i++) {\n instance = ele.ej2_instances[parseInt(i.toString(), 10)];\n if (typeof comp === 'string') {\n var compName = instance.getModuleName();\n if (comp === compName) {\n return instance;\n }\n }\n else {\n // tslint:disable-next-line:no-any\n if (instance instanceof comp) {\n return instance;\n }\n }\n }\n return undefined;\n}\n/**\n * Function to remove the child instances.\n *\n * @param {HTMLElement} element ?\n * @return {void}\n * @private\n */\n// tslint:disable-next-line:no-any\nexport function removeChildInstance(element) {\n // tslint:disable-next-line:no-any\n var childEle = [].slice.call(element.getElementsByClassName('e-control'));\n for (var i = 0; i < childEle.length; i++) {\n var compName = childEle[parseInt(i.toString(), 10)].classList[1].split('e-')[1];\n // tslint:disable-next-line:no-any\n var compInstance = getComponent(childEle[parseInt(i.toString(), 10)], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\nexport var proxyToRaw;\nexport var setProxyToRaw = function (toRaw) { proxyToRaw = toRaw; };\n","import { createInstance, isUndefined, merge, extend, getValue } from './util';\n/**\n * Returns the Class Object\n *\n * @param {ClassObject} instance - instance of ClassObject\n * @param {string} curKey - key of the current instance\n * @param {Object} defaultValue - default Value\n * @param {Object[]} type ?\n * @returns {ClassObject} ?\n */\n// eslint-disable-next-line\nfunction getObject(instance, curKey, defaultValue, type) {\n // eslint-disable-next-line\n if (!instance.properties.hasOwnProperty(curKey) || !(instance.properties[curKey] instanceof type)) {\n instance.properties[\"\" + curKey] = createInstance(type, [instance, curKey, defaultValue]);\n }\n return instance.properties[\"\" + curKey];\n}\n/**\n * Returns object array\n *\n * @param {ClassObject} instance ?\n * @param {string} curKey ?\n * @param {Object[]} defaultValue ?\n * @param {Object} type ?\n * @param {boolean} isSetter ?\n * @param {boolean} isFactory ?\n * @returns {Object[]} ?\n */\n// eslint-disable-next-line\nfunction getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactory) {\n var result = [];\n var len = defaultValue ? defaultValue.length : 0;\n for (var i = 0; i < len; i++) {\n var curType = type;\n if (isFactory) {\n curType = type(defaultValue[parseInt(i.toString(), 10)], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[parseInt(i.toString(), 10)], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[parseInt(i.toString(), 10)], false]));\n }\n }\n return result;\n}\n/**\n * Returns the properties of the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n this.properties[\"\" + curKey] = defaultValue;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n * Set the properties for the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[\"\" + curKey] !== newValue) {\n // eslint-disable-next-line\n var oldVal = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n this.saveChanges(curKey, newValue, oldVal);\n this.properties[\"\" + curKey] = newValue;\n }\n };\n}\n/**\n * Returns complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (this.properties.hasOwnProperty(curKey)) {\n return this.properties[\"\" + curKey];\n }\n else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var curType = type(newValue, this);\n getObject(this, curKey, defaultValue, curType).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n var _this = this;\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, type, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n var ignore = ((this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch)\n || this.ignoreCollectionWatch);\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('push') && !ignore) {\n ['push', 'pop'].forEach(function (extendFunc) {\n var descriptor = {\n value: complexArrayDefinedCallback(extendFunc, curKey, type, _this.properties[\"\" + curKey]).bind(_this),\n configurable: true\n };\n Object.defineProperty(_this.properties[\"\" + curKey], extendFunc, descriptor);\n });\n }\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('isComplexArray')) {\n Object.defineProperty(this.properties[\"\" + curKey], 'isComplexArray', { value: true });\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArraySetter(defaultValue, curKey, type) {\n return function (newValue) {\n this.isComplexArraySetter = true;\n var oldValueCollection = getObjectArray(this, curKey, defaultValue, type, false);\n var newValCollection = getObjectArray(this, curKey, newValue, type, true);\n this.isComplexArraySetter = false;\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n // eslint-disable-next-line\n var oldValueCollection = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n var newValCollection = getObjectArray(this, curKey, newValue, type, true, true);\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, curType, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {string} dFunc ?\n * @param {string} curKey ?\n * @param {Object} type ?\n * @param {Object} prop ?\n * @returns {Object} ?\n */\nfunction complexArrayDefinedCallback(dFunc, curKey, type, prop) {\n /* tslint:disable no-function-expression */\n return function () {\n var newValue = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newValue[_i] = arguments[_i];\n }\n var keyString = this.propName ? this.getParentKey() + '.' + curKey + '-' : curKey + '-';\n switch (dFunc) {\n case 'push':\n for (var i = 0; i < newValue.length; i++) {\n var newValueParse = newValue[parseInt(i.toString(), 10)];\n Array.prototype[\"\" + dFunc].apply(prop, [newValueParse]);\n var model_1 = getArrayModel(keyString + (prop.length - 1), newValueParse, !this.controlParent, dFunc);\n this.serverDataBind(model_1, newValue[parseInt(i.toString(), 10)], false, dFunc);\n }\n break;\n case 'pop':\n Array.prototype[\"\" + dFunc].apply(prop);\n // eslint-disable-next-line\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\n }\n return prop;\n };\n}\n/**\n *\n * @param {string} keyString ?\n * @param {Object} value ?\n * @param {boolean} isControlParent ?\n * @param {string} arrayFunction ?\n * @returns {Object} ?\n */\nfunction getArrayModel(keyString, value, isControlParent, arrayFunction) {\n var modelObject = keyString;\n if (isControlParent) {\n modelObject = {};\n modelObject[\"\" + keyString] = value;\n if (value && typeof value === 'object') {\n var action = 'ejsAction';\n modelObject[\"\" + keyString][\"\" + action] = arrayFunction;\n }\n }\n return modelObject;\n}\n// eslint-disable-next-line\n/**\n * Method used to create property. General syntax below.\n *\n * @param {Object} defaultValue - Specifies the default value of property.\n * @returns {PropertyDecorator} ?\n * ```\n * @Property('TypeScript')\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Property(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: propertySetter(defaultValue, key),\n get: propertyGetter(defaultValue, key),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'prop', defaultValue);\n };\n}\n/**\n * Method used to create complex property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Complex({},Type)\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Complex(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexSetter(defaultValue, key, type),\n get: complexGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex Factory property. General syntax below.\n *\n * @param {Function} type - Specifies the class factory type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @ComplexFactory(defaultType, factoryFunction)\n * propertyName: Type1 | Type2;\n * ```\n * @private\n */\nexport function ComplexFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexFactorySetter({}, key, type),\n get: complexFactoryGetter({}, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', {}, type);\n };\n}\n/**\n * Method used to create complex array property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Collection(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArraySetter(defaultValue, key, type),\n get: complexArrayGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex factory array property. General syntax below.\n *\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyCollectionInfo} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function CollectionFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArrayFactorySetter([], key, type),\n get: complexArrayFactoryGetter([], key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', {}, type);\n };\n}\n/**\n * Method used to create event property. General syntax below.\n *\n * @returns {PropertyDecorator} ?\n * ```\n * @Event(()=>{return true;})\n * ```\n * @private\n */\nexport function Event() {\n return function (target, key) {\n var eventDescriptor = {\n set: function (newValue) {\n var oldValue = this.properties[\"\" + key];\n if (oldValue !== newValue) {\n var finalContext = getParentContext(this, key);\n if (isUndefined(oldValue) === false) {\n finalContext.context.removeEventListener(finalContext.prefix, oldValue);\n }\n finalContext.context.addEventListener(finalContext.prefix, newValue);\n this.properties[\"\" + key] = newValue;\n }\n },\n get: propertyGetter(undefined, key),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, eventDescriptor);\n addPropertyCollection(target, key, 'event');\n };\n}\n/**\n * NotifyPropertyChanges is triggers the call back when the property has been changed.\n *\n * @param {Function} classConstructor ?\n * @returns {void} ?\n * ```\n * @NotifyPropertyChanges\n * class DemoClass implements INotifyPropertyChanged {\n *\n * @Property()\n * property1: string;\n *\n * dataBind: () => void;\n *\n * constructor() { }\n *\n * onPropertyChanged(newProp: any, oldProp: any) {\n * // Called when property changed\n * }\n * }\n * ```\n * @private\n */\n// eslint-disable-next-line\nexport function NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n *\n * @param {BuildInfo} target ?\n * @param {string} key ?\n * @param {string} propertyType ?\n * @param {Object} defaultValue ?\n * @param {Function} type ?\n * @returns {void} ?\n * @private\n */\nfunction addPropertyCollection(target, key, propertyType, defaultValue, type) {\n if (isUndefined(target.propList)) {\n target.propList = {\n props: [],\n complexProps: [],\n colProps: [],\n events: [],\n propNames: [],\n complexPropNames: [],\n colPropNames: [],\n eventNames: []\n };\n }\n // eslint-disable-next-line\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n // eslint-disable-next-line\n target.propList[propertyType + 'Names'].push(key);\n}\n/**\n * Returns an object containing the builder properties\n *\n * @param {Function} component ?\n * @returns {Object} ?\n * @private\n */\nfunction getBuilderProperties(component) {\n if (isUndefined(component.prototype.builderObject)) {\n component.prototype.builderObject = {\n properties: {}, propCollections: [], add: function () {\n this.isPropertyArray = true;\n this.propCollections.push(extend({}, this.properties, {}));\n }\n };\n var rex = /complex/;\n for (var _i = 0, _a = Object.keys(component.prototype.propList); _i < _a.length; _i++) {\n var key = _a[_i];\n var _loop_1 = function (prop) {\n if (rex.test(key)) {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n var childType = {};\n merge(childType, getBuilderProperties(prop.type));\n value(childType);\n var tempValue;\n if (!childType.isPropertyArray) {\n tempValue = extend({}, childType.properties, {});\n }\n else {\n tempValue = childType.propCollections;\n }\n this.properties[prop.propertyName] = tempValue;\n childType.properties = {};\n childType.propCollections = [];\n childType.isPropertyArray = false;\n return this;\n };\n }\n else {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n this.properties[prop.propertyName] = value;\n return this;\n };\n }\n };\n for (var _b = 0, _c = component.prototype.propList[\"\" + key]; _b < _c.length; _b++) {\n var prop = _c[_b];\n _loop_1(prop);\n }\n }\n }\n return component.prototype.builderObject;\n}\n/**\n * Method used to create builder for the components\n *\n * @param {any} component -specifies the target component for which builder to be created.\n * @returns {Object} ?\n * @private\n */\nexport function CreateBuilder(component) {\n var builderFunction = function (element) {\n this.element = element;\n return this;\n };\n var instanceFunction = function (element) {\n // eslint-disable-next-line\n if (!builderFunction.prototype.hasOwnProperty('create')) {\n builderFunction.prototype = getBuilderProperties(component);\n builderFunction.prototype.create = function () {\n var temp = extend({}, {}, this.properties);\n this.properties = {};\n return new component(temp, this.element);\n };\n }\n return new builderFunction(element);\n };\n return instanceFunction;\n}\n/**\n * Returns parent options for the object\n *\n * @param {Object} context ?\n * @param {string} prefix ?\n * @returns {ParentOption} ?\n * @private\n */\nfunction getParentContext(context, prefix) {\n // eslint-disable-next-line\n if (context.hasOwnProperty('parentObj') === false) {\n return { context: context, prefix: prefix };\n }\n else {\n var curText = getValue('propName', context);\n if (curText) {\n prefix = curText + '-' + prefix;\n }\n return getParentContext(getValue('parentObj', context), prefix);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { createElement, selectAll, closest } from './dom';\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { EventHandler } from './event-handler';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\n/**\n * The Animation framework provide options to animate the html DOM elements\n * ```typescript\n * let animeObject = new Animation({\n * name: 'SlideLeftIn',\n * duration: 1000\n * });\n * animeObject.animate('#anime1');\n * animeObject.animate('#anime2', { duration: 500 });\n * ```\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(options) {\n var _this = _super.call(this, options, undefined) || this;\n /**\n * @private\n */\n _this.easing = {\n ease: 'cubic-bezier(0.250, 0.100, 0.250, 1.000)',\n linear: 'cubic-bezier(0.250, 0.250, 0.750, 0.750)',\n easeIn: 'cubic-bezier(0.420, 0.000, 1.000, 1.000)',\n easeOut: 'cubic-bezier(0.000, 0.000, 0.580, 1.000)',\n easeInOut: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',\n elasticInOut: 'cubic-bezier(0.5,-0.58,0.38,1.81)',\n elasticIn: 'cubic-bezier(0.17,0.67,0.59,1.81)',\n elasticOut: 'cubic-bezier(0.7,-0.75,0.99,1.01)'\n };\n return _this;\n }\n Animation_1 = Animation;\n /**\n * Applies animation to the current element.\n *\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @returns {void} ?\n */\n Animation.prototype.animate = function (element, options) {\n options = !options ? {} : options;\n var model = this.getModel(options);\n if (typeof element === 'string') {\n var elements = Array.prototype.slice.call(selectAll(element, document));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element_1 = elements_1[_i];\n model.element = element_1;\n Animation_1.delayAnimation(model);\n }\n }\n else {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n };\n /**\n * Stop the animation effect on animated element.\n *\n * @param {HTMLElement} element - Element which needs to be stop the animation.\n * @param {AnimationOptions} model - Handling the animation model at stop function.\n * @return {void}\n */\n Animation.stop = function (element, model) {\n element.style.animation = '';\n element.removeAttribute('e-animate');\n var animationId = element.getAttribute('e-animation-id');\n if (animationId) {\n var frameId = parseInt(animationId, 10);\n cancelAnimationFrame(frameId);\n element.removeAttribute('e-animation-id');\n }\n if (model && model.end) {\n model.end.call(this, model);\n }\n };\n /**\n * Set delay to animation element\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.delayAnimation = function (model) {\n if (animationMode === 'Disable' || animationMode === GlobalAnimationMode.Disable) {\n if (model.begin) {\n model.begin.call(this, model);\n }\n if (model.end) {\n model.end.call(this, model);\n }\n }\n else {\n if (model.delay) {\n setTimeout(function () { Animation_1.applyAnimation(model); }, model.delay);\n }\n else {\n Animation_1.applyAnimation(model);\n }\n }\n };\n /**\n * Triggers animation\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.applyAnimation = function (model) {\n var _this = this;\n model.timeStamp = 0;\n var step = 0;\n var timerId = 0;\n var prevTimeStamp = 0;\n var duration = model.duration;\n model.element.setAttribute('e-animate', 'true');\n var startAnimation = function (timeStamp) {\n try {\n if (timeStamp) {\n // let step: number = model.timeStamp = timeStamp - startTime;\n /** phantomjs workaround for timestamp fix */\n prevTimeStamp = prevTimeStamp === 0 ? timeStamp : prevTimeStamp;\n model.timeStamp = (timeStamp + model.timeStamp) - prevTimeStamp;\n prevTimeStamp = timeStamp;\n /** phantomjs workaround end */\n // trigger animation begin event\n if (!step && model.begin) {\n model.begin.call(_this, model);\n }\n step = step + 1;\n var avg = model.timeStamp / step;\n if (model.timeStamp < duration && model.timeStamp + avg < duration && model.element.getAttribute('e-animate')) {\n // apply animation effect to the current element\n model.element.style.animation = model.name + ' ' + model.duration + 'ms ' + model.timingFunction;\n if (model.progress) {\n model.progress.call(_this, model);\n }\n // repeat requestAnimationFrame\n requestAnimationFrame(startAnimation);\n }\n else {\n // clear requestAnimationFrame\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n model.element.removeAttribute('e-animate');\n model.element.style.animation = '';\n if (model.end) {\n model.end.call(_this, model);\n }\n }\n }\n else {\n //startTime = performance.now();\n // set initial requestAnimationFrame\n timerId = requestAnimationFrame(startAnimation);\n model.element.setAttribute('e-animation-id', timerId.toString());\n }\n }\n catch (e) {\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n if (model.fail) {\n model.fail.call(_this, e);\n }\n }\n };\n startAnimation();\n };\n /**\n * Returns Animation Model\n *\n * @param {AnimationModel} options ?\n * @returns {AnimationModel} ?\n */\n Animation.prototype.getModel = function (options) {\n return {\n name: options.name || this.name,\n delay: options.delay || this.delay,\n duration: (options.duration !== undefined ? options.duration : this.duration),\n begin: options.begin || this.begin,\n end: options.end || this.end,\n fail: options.fail || this.fail,\n progress: options.progress || this.progress,\n timingFunction: this.easing[options.timingFunction] ? this.easing[options.timingFunction] :\n (options.timingFunction || this.easing[this.timingFunction])\n };\n };\n /**\n * @private\n * @param {AnimationModel} newProp ?\n * @param {AnimationModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Animation.prototype.onPropertyChanged = function (newProp, oldProp) {\n // no code needed\n };\n /**\n * Returns module name as animation\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.getModuleName = function () {\n return 'animation';\n };\n /**\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.destroy = function () {\n //Override base destroy;\n };\n var Animation_1;\n __decorate([\n Property('FadeIn')\n ], Animation.prototype, \"name\", void 0);\n __decorate([\n Property(400)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], Animation.prototype, \"timingFunction\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"begin\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"end\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"fail\", void 0);\n Animation = Animation_1 = __decorate([\n NotifyPropertyChanges\n ], Animation);\n return Animation;\n}(Base));\nexport { Animation };\n/**\n * Ripple provides material theme's wave effect when an element is clicked\n * ```html\n *
    \n * \n * ```\n *\n * @private\n * @param {HTMLElement} element - Target element\n * @param {RippleOptions} rippleOptions - Ripple options .\n * @param {Function} done .\n * @returns {void} .\n */\nexport function rippleEffect(element, rippleOptions, done) {\n var rippleModel = getRippleModel(rippleOptions);\n if (rippleModel.rippleFlag === false || (rippleModel.rippleFlag === undefined && !isRippleEnabled)) {\n return (function () {\n // do nothing.\n });\n }\n element.setAttribute('data-ripple', 'true');\n EventHandler.add(element, 'mousedown', rippleHandler, { parent: element, rippleOptions: rippleModel });\n EventHandler.add(element, 'mouseup', rippleUpHandler, { parent: element, rippleOptions: rippleModel, done: done });\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n if (Browser.isPointer) {\n EventHandler.add(element, 'transitionend', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n }\n return (function () {\n element.removeAttribute('data-ripple');\n EventHandler.remove(element, 'mousedown', rippleHandler);\n EventHandler.remove(element, 'mouseup', rippleUpHandler);\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n EventHandler.remove(element, 'transitionend', rippleLeaveHandler);\n });\n}\n/**\n * Handler for ripple model\n *\n * @param {RippleOptions} rippleOptions ?\n * @returns {RippleOptions} ?\n */\nfunction getRippleModel(rippleOptions) {\n var rippleModel = {\n selector: rippleOptions && rippleOptions.selector ? rippleOptions.selector : null,\n ignore: rippleOptions && rippleOptions.ignore ? rippleOptions.ignore : null,\n rippleFlag: rippleOptions && rippleOptions.rippleFlag,\n isCenterRipple: rippleOptions && rippleOptions.isCenterRipple,\n duration: rippleOptions && rippleOptions.duration ? rippleOptions.duration : 350\n };\n return rippleModel;\n}\n/**\n * Handler for ripple event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleHandler(e) {\n var target = (e.target);\n var selector = this.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (this.rippleOptions && closest(target, this.rippleOptions.ignore))) {\n return;\n }\n var offset = element.getBoundingClientRect();\n var offsetX = e.pageX - document.body.scrollLeft;\n var offsetY = e.pageY - ((!document.body.scrollTop && document.documentElement) ?\n document.documentElement.scrollTop : document.body.scrollTop);\n var pageX = Math.max(Math.abs(offsetX - offset.left), Math.abs(offsetX - offset.right));\n var pageY = Math.max(Math.abs(offsetY - offset.top), Math.abs(offsetY - offset.bottom));\n var radius = Math.sqrt(pageX * pageX + pageY * pageY);\n var diameter = radius * 2 + 'px';\n var x = offsetX - offset.left - radius;\n var y = offsetY - offset.top - radius;\n if (this.rippleOptions && this.rippleOptions.isCenterRipple) {\n x = 0;\n y = 0;\n diameter = '100%';\n }\n element.classList.add('e-ripple');\n var duration = this.rippleOptions.duration.toString();\n var styles = 'width: ' + diameter + ';height: ' + diameter + ';left: ' + x + 'px;top: ' + y + 'px;' +\n 'transition-duration: ' + duration + 'ms;';\n var rippleElement = createElement('div', { className: 'e-ripple-element', styles: styles });\n element.appendChild(rippleElement);\n window.getComputedStyle(rippleElement).getPropertyValue('opacity');\n rippleElement.style.transform = 'scale(1)';\n if (element !== this.parent) {\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: this.parent, rippleOptions: this.rippleOptions });\n }\n}\n/**\n * Handler for ripple element mouse up event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleUpHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for ripple element mouse move event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleLeaveHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for removing ripple element\n *\n * @param {MouseEvent} e ?\n * @param {RippleArgs} eventArgs ?\n * @returns {void} ?\n * @private\n */\nfunction removeRipple(e, eventArgs) {\n var duration = eventArgs.rippleOptions.duration;\n var target = (e.target);\n var selector = eventArgs.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (element && element.className.indexOf('e-ripple') === -1)) {\n return;\n }\n var rippleElements = selectAll('.e-ripple-element', element);\n var rippleElement = rippleElements[rippleElements.length - 1];\n if (rippleElement) {\n rippleElement.style.opacity = '0.5';\n }\n if (eventArgs.parent !== element) {\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n }\n /* tslint:disable:align */\n setTimeout(function () {\n if (rippleElement && rippleElement.parentNode) {\n rippleElement.parentNode.removeChild(rippleElement);\n }\n if (!element.getElementsByClassName('e-ripple-element').length) {\n element.classList.remove('e-ripple');\n }\n if (eventArgs.done) {\n eventArgs.done(e);\n }\n }, duration);\n}\nexport var isRippleEnabled = false;\n/**\n * Animation Module provides support to enable ripple effect functionality to Essential JS 2 components.\n *\n * @param {boolean} isRipple Specifies the boolean value to enable or disable ripple effect.\n * @returns {boolean} ?\n */\nexport function enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n/**\n * Defines the Modes of Global animation.\n *\n * @private\n */\nexport var animationMode;\n/**\n * This method is used to enable or disable the animation for all components.\n *\n * @param {string|GlobalAnimationMode} value - Specifies the value to enable or disable the animation for all components. When set to 'enable', it enables the animation for all components, regardless of the individual component's animation settings. When set to 'disable', it disables the animation for all components, regardless of the individual component's animation settings.\n * @returns {void}\n */\nexport function setGlobalAnimation(value) {\n animationMode = value;\n}\n/**\n * Defines the global animation modes for all components.\n */\nexport var GlobalAnimationMode;\n(function (GlobalAnimationMode) {\n /**\n * Defines the global animation mode as Default. Animation is enabled or disabled based on the component's animation settings.\n */\n GlobalAnimationMode[\"Default\"] = \"Default\";\n /**\n * Defines the global animation mode as Enable. Enables the animation for all components, regardless of the individual component's animation settings.\n */\n GlobalAnimationMode[\"Enable\"] = \"Enable\";\n /**\n * Defines the global animation mode as Disable. Disables the animation for all components, regardless of the individual component's animation settings.\n */\n GlobalAnimationMode[\"Disable\"] = \"Disable\";\n})(GlobalAnimationMode || (GlobalAnimationMode = {}));\n","/**\n * Module loading operations\n */\nimport { createInstance, setValue, getValue, deleteObject } from './util';\nvar MODULE_SUFFIX = 'Module';\nvar ModuleLoader = /** @class */ (function () {\n function ModuleLoader(parent) {\n this.loadedModules = [];\n this.parent = parent;\n }\n /**\n * Inject required modules in component library\n *\n * @returns {void} ?\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @param {Function[]} moduleList - Array of modules to be injected from sample side\n */\n ModuleLoader.prototype.inject = function (requiredModules, moduleList) {\n var reqLength = requiredModules.length;\n if (reqLength === 0) {\n this.clean();\n return;\n }\n if (this.loadedModules.length) {\n this.clearUnusedModule(requiredModules);\n }\n for (var i = 0; i < reqLength; i++) {\n var modl = requiredModules[parseInt(i.toString(), 10)];\n for (var _i = 0, moduleList_1 = moduleList; _i < moduleList_1.length; _i++) {\n var module = moduleList_1[_i];\n var modName = modl.member;\n if (module && module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {\n var moduleObject = createInstance(module, modl.args);\n var memberName = this.getMemberName(modName);\n if (modl.isProperty) {\n setValue(memberName, module, this.parent);\n }\n else {\n setValue(memberName, moduleObject, this.parent);\n }\n var loadedModule = modl;\n loadedModule.member = memberName;\n this.loadedModules.push(loadedModule);\n }\n }\n }\n };\n /**\n * To remove the created object while destroying the control\n *\n * @returns {void}\n */\n ModuleLoader.prototype.clean = function () {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var modules = _a[_i];\n if (!modules.isProperty) {\n getValue(modules.member, this.parent).destroy();\n }\n }\n this.loadedModules = [];\n };\n /**\n * Returns the array of modules that are not loaded in the component library.\n *\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @returns {ModuleDeclaration[]} ?\n * @private\n */\n ModuleLoader.prototype.getNonInjectedModules = function (requiredModules) {\n var _this = this;\n return requiredModules.filter(function (module) { return !_this.isModuleLoaded(module.member); });\n };\n /**\n * Removes all unused modules\n *\n * @param {ModuleDeclaration[]} moduleList ?\n * @returns {void} ?\n */\n ModuleLoader.prototype.clearUnusedModule = function (moduleList) {\n var _this = this;\n var usedModules = moduleList.map(function (arg) { return _this.getMemberName(arg.member); });\n var removableModule = this.loadedModules.filter(function (module) {\n return usedModules.indexOf(module.member) === -1;\n });\n for (var _i = 0, removableModule_1 = removableModule; _i < removableModule_1.length; _i++) {\n var mod = removableModule_1[_i];\n if (!mod.isProperty) {\n getValue(mod.member, this.parent).destroy();\n }\n this.loadedModules.splice(this.loadedModules.indexOf(mod), 1);\n deleteObject(this.parent, mod.member);\n }\n };\n /**\n * To get the name of the member.\n *\n * @param {string} name ?\n * @returns {string} ?\n */\n ModuleLoader.prototype.getMemberName = function (name) {\n return name[0].toLowerCase() + name.substring(1) + MODULE_SUFFIX;\n };\n /**\n * Returns boolean based on whether the module specified is loaded or not\n *\n * @param {string} modName ?\n * @returns {boolean} ?\n */\n ModuleLoader.prototype.isModuleLoaded = function (modName) {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var mod = _a[_i];\n if (mod.member === this.getMemberName(modName)) {\n return true;\n }\n }\n return false;\n };\n return ModuleLoader;\n}());\nexport { ModuleLoader };\n","import { createElement } from './dom';\nimport { getValue, containerObject, setValue, isNullOrUndefined } from './util';\nexport var componentList = ['grid', 'pivotview', 'treegrid', 'spreadsheet', 'rangeNavigator', 'DocumentEditor', 'listbox', 'inplaceeditor', 'PdfViewer', 'richtexteditor', 'DashboardLayout', 'chart', 'stockChart', 'circulargauge', 'diagram', 'heatmap', 'lineargauge', 'maps', 'slider', 'smithchart', 'barcode', 'sparkline', 'treemap', 'bulletChart', 'kanban', 'daterangepicker', 'schedule', 'gantt', 'signature', 'query-builder', 'drop-down-tree', 'carousel', 'filemanager', 'uploader', 'accordion', 'tab', 'treeview'];\nvar bypassKey = [115, 121, 110, 99, 102, 117, 115, 105,\n 111, 110, 46, 105, 115, 76, 105, 99, 86, 97, 108,\n 105, 100, 97, 116, 101, 100];\nvar accountURL;\n/**\n * License validation module\n *\n * @private\n */\nvar LicenseValidator = /** @class */ (function () {\n function LicenseValidator(key) {\n this.isValidated = false;\n this.isLicensed = true;\n this.version = '25';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats|essentialstudio/i;\n this.errors = {\n noLicense: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n trailExpired: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n versionMismatched: 'The included Syncfusion license key is invalid.',\n platformMismatched: 'The included Syncfusion license key is invalid.',\n invalidKey: 'The included Syncfusion license key is invalid.'\n };\n /**\n * To manage licensing operation.\n */\n this.manager = (function () {\n var licKey = null;\n /**\n * Sets the license key.\n *\n * @param {string} key - Specifies the license key.\n * @returns {void}\n */\n function set(key) { licKey = key; }\n /**\n * Gets the license key.\n *\n * @returns {string} -Gets the license key.\n */\n function get() { return licKey; }\n return {\n setKey: set,\n getKey: get\n };\n })();\n /**\n * To manage npx licensing operation.\n */\n this.npxManager = (function () {\n var npxLicKey = 'npxKeyReplace';\n /**\n * Gets the license key.\n *\n * @returns {string} - Gets the license key.\n */\n function get() { return npxLicKey; }\n return {\n getKey: get\n };\n })();\n this.manager.setKey(key);\n }\n /**\n * To validate the provided license key.\n *\n * @returns {boolean} ?\n */\n LicenseValidator.prototype.validate = function () {\n var contentKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 108, 105, 99, 101, 110, 115, 101, 67, 111, 110, 116, 101, 110, 116];\n var URLKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 99, 108, 97, 105, 109, 65, 99, 99, 111, 117, 110, 116, 85, 82, 76];\n if (!this.isValidated && (containerObject && !getValue(convertToChar(bypassKey), containerObject) && !getValue('Blazor', containerObject))) {\n var validateMsg = void 0;\n var validateURL = void 0;\n if ((this.manager && this.manager.getKey()) || (this.npxManager && this.npxManager.getKey() !== 'npxKeyReplace')) {\n var result = this.getInfoFromKey();\n if (result && result.length) {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n if (!this.platform.test(res.platform) || res.invalidPlatform) {\n validateMsg = this.errors.platformMismatched;\n }\n else if (res.version.indexOf(this.version) === -1) {\n validateMsg = this.errors.versionMismatched;\n validateMsg = validateMsg.replace('##LicenseVersion', res.version);\n validateMsg = validateMsg.replace('##Requireversion', this.version + '.x');\n }\n else if (res.expiryDate) {\n var expDate = new Date(res.expiryDate);\n var currDate = new Date();\n if (expDate !== currDate && expDate < currDate) {\n validateMsg = this.errors.trailExpired;\n }\n else {\n break;\n }\n }\n }\n }\n else {\n validateMsg = this.errors.invalidKey;\n }\n }\n else {\n var licenseContent = getValue(convertToChar(contentKey), containerObject);\n validateURL = getValue(convertToChar(URLKey), containerObject);\n if (licenseContent && licenseContent !== '') {\n validateMsg = licenseContent;\n }\n else {\n validateMsg = this.errors.noLicense;\n }\n }\n if (validateMsg && typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n accountURL = (validateURL && validateURL !== '') ? validateURL : 'https://www.syncfusion.com/account/claim-license-key?pl=SmF2YVNjcmlwdA==&vs=MjU=&utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information';\n var errorDiv = createElement('div', {\n innerHTML: \"\" + validateMsg + ' ' + '
    Claim your free account'\n });\n errorDiv.setAttribute('style', \"position: fixed;\\n top: 10px;\\n left: 10px;\\n right: 10px;\\n font-size: 14px;\\n background: #EEF2FF;\\n color: #222222;\\n z-index: 999999999;\\n text-align: left;\\n border: 1px solid #EEEEEE;\\n padding: 10px 11px 10px 50px;\\n border-radius: 8px;\\n font-family: Helvetica Neue, Helvetica, Arial;\");\n document.body.appendChild(errorDiv);\n this.isLicensed = false;\n }\n this.isValidated = true;\n setValue(convertToChar(bypassKey), this.isValidated, containerObject);\n }\n return this.isLicensed;\n };\n LicenseValidator.prototype.getDecryptedData = function (key) {\n try {\n return atob(key);\n }\n catch (error) {\n return '';\n }\n };\n /**\n * Get license information from key.\n *\n * @returns {IValidator} - Get license information from key.\n */\n LicenseValidator.prototype.getInfoFromKey = function () {\n try {\n var licKey = '';\n var pkey = [5439488, 7929856, 5111808, 6488064, 4587520, 7667712, 5439488,\n 6881280, 5177344, 7208960, 4194304, 4456448, 6619136, 7733248, 5242880, 7077888,\n 6356992, 7602176, 4587520, 7274496, 7471104, 7143424];\n var decryptedStr = [];\n var resultArray = [];\n var invalidPlatform = false;\n var isNpxKey = false;\n if (this.manager.getKey()) {\n licKey = this.manager.getKey();\n }\n else {\n isNpxKey = true;\n licKey = this.npxManager.getKey().split('npxKeyReplace')[1];\n }\n var licKeySplit = licKey.split(';');\n for (var _i = 0, licKeySplit_1 = licKeySplit; _i < licKeySplit_1.length; _i++) {\n var lKey = licKeySplit_1[_i];\n var decodeStr = this.getDecryptedData(lKey);\n if (!decodeStr) {\n continue;\n }\n var k = 0;\n var buffr = '';\n if (!isNpxKey) {\n for (var i = 0; i < decodeStr.length; i++, k++) {\n if (k === pkey.length) {\n k = 0;\n }\n var c = decodeStr.charCodeAt(i);\n buffr += String.fromCharCode(c ^ (pkey[parseInt(k.toString(), 10)] >> 16));\n }\n }\n else {\n var charKey = decodeStr[decodeStr.length - 1];\n var decryptedKey = [];\n for (var i = 0; i < decodeStr.length; i++) {\n decryptedKey[\"\" + i] = decodeStr[\"\" + i].charCodeAt(0) - charKey.charCodeAt(0);\n }\n for (var i = 0; i < decryptedKey.length; i++) {\n buffr += String.fromCharCode(decryptedKey[parseInt(i.toString(), 10)]);\n }\n }\n if (this.platform.test(buffr)) {\n decryptedStr = buffr.split(';');\n invalidPlatform = false;\n // checked the length to verify the key in proper strucutre\n if (decryptedStr.length > 3) {\n resultArray.push({ platform: decryptedStr[0],\n version: decryptedStr[1],\n expiryDate: decryptedStr[2] });\n }\n }\n else if (buffr && buffr.split(';').length > 3) {\n invalidPlatform = true;\n }\n }\n if (invalidPlatform && !resultArray.length) {\n return [{ invalidPlatform: invalidPlatform }];\n }\n else {\n return resultArray.length ? resultArray : null;\n }\n }\n catch (error) {\n return null;\n }\n };\n return LicenseValidator;\n}());\nvar licenseValidator = new LicenseValidator();\n/**\n * Converts the given number to characters.\n *\n * @param {number} cArr - Specifies the license key as number.\n * @returns {string} ?\n */\nfunction convertToChar(cArr) {\n var ret = '';\n for (var _i = 0, cArr_1 = cArr; _i < cArr_1.length; _i++) {\n var arr = cArr_1[_i];\n ret += String.fromCharCode(arr);\n }\n return ret;\n}\n/**\n * To set license key.\n *\n * @param {string} key - license key\n * @returns {void}\n */\nexport function registerLicense(key) {\n licenseValidator = new LicenseValidator(key);\n}\nexport var validateLicense = function (key) {\n if (key) {\n registerLicense(key);\n }\n return licenseValidator.validate();\n};\nexport var getVersion = function () {\n return licenseValidator.version;\n};\n// Method for create overlay over the sample\nexport var createLicenseOverlay = function () {\n var bannerTemplate = \"\\n
    \\n
    \\n
    \\n \\n
    \\n
    Claim your FREE account and get a key in less than a minute
    \\n
      \\n
    • Access to a 30-day free trial of any of our products.
    • \\n
    • Access to 24x5 support by developers via the support tickets, forum, feature & feedback page and chat.
    • \\n
    • 200+ ebooks on the latest technologies, industry trends, and research topics.\\n
    • \\n
    • Largest collection of over 7,000 flat and wireframe icons for free with Syncfusion Metro Studio.
    • \\n
    • Free and unlimited access to Syncfusion technical blogs and whitepapers.
    • \\n
    \\n
    Syncfusion is trusted by 29,000+ businesses worldwide
    \\n \\n Claim your FREE account\\n
    have a Syncfusion account? Sign In
    \\n
    \\n
    \";\n if (typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n var errorBackground = createElement('div', {\n innerHTML: bannerTemplate\n });\n document.body.appendChild(errorBackground);\n }\n};\n","import { getValue, setValue, merge, isBlazor } from './util';\nimport { Base } from './base';\n/**\n * To detect the changes for inner properties.\n *\n * @private\n */\nvar ChildProperty = /** @class */ (function () {\n function ChildProperty(parent, propName, defaultValue, isArray) {\n this.isComplexArraySetter = false;\n this.properties = {};\n this.changedProperties = {};\n this.childChangedProperties = {};\n this.oldProperties = {};\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.callChildDataBind = getValue('callChildDataBind', Base);\n this.parentObj = parent;\n this.controlParent = this.parentObj.controlParent || this.parentObj;\n this.propName = propName;\n this.isParentArray = isArray;\n this.setProperties(defaultValue, true);\n }\n /**\n * Updates the property changes\n *\n * @param {boolean} val ?\n * @param {string} propName ?\n * @returns {void} ?\n */\n ChildProperty.prototype.updateChange = function (val, propName) {\n if (val === true) {\n this.parentObj.childChangedProperties[\"\" + propName] = val;\n }\n else {\n delete this.parentObj.childChangedProperties[\"\" + propName];\n }\n if (this.parentObj.updateChange) {\n this.parentObj.updateChange(val, this.parentObj.propName);\n }\n };\n /**\n * Updates time out duration\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.updateTimeOut = function () {\n if (this.parentObj.updateTimeOut) {\n this.parentObj.finalUpdate();\n this.parentObj.updateTimeOut();\n }\n else {\n var changeTime_1 = setTimeout(this.parentObj.dataBind.bind(this.parentObj));\n var clearUpdate = function () {\n clearTimeout(changeTime_1);\n };\n this.finalUpdate = clearUpdate;\n }\n };\n /**\n * Clears changed properties\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.clearChanges = function () {\n this.finalUpdate();\n this.updateChange(false, this.propName);\n this.oldProperties = {};\n this.changedProperties = {};\n };\n /**\n * Set property changes\n *\n * @param {Object} prop ?\n * @param {boolean} muteOnChange ?\n * @returns {void} ?\n */\n ChildProperty.prototype.setProperties = function (prop, muteOnChange) {\n if (muteOnChange === true) {\n merge(this, prop);\n this.updateChange(false, this.propName);\n this.clearChanges();\n }\n else {\n merge(this, prop);\n }\n };\n /**\n * Binds data\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.dataBind = function () {\n this.callChildDataBind(this.childChangedProperties, this);\n if (this.isParentArray) {\n var curIndex = this.parentObj[this.propName].indexOf(this);\n if (Object.keys(this.changedProperties).length) {\n setValue(this.propName + '.' + curIndex, this.changedProperties, this.parentObj.changedProperties);\n setValue(this.propName + '.' + curIndex, this.oldProperties, this.parentObj.oldProperties);\n }\n }\n else {\n this.parentObj.changedProperties[this.propName] = this.changedProperties;\n this.parentObj.oldProperties[this.propName] = this.oldProperties;\n }\n this.clearChanges();\n };\n /**\n * Saves changes to newer values\n *\n * @param {string} key ?\n * @param {Object} newValue ?\n * @param {Object} oldValue ?\n * @param {boolean} restrictServerDataBind ?\n * @returns {void} ?\n */\n ChildProperty.prototype.saveChanges = function (key, newValue, oldValue, restrictServerDataBind) {\n if (this.controlParent.isProtectedOnChange) {\n return;\n }\n if (!restrictServerDataBind) {\n this.serverDataBind(key, newValue, true);\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.updateChange(true, this.propName);\n this.finalUpdate();\n this.updateTimeOut();\n };\n ChildProperty.prototype.serverDataBind = function (key, value, isSaveChanges, action) {\n if (isBlazor() && !this.parentObj.isComplexArraySetter) {\n var parent_1;\n var newChanges = {};\n var parentKey = isSaveChanges ? this.getParentKey(true) + '.' + key : key;\n /* istanbul ignore else */\n if (parentKey.indexOf('.') !== -1) {\n var complexKeys = parentKey.split('.');\n parent_1 = newChanges;\n for (var i = 0; i < complexKeys.length; i++) {\n var isFinal = i === complexKeys.length - 1;\n parent_1[complexKeys[parseInt(i.toString(), 10)]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[parseInt(i.toString(), 10)]];\n }\n }\n else {\n newChanges[\"\" + parentKey] = {};\n parent_1 = newChanges[\"\" + parentKey];\n newChanges[\"\" + parentKey][\"\" + key] = value;\n }\n /* istanbul ignore next */\n if (this.isParentArray) {\n var actionProperty = 'ejsAction';\n parent_1[\"\" + actionProperty] = action ? action : 'none';\n }\n this.controlParent.serverDataBind(newChanges);\n }\n };\n ChildProperty.prototype.getParentKey = function (isSaveChanges) {\n // eslint-disable-next-line\n var index = '';\n var propName = this.propName;\n /* istanbul ignore next */\n if (this.isParentArray) {\n index = this.parentObj[this.propName].indexOf(this);\n var valueLength = this.parentObj[this.propName].length;\n valueLength = isSaveChanges ? valueLength : (valueLength > 0 ? valueLength - 1 : 0);\n index = index !== -1 ? '-' + index : '-' + valueLength;\n propName = propName + index;\n }\n if (this.controlParent !== this.parentObj) {\n propName = this.parentObj.getParentKey() + '.' + this.propName + index;\n }\n return propName;\n };\n return ChildProperty;\n}());\nexport { ChildProperty };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isUndefined, getValue, isNullOrUndefined, setValue, uniqueID, isBlazor } from './util';\nimport { ModuleLoader } from './module-loader';\nimport { Base } from './base';\nimport { Observer } from './observer';\nimport { ChildProperty } from './child-property';\nimport { Property, NotifyPropertyChanges } from './notify-property-change';\nimport { onIntlChange, rightToLeft, defaultCulture } from './internationalization';\nimport { createElement, addClass, removeClass, select } from './dom';\nimport { validateLicense, createLicenseOverlay, componentList } from './validate-lic';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\n// Decalre the static variable to count the instance\nvar instancecount = 0;\n// Decalre the static variable to find if control limit exceed or not\nvar isvalid = true;\n// We have added styles to inline type so here declare the static variable to detect if banner is added or not\nvar isBannerAdded = false;\nexport var versionBasedStatePersistence = false;\n/**\n * To enable or disable version based statePersistence functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable versionBasedStatePersistence option.\n * @returns {void}\n */\nexport function enableVersionBasedPersistence(status) {\n versionBasedStatePersistence = status;\n}\n/**\n * Base class for all Essential JavaScript components\n */\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n /**\n * Initialize the constructor for component base\n *\n * @param {Object} options ?\n * @param {string} selector ?\n */\n function Component(options, selector) {\n var _this = _super.call(this, options, selector) || this;\n _this.randomId = uniqueID();\n /**\n * string template option for Blazor template rendering\n *\n * @private\n */\n _this.isStringTemplate = false;\n _this.needsID = false;\n _this.isReactHybrid = false;\n if (isNullOrUndefined(_this.enableRtl)) {\n _this.setProperties({ 'enableRtl': rightToLeft }, true);\n }\n if (isNullOrUndefined(_this.locale)) {\n _this.setProperties({ 'locale': defaultCulture }, true);\n }\n _this.moduleLoader = new ModuleLoader(_this);\n _this.localObserver = new Observer(_this);\n // tslint:disable-next-line:no-function-constructor-with-string-args\n onIntlChange.on('notifyExternalChange', _this.detectFunction, _this, _this.randomId);\n // Based on the considered control list we have count the instance\n if (typeof window !== 'undefined' && typeof document !== 'undefined' && !validateLicense()) {\n if (componentList.indexOf(_this.getModuleName()) !== -1) {\n instancecount = instancecount + 1;\n if (instancecount > 5) {\n isvalid = false;\n }\n }\n }\n if (!isUndefined(selector)) {\n _this.appendTo();\n }\n return _this;\n }\n Component.prototype.requiredModules = function () {\n return [];\n };\n /**\n * Destroys the sub modules while destroying the widget\n *\n * @returns {void} ?\n */\n Component.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.enablePersistence) {\n this.setPersistData();\n this.detachUnloadEvent();\n }\n this.localObserver.destroy();\n if (this.refreshing) {\n return;\n }\n removeClass([this.element], ['e-control']);\n this.trigger('destroyed', { cancel: false });\n _super.prototype.destroy.call(this);\n this.moduleLoader.clean();\n onIntlChange.off('notifyExternalChange', this.detectFunction, this.randomId);\n };\n /**\n * Applies all the pending property changes and render the component again.\n *\n * @returns {void} ?\n */\n Component.prototype.refresh = function () {\n this.refreshing = true;\n this.moduleLoader.clean();\n this.destroy();\n this.clearChanges();\n this.localObserver = new Observer(this);\n this.preRender();\n this.injectModules();\n this.render();\n this.refreshing = false;\n };\n Component.prototype.accessMount = function () {\n if (this.mount && !this.isReactHybrid) {\n this.mount();\n }\n };\n /**\n * Returns the route element of the component\n *\n * @returns {HTMLElement} ?\n */\n Component.prototype.getRootElement = function () {\n if (this.isReactHybrid) {\n // eslint-disable-next-line\n return this.actualElement;\n }\n else {\n return this.element;\n }\n };\n /**\n * Returns the persistence data for component\n *\n * @returns {any} ?\n */\n // eslint-disable-next-line\n Component.prototype.getLocalData = function () {\n var eleId = this.getModuleName() + this.element.id;\n if (versionBasedStatePersistence) {\n return window.localStorage.getItem(eleId + this.ej2StatePersistenceVersion);\n }\n else {\n return window.localStorage.getItem(eleId);\n }\n };\n /**\n * Adding unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.attachUnloadEvent = function () {\n this.handleUnload = this.handleUnload.bind(this);\n window.addEventListener('unload', this.handleUnload);\n };\n /**\n * Handling unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.handleUnload = function () {\n this.setPersistData();\n };\n /**\n * Removing unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.detachUnloadEvent = function () {\n window.removeEventListener('unload', this.handleUnload);\n };\n /**\n * Appends the control within the given HTML element\n *\n * @param {string | HTMLElement} selector - Target element where control needs to be appended\n * @returns {void} ?\n */\n Component.prototype.appendTo = function (selector) {\n if (!isNullOrUndefined(selector) && typeof (selector) === 'string') {\n this.element = select(selector, document);\n }\n else if (!isNullOrUndefined(selector)) {\n this.element = selector;\n }\n if (!isNullOrUndefined(this.element)) {\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-control', moduleClass]);\n this.isProtectedOnChange = false;\n if (this.needsID && !this.element.id) {\n this.element.id = this.getUniqueID(this.getModuleName());\n }\n if (this.enablePersistence) {\n this.mergePersistData();\n this.attachUnloadEvent();\n }\n var inst = getValue('ej2_instances', this.element);\n if (!inst || inst.indexOf(this) === -1) {\n _super.prototype.addInstance.call(this);\n }\n this.preRender();\n this.injectModules();\n // Throw a warning for the required modules to be injected.\n var ignoredComponents = {\n schedule: 'all',\n diagram: 'all',\n PdfViewer: 'all',\n grid: ['logger'],\n richtexteditor: ['link', 'table', 'image', 'audio', 'video', 'formatPainter', 'emojiPicker', 'pasteCleanup', 'htmlEditor', 'toolbar'],\n treegrid: ['filter'],\n gantt: ['tooltip'],\n chart: ['Export', 'Zoom'],\n accumulationchart: ['Export']\n };\n var component = this.getModuleName();\n if (this.requiredModules && (!ignoredComponents[\"\" + component] || ignoredComponents[\"\" + component] !== 'all')) {\n var modulesRequired = this.requiredModules();\n for (var _i = 0, _a = this.moduleLoader.getNonInjectedModules(modulesRequired); _i < _a.length; _i++) {\n var module = _a[_i];\n var moduleName = module.name ? module.name : module.member;\n if (ignoredComponents[\"\" + component] && ignoredComponents[\"\" + component].indexOf(module.member) !== -1) {\n continue;\n }\n var componentName = component.charAt(0).toUpperCase() + component.slice(1); // To capitalize the component name\n console.warn(\"[WARNING] :: Module \\\"\" + moduleName + \"\\\" is not available in \" + componentName + \" component! You either misspelled the module name or forgot to load it.\");\n }\n }\n // Checked weather cases are valid or not. If control leads to more than five counts\n if (!isvalid && !isBannerAdded) {\n createLicenseOverlay();\n isBannerAdded = true;\n }\n this.render();\n if (!this.mount) {\n this.trigger('created');\n }\n else {\n this.accessMount();\n }\n }\n };\n /**\n * It is used to process the post rendering functionalities to a component.\n *\n * @param {Node} wrapperElement ?\n * @returns {void} ?\n */\n Component.prototype.renderComplete = function (wrapperElement) {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n // eslint-disable-next-line\n window[sfBlazor].renderComplete(this.element, wrapperElement);\n }\n this.isRendered = true;\n };\n /**\n * When invoked, applies the pending property changes immediately to the component.\n *\n * @returns {void} ?\n */\n Component.prototype.dataBind = function () {\n this.injectModules();\n _super.prototype.dataBind.call(this);\n };\n /**\n * Attach one or more event handler to the current component context.\n * It is used for internal handling event internally within the component only.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the handler to run when the event occurs\n * @param {Object} context - optional parameter Specifies the context to be bind in the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.on = function (event, handler, context) {\n if (typeof event === 'string') {\n this.localObserver.on(event, handler, context);\n }\n else {\n for (var _i = 0, event_1 = event; _i < event_1.length; _i++) {\n var arg = event_1[_i];\n this.localObserver.on(arg.event, arg.handler, arg.context);\n }\n }\n };\n /**\n * To remove one or more event handler that has been attached with the on() method.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the function to run when the event occurs\n * @returns {void} ?\n * @private\n */\n Component.prototype.off = function (event, handler) {\n if (typeof event === 'string') {\n this.localObserver.off(event, handler);\n }\n else {\n for (var _i = 0, event_2 = event; _i < event_2.length; _i++) {\n var arg = event_2[_i];\n this.localObserver.off(arg.event, arg.handler);\n }\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.notify = function (property, argument) {\n if (this.isDestroyed !== true) {\n this.localObserver.notify(property, argument);\n }\n };\n /**\n * Get injected modules\n *\n * @returns {Function} ?\n * @private\n */\n Component.prototype.getInjectedModules = function () {\n return this.injectedModules;\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @param {Function} moduleList ?\n * @returns {void} ?\n */\n Component.Inject = function () {\n var moduleList = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n moduleList[_i] = arguments[_i];\n }\n if (!this.prototype.injectedModules) {\n this.prototype.injectedModules = [];\n }\n for (var i = 0; i < moduleList.length; i++) {\n if (this.prototype.injectedModules.indexOf(moduleList[parseInt(i.toString(), 10)]) === -1) {\n this.prototype.injectedModules.push(moduleList[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * This is a instance method to create an element.\n *\n * @param {string} tagName ?\n * @param {ElementProperties} prop ?\n * @param {boolean} isVDOM ?\n * @returns {any} ?\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.createElement = function (tagName, prop, isVDOM) {\n return createElement(tagName, prop);\n };\n /**\n *\n * @param {Function} handler - handler to be triggered after state Updated.\n * @param {any} argument - Arguments to be passed to caller.\n * @returns {void} .\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n // eslint-disable-next-line\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n };\n // tslint: enable: no-any\n Component.prototype.injectModules = function () {\n if (this.injectedModules && this.injectedModules.length) {\n this.moduleLoader.inject(this.requiredModules(), this.injectedModules);\n }\n };\n Component.prototype.detectFunction = function (args) {\n var prop = Object.keys(args);\n if (prop.length) {\n this[prop[0]] = args[prop[0]];\n }\n };\n Component.prototype.mergePersistData = function () {\n var data;\n if (versionBasedStatePersistence) {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion);\n }\n else {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n }\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n };\n Component.prototype.setPersistData = function () {\n if (!this.isDestroyed) {\n if (versionBasedStatePersistence) {\n window.localStorage.setItem(this.getModuleName() +\n this.element.id + this.ej2StatePersistenceVersion, this.getPersistData());\n }\n else {\n window.localStorage.setItem(this.getModuleName() + this.element.id, this.getPersistData());\n }\n }\n };\n // eslint-disable-next-line\n Component.prototype.renderReactTemplates = function (callback) {\n if (!isNullOrUndefined(callback)) {\n callback();\n }\n };\n // eslint-disable-next-line\n Component.prototype.clearTemplate = function (templateName, index) {\n //No Code\n };\n Component.prototype.getUniqueID = function (definedName) {\n if (this.isHistoryChanged()) {\n componentCount = 0;\n }\n lastPageID = this.pageID(location.href);\n lastHistoryLen = history.length;\n return definedName + '_' + lastPageID + '_' + componentCount++;\n };\n Component.prototype.pageID = function (url) {\n var hash = 0;\n if (url.length === 0) {\n return hash;\n }\n for (var i = 0; i < url.length; i++) {\n var char = url.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n };\n Component.prototype.isHistoryChanged = function () {\n return lastPageID !== this.pageID(location.href) || lastHistoryLen !== history.length;\n };\n Component.prototype.addOnPersist = function (options) {\n var _this = this;\n var persistObj = {};\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var key = options_1[_i];\n var objValue = void 0;\n // eslint-disable-next-line\n objValue = getValue(key, this);\n if (!isUndefined(objValue)) {\n setValue(key, this.getActualProperties(objValue), persistObj);\n }\n }\n return JSON.stringify(persistObj, function (key, value) {\n return _this.getActualProperties(value);\n });\n };\n Component.prototype.getActualProperties = function (obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n };\n Component.prototype.ignoreOnPersist = function (options) {\n return JSON.stringify(this.iterateJsonProperties(this.properties, options));\n };\n Component.prototype.iterateJsonProperties = function (obj, ignoreList) {\n var newObj = {};\n var _loop_1 = function (key) {\n if (ignoreList.indexOf(key) === -1) {\n // eslint-disable-next-line\n var value = obj[key];\n if (typeof value === 'object' && !(value instanceof Array)) {\n var newList = ignoreList.filter(function (str) {\n var regExp = RegExp;\n return new regExp(key + '.').test(str);\n }).map(function (str) {\n return str.replace(key + '.', '');\n });\n newObj[\"\" + key] = this_1.iterateJsonProperties(this_1.getActualProperties(value), newList);\n }\n else {\n newObj[\"\" + key] = value;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n return newObj;\n };\n __decorate([\n Property(false)\n ], Component.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"enableRtl\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"locale\", void 0);\n Component = __decorate([\n NotifyPropertyChanges\n ], Component);\n return Component;\n}(Base));\nexport { Component };\n//Function handling for page navigation detection\n/* istanbul ignore next */\n(function () {\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', \n /* istanbul ignore next */\n function () {\n componentCount = 0;\n });\n }\n})();\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible } from './dom';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { ChildProperty } from './child-property';\nimport { select, closest, setStyleAttribute, addClass, createElement } from './dom';\nimport { extend, isUndefined, isNullOrUndefined, compareElementParent, isBlazor } from './util';\nvar defaultPosition = { left: 0, top: 0, bottom: 0, right: 0 };\nvar isDraggedObject = { isDragged: false };\n/**\n * Specifies the position coordinates\n */\nvar Position = /** @class */ (function (_super) {\n __extends(Position, _super);\n function Position() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Position.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], Position.prototype, \"top\", void 0);\n return Position;\n}(ChildProperty));\nexport { Position };\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n *
    Draggable
    \n * \n * ```\n */\nvar Draggable = /** @class */ (function (_super) {\n __extends(Draggable, _super);\n function Draggable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.dragLimit = Draggable_1.getDefaultPosition();\n _this.borderWidth = Draggable_1.getDefaultPosition();\n _this.padding = Draggable_1.getDefaultPosition();\n _this.diffX = 0;\n _this.prevLeft = 0;\n _this.prevTop = 0;\n _this.dragProcessStarted = false;\n _this.eleTop = 0;\n /* eslint-disable @typescript-eslint/no-explicit-any */\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n var client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[\"\" + axis]] > element[client[\"\" + axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n this.tempScrollHeight = element.scrollHeight;\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n this.tempScrollWidth = element.scrollWidth;\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n /* eslint-disable */\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n /* eslint-enable */\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n /* tslint:disable no-any */\n // eslint-disable-next-line\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[parseInt(i.toString(), 10)]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches) && evt.type !== 'touchstart') {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n var intCoord = this.getCoordinates(evt);\n this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };\n if (!this.clone) {\n var pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n }\n else {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n var intCordinate = this.getCoordinates(evt);\n var pos;\n var styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10)\n };\n var element = this.element;\n if (this.clone && this.dragTarget) {\n var intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n /* istanbul ignore next */\n if (this.isReplaceDragEle) {\n // eslint-disable-next-line\n element = this.currentStateCheck(evt.target, element);\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var x = this.initialPosition.x - intCordinate.pageX;\n var y = this.initialPosition.y - intCordinate.pageY;\n var distance = Math.sqrt((x * x) + (y * y));\n if ((distance >= this.distance || this.externalInitialize)) {\n var ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n var dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n var curTarget = this.getProperTargetElement(evt);\n var args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n }\n else {\n this.dragLimit = { left: 0, right: 0, bottom: 0, top: 0 };\n this.borderWidth = { top: 0, left: 0 };\n }\n pos = { left: this.position.left - this.parentClientRect.left, top: this.position.top - this.parentClientRect.top };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n // when drag element has margin-top\n var styles = getComputedStyle(element);\n var marginTop = parseFloat(styles.marginTop);\n /* istanbul ignore next */\n if (this.clone && marginTop !== 0) {\n pos.top += marginTop;\n }\n this.eleTop = !isNaN(parseFloat(styles.top)) ? parseFloat(styles.top) - this.offset.top : 0;\n /* istanbul ignore next */\n // if (this.eleTop > 0) {\n // pos.top += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n pos.top -= this.parentScrollY;\n pos.left -= this.parentScrollX;\n }\n var posValue = this.getProcessedPositionValue({\n top: (pos.top - this.diffY) + 'px',\n left: (pos.left - this.diffX) + 'px'\n });\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n pos.top += this.dragArea.scrollTop;\n }\n this.dragElePosition = { top: pos.top, left: pos.left };\n setStyleAttribute(dragTargetElement, this.getDragPosition({ position: 'absolute', left: posValue.left, top: posValue.top }));\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n };\n Draggable.prototype.bindDragEvents = function (dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n }\n else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n };\n Draggable.prototype.elementInViewport = function (el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return (this.top >= window.pageYOffset &&\n this.left >= window.pageXOffset &&\n (this.top + this.height) <= (window.pageYOffset + window.innerHeight) &&\n (this.left + this.width) <= (window.pageXOffset + window.innerWidth));\n };\n Draggable.prototype.getProcessedPositionValue = function (value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n };\n Draggable.prototype.calculateParentPosition = function (ele) {\n if (isNullOrUndefined(ele)) {\n return { left: 0, top: 0 };\n }\n var rect = ele.getBoundingClientRect();\n var style = getComputedStyle(ele);\n return {\n left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),\n top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)\n };\n };\n // tslint:disable-next-line:max-func-body-length\n Draggable.prototype.intDrag = function (evt) {\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (this.clone && evt.changedTouches && Browser.isDevice && Browser.isTouch) {\n evt.preventDefault();\n }\n var left;\n var top;\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var docHeight = this.getDocumentWidthHeight('Height');\n if (docHeight < this.position.top) {\n this.position.top = docHeight;\n }\n var docWidth = this.getDocumentWidthHeight('Width');\n if (docWidth < this.position.left) {\n this.position.left = docWidth;\n }\n if (this.drag) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('drag', { event: evt, element: this.element, target: curTarget });\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n /* tslint:disable no-any */\n var flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n }\n else {\n flag = false;\n }\n }\n if (flag) {\n // eslint-disable-next-line\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n }\n else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n var helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n var tLeft = this.parentClientRect.left;\n var tTop = this.parentClientRect.top;\n var intCoord = this.getCoordinates(evt);\n var pagex = intCoord.pageX;\n var pagey = intCoord.pageY;\n var dLeft = this.position.left - this.diffX;\n var dTop = this.position.top - this.diffY;\n var styles = getComputedStyle(helperElement);\n if (this.dragArea) {\n if (this.enableAutoScroll) {\n this.setDragArea();\n }\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n var helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)\n + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n }\n else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n }\n else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n }\n else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n }\n else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n }\n else {\n left = dLeft;\n top = dTop;\n }\n var iTop = tTop + this.borderWidth.top;\n var iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n var draEleTop;\n var draEleLeft;\n if (this.helperElement.classList.contains('e-treeview')) {\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - this.borderWidth.top);\n draEleLeft = (left - iLeft) < 0 ? this.dragLimit.left : (left - this.borderWidth.left);\n }\n else {\n draEleTop = top - this.borderWidth.top;\n draEleLeft = left - this.borderWidth.left;\n }\n }\n else {\n if (this.dragArea) {\n var isDialogEle = this.helperElement.classList.contains('e-dialog');\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);\n draEleLeft = (left - iLeft) < 0 ? isDialogEle ? (left - (iLeft - this.borderWidth.left)) :\n this.dragElePosition.left : (left - iLeft);\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n }\n var marginTop = parseFloat(getComputedStyle(this.element).marginTop);\n // when drag-element has margin-top\n /* istanbul ignore next */\n if (marginTop > 0) {\n if (this.clone) {\n draEleTop += marginTop;\n if (dTop < 0) {\n if ((marginTop + dTop) >= 0) {\n draEleTop = marginTop + dTop;\n }\n else {\n draEleTop -= marginTop;\n }\n }\n if (this.dragArea) {\n draEleTop = (this.dragLimit.bottom < draEleTop) ? this.dragLimit.bottom : draEleTop;\n }\n }\n if ((top - iTop) < 0) {\n if (dTop + marginTop + (helperElement.offsetHeight - iTop) >= 0) {\n var tempDraEleTop = this.dragLimit.top + dTop - iTop;\n if ((tempDraEleTop + marginTop + iTop) < 0) {\n draEleTop -= marginTop + iTop;\n }\n else {\n draEleTop = tempDraEleTop;\n }\n }\n else {\n draEleTop -= marginTop + iTop;\n }\n }\n }\n if (this.dragArea && this.helperElement.classList.contains('e-treeview')) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n draEleTop = (draEleTop + helperHeight) > this.dragLimit.bottom ? (this.dragLimit.bottom - helperHeight) : draEleTop;\n }\n /* istanbul ignore next */\n // if(this.eleTop > 0) {\n // draEleTop += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n draEleTop -= this.parentScrollY;\n draEleLeft -= this.parentScrollX;\n }\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n draEleTop += this.dragArea.scrollTop;\n }\n var dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });\n setStyleAttribute(helperElement, this.getDragPosition(dragValue));\n if (!this.elementInViewport(helperElement) && this.enableAutoScroll && !this.helperElement.classList.contains('e-treeview')) {\n this.helperElement.scrollIntoView();\n }\n var elements = document.querySelectorAll(':hover');\n if (this.enableAutoScroll && this.helperElement.classList.contains('e-treeview')) {\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n /* tslint:disable no-any */\n // eslint-disable-next-line\n var scrollParent = this.getScrollParent(elements, false);\n if (this.elementInViewport(this.helperElement)) {\n this.getScrollPosition(scrollParent, draEleTop);\n }\n else if (!this.elementInViewport(this.helperElement)) {\n elements = [].slice.call(document.querySelectorAll(':hover'));\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n scrollParent = this.getScrollParent(elements, true);\n this.getScrollPosition(scrollParent, draEleTop);\n }\n }\n this.dragProcessStarted = true;\n this.prevLeft = left;\n this.prevTop = top;\n this.position.left = left;\n this.position.top = top;\n this.pageX = pagex;\n this.pageY = pagey;\n };\n /* tslint:disable no-any */\n // eslint-disable-next-line\n Draggable.prototype.getScrollParent = function (node, reverse) {\n /* tslint:disable no-any */\n // eslint-disable-next-line\n var nodeEl = reverse ? node.reverse() : node;\n var hasScroll;\n for (var i = nodeEl.length - 1; i >= 0; i--) {\n hasScroll = window.getComputedStyle(nodeEl[parseInt(i.toString(), 10)])['overflow-y'];\n if ((hasScroll === 'auto' || hasScroll === 'scroll')\n && nodeEl[parseInt(i.toString(), 10)].scrollHeight > nodeEl[parseInt(i.toString(), 10)].clientHeight) {\n return nodeEl[parseInt(i.toString(), 10)];\n }\n }\n hasScroll = window.getComputedStyle(document.scrollingElement)['overflow-y'];\n if (hasScroll === 'visible') {\n document.scrollingElement.style.overflow = 'auto';\n return document.scrollingElement;\n }\n };\n Draggable.prototype.getScrollPosition = function (nodeEle, draEleTop) {\n if (nodeEle && nodeEle === document.scrollingElement) {\n if ((nodeEle.clientHeight + document.scrollingElement.scrollTop - this.helperElement.clientHeight) < draEleTop\n && nodeEle.getBoundingClientRect().height + this.parentClientRect.top > draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.scrollTop > draEleTop - this.helperElement.clientHeight) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n else if (nodeEle && nodeEle !== document.scrollingElement) {\n var docScrollTop = document.scrollingElement.scrollTop;\n var helperClientHeight = this.helperElement.clientHeight;\n if ((nodeEle.clientHeight + nodeEle.getBoundingClientRect().top - helperClientHeight + docScrollTop) < draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.getBoundingClientRect().top > (draEleTop - helperClientHeight - docScrollTop)) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n };\n Draggable.prototype.getPathElements = function (evt) {\n var elementTop = evt.clientX > 0 ? evt.clientX : 0;\n var elementLeft = evt.clientY > 0 ? evt.clientY : 0;\n return document.elementsFromPoint(elementTop, elementLeft);\n };\n Draggable.prototype.triggerOutFunction = function (evt, eleObj) {\n this.hoverObject.instance.intOut(evt, eleObj.target);\n this.hoverObject.instance.dragData[this.scope] = null;\n this.hoverObject = null;\n };\n Draggable.prototype.getDragPosition = function (dragValue) {\n var temp = extend({}, dragValue);\n if (this.axis) {\n if (this.axis === 'x') {\n delete temp.top;\n }\n else if (this.axis === 'y') {\n delete temp.left;\n }\n }\n return temp;\n };\n Draggable.prototype.getDocumentWidthHeight = function (str) {\n var docBody = document.body;\n var docEle = document.documentElement;\n var returnValue = Math.max(docBody['scroll' + str], docEle['scroll' + str], docBody['offset' + str], docEle['offset' + str], docEle['client' + str]);\n return returnValue;\n };\n Draggable.prototype.intDragStop = function (evt) {\n this.dragProcessStarted = false;\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var type = ['touchend', 'pointerup', 'mouseup'];\n if (type.indexOf(evt.type) !== -1) {\n if (this.dragStop) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('dragStop', { event: evt, element: this.element, target: curTarget, helper: this.helperElement });\n }\n this.intDestroy(evt);\n }\n else {\n this.element.setAttribute('aria-grabbed', 'false');\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n eleObj.instance.dragStopCalled = true;\n // eslint-disable-next-line\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intDrop(evt, eleObj.target);\n }\n this.setGlobalDroppables(true);\n document.body.classList.remove('e-prevent-select');\n };\n /**\n * @param {MouseEvent | TouchEvent} evt ?\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line\n Draggable.prototype.intDestroy = function (evt) {\n this.dragProcessStarted = false;\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n this.element.setAttribute('aria-grabbed', 'false');\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n // eslint-disable-next-line\n Draggable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Draggable.prototype.getModuleName = function () {\n return 'draggable';\n };\n Draggable.prototype.isDragStarted = function (change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n };\n Draggable.prototype.setDragArea = function () {\n var eleWidthBound;\n var eleHeightBound;\n var top = 0;\n var left = 0;\n var ele;\n var type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n }\n else {\n ele = this.dragArea;\n }\n if (ele) {\n var elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) ? ele.clientHeight : ele.scrollHeight : elementArea.bottom - elementArea.top;\n var keys = ['Top', 'Left', 'Bottom', 'Right'];\n /* eslint-disable */\n var styles = getComputedStyle(ele);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[parseInt(i.toString(), 10)];\n var tborder = styles['border' + key + 'Width'];\n var tpadding = styles['padding' + key];\n var lowerKey = key.toLowerCase();\n this.borderWidth[\"\" + lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);\n this.padding[\"\" + lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);\n }\n /* eslint-enable */\n if (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) {\n top = elementArea.top + document.scrollingElement.scrollTop;\n }\n else {\n top = elementArea.top;\n }\n left = elementArea.left;\n this.dragLimit.left = left + this.borderWidth.left + this.padding.left;\n this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;\n this.dragLimit.right = left + eleWidthBound - (this.borderWidth.right + this.padding.right);\n this.dragLimit.bottom = top + eleHeightBound - (this.borderWidth.bottom + this.padding.bottom);\n }\n };\n Draggable.prototype.getProperTargetElement = function (evt) {\n var intCoord = this.getCoordinates(evt);\n var ele;\n var prevStyle = this.helperElement.style.pointerEvents || '';\n var isPointer = evt.type.indexOf('pointer') !== -1 && Browser.info.name === 'safari' && parseInt(Browser.info.version, 10) > 12;\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1 || isPointer) {\n this.helperElement.style.pointerEvents = 'none';\n ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);\n this.helperElement.style.pointerEvents = prevStyle;\n }\n else {\n ele = evt.target;\n }\n return ele;\n };\n /* istanbul ignore next */\n Draggable.prototype.currentStateCheck = function (ele, oldEle) {\n var elem;\n if (!isNullOrUndefined(this.currentStateTarget) && this.currentStateTarget !== ele) {\n elem = this.currentStateTarget;\n }\n else {\n elem = !isNullOrUndefined(oldEle) ? oldEle : ele;\n }\n return elem;\n };\n Draggable.prototype.getMousePosition = function (evt, isdragscroll) {\n /* tslint:disable no-any */\n // eslint-disable-next-line\n var dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;\n var intCoord = this.getCoordinates(evt);\n var pageX;\n var pageY;\n var isOffsetParent = isNullOrUndefined(dragEle.offsetParent);\n /* istanbul ignore next */\n if (isdragscroll) {\n pageX = this.clone ? intCoord.pageX :\n (intCoord.pageX + (isOffsetParent ? 0 : dragEle.offsetParent.scrollLeft)) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY :\n (intCoord.pageY + (isOffsetParent ? 0 : dragEle.offsetParent.scrollTop)) - this.relativeYPosition;\n }\n else {\n pageX = this.clone ? intCoord.pageX : (intCoord.pageX + window.pageXOffset) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;\n }\n if (document.scrollingElement && (!isdragscroll && !this.clone)) {\n var ele = document.scrollingElement;\n var isVerticalScroll = ele.scrollHeight > 0 && ele.scrollHeight > ele.clientHeight && ele.scrollTop > 0;\n var isHorrizontalScroll = ele.scrollWidth > 0 && ele.scrollWidth > ele.clientWidth && ele.scrollLeft > 0;\n pageX = isHorrizontalScroll ? pageX - ele.scrollLeft : pageX;\n pageY = isVerticalScroll ? pageY - ele.scrollTop : pageY;\n }\n return {\n left: pageX - (this.margin.left + this.cursorAt.left),\n top: pageY - (this.margin.top + this.cursorAt.top)\n };\n };\n Draggable.prototype.getCoordinates = function (evt) {\n if (evt.type.indexOf('touch') > -1) {\n return evt.changedTouches[0];\n }\n return evt;\n };\n Draggable.prototype.getHelperElement = function (evt) {\n var element;\n if (this.clone) {\n if (this.helper) {\n element = this.helper({ sender: evt, element: this.target });\n }\n else {\n element = createElement('div', { className: 'e-drag-helper e-block-touch', innerHTML: 'Draggable' });\n document.body.appendChild(element);\n }\n }\n else {\n element = this.element;\n }\n return element;\n };\n Draggable.prototype.setGlobalDroppables = function (reset, drag, helper) {\n this.droppables[this.scope] = reset ? null : {\n draggable: drag,\n helper: helper,\n draggedElement: this.element\n };\n };\n Draggable.prototype.checkTargetElement = function (evt) {\n var target = this.getProperTargetElement(evt);\n var dropIns = this.getDropInstance(target);\n if (!dropIns && target && !isNullOrUndefined(target.parentNode)) {\n var parent_1 = closest(target.parentNode, '.e-droppable') || target.parentElement;\n if (parent_1) {\n dropIns = this.getDropInstance(parent_1);\n }\n }\n return { target: target, instance: dropIns };\n };\n Draggable.prototype.getDropInstance = function (ele) {\n var name = 'getModuleName';\n var drop;\n var eleInst = ele && ele.ej2_instances;\n if (eleInst) {\n for (var _i = 0, eleInst_1 = eleInst; _i < eleInst_1.length; _i++) {\n var inst = eleInst_1[_i];\n if (inst[\"\" + name]() === 'droppable') {\n drop = inst;\n break;\n }\n }\n }\n return drop;\n };\n Draggable.prototype.destroy = function () {\n this.toggleEvents(true);\n _super.prototype.destroy.call(this);\n };\n var Draggable_1;\n __decorate([\n Complex({}, Position)\n ], Draggable.prototype, \"cursorAt\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"clone\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"dragArea\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isDragScroll\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isReplaceDragEle\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"isPreventSelect\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStop\", void 0);\n __decorate([\n Property(1)\n ], Draggable.prototype, \"distance\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"handle\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"abort\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"helper\", void 0);\n __decorate([\n Property('default')\n ], Draggable.prototype, \"scope\", void 0);\n __decorate([\n Property('')\n ], Draggable.prototype, \"dragTarget\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"axis\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"queryPositionInfo\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTailMode\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"skipDistanceCheck\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"preventDefault\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableAutoScroll\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTapHold\", void 0);\n __decorate([\n Property(750)\n ], Draggable.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableScrollHandler\", void 0);\n Draggable = Draggable_1 = __decorate([\n NotifyPropertyChanges\n ], Draggable);\n return Draggable;\n}(Base));\nexport { Draggable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible, matches } from './dom';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { compareElementParent } from './util';\n/**\n * Droppable Module provides support to enable droppable functionality in Dom Elements.\n * ```html\n *
    Droppable
    \n * \n * ```\n */\nvar Droppable = /** @class */ (function (_super) {\n __extends(Droppable, _super);\n function Droppable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseOver = false;\n _this.dragData = {};\n _this.dragStopCalled = false;\n _this.bind();\n return _this;\n }\n Droppable.prototype.bind = function () {\n this.wireEvents();\n };\n Droppable.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop, this);\n };\n // triggers when property changed\n // eslint-disable-next-line\n Droppable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Droppable.prototype.getModuleName = function () {\n return 'droppable';\n };\n Droppable.prototype.intOver = function (event, element) {\n if (!this.mouseOver) {\n var drag = this.dragData[this.scope];\n this.trigger('over', { event: event, target: element, dragData: drag });\n this.mouseOver = true;\n }\n };\n Droppable.prototype.intOut = function (event, element) {\n if (this.mouseOver) {\n this.trigger('out', { evt: event, target: element });\n this.mouseOver = false;\n }\n };\n Droppable.prototype.intDrop = function (evt, element) {\n if (!this.dragStopCalled) {\n return;\n }\n else {\n this.dragStopCalled = false;\n }\n var accept = true;\n var drag = this.dragData[this.scope];\n var isDrag = drag ? (drag.helper && isVisible(drag.helper)) : false;\n var area;\n if (isDrag) {\n area = this.isDropArea(evt, drag.helper, element);\n if (this.accept) {\n accept = matches(drag.helper, this.accept);\n }\n }\n if (isDrag && this.drop && area.canDrop && accept) {\n this.trigger('drop', { event: evt, target: area.target, droppedElement: drag.helper, dragData: drag });\n }\n this.mouseOver = false;\n };\n Droppable.prototype.isDropArea = function (evt, helper, element) {\n var area = { canDrop: true, target: element || evt.target };\n var isTouch = evt.type === 'touchend';\n if (isTouch || area.target === helper) {\n helper.style.display = 'none';\n var coord = isTouch ? (evt.changedTouches[0]) : evt;\n var ele = document.elementFromPoint(coord.clientX, coord.clientY);\n area.canDrop = false;\n area.canDrop = compareElementParent(ele, this.element);\n if (area.canDrop) {\n area.target = ele;\n }\n helper.style.display = '';\n }\n return area;\n };\n Droppable.prototype.destroy = function () {\n EventHandler.remove(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property()\n ], Droppable.prototype, \"accept\", void 0);\n __decorate([\n Property('default')\n ], Droppable.prototype, \"scope\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"over\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"out\", void 0);\n Droppable = __decorate([\n NotifyPropertyChanges\n ], Droppable);\n return Droppable;\n}(Base));\nexport { Droppable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Base } from './base';\nvar keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n *
    ;\n * \n * ```\n */\nvar KeyboardEvents = /** @class */ (function (_super) {\n __extends(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n *\n * @param {HTMLElement} element ?\n * @param {KeyboardEventsModel} options ?\n */\n function KeyboardEvents(element, options) {\n var _this = _super.call(this, options, element) || this;\n /**\n * To handle a key press event returns null\n *\n * @param {KeyboardEventArgs} e ?\n * @returns {void} ?\n */\n _this.keyPressHandler = function (e) {\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var curkeyCode = e.which;\n var keys = Object.keys(_this.keyConfigs);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var configCollection = _this.keyConfigs[\"\" + key].split(',');\n for (var _a = 0, configCollection_1 = configCollection; _a < configCollection_1.length; _a++) {\n var rconfig = configCollection_1[_a];\n var rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && isCtrlKey === rKeyObj.ctrlKey &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n }\n }\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents;\n /**\n * Unwire bound events and destroy the instance.\n *\n * @returns {void} ?\n */\n KeyboardEvents.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * Function can be used to specify certain action if a property is changed\n *\n * @param {KeyboardEventsModel} newProp ?\n * @param {KeyboardEventsModel} oldProp ?\n * @returns {void} ?\n * @private\n */\n // eslint-disable-next-line\n KeyboardEvents.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n KeyboardEvents.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n *\n * @returns {string} ?\n * @private\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n *\n * @param {string} config - configuration data\n * @returns {KeyData} ?\n */\n KeyboardEvents.getKeyConfigData = function (config) {\n if (config in this.configCache) {\n return this.configCache[\"\" + config];\n }\n var keys = config.toLowerCase().split('+');\n var keyData = {\n altKey: (keys.indexOf('alt') !== -1 ? true : false),\n ctrlKey: (keys.indexOf('ctrl') !== -1 ? true : false),\n shiftKey: (keys.indexOf('shift') !== -1 ? true : false),\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n }\n else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[\"\" + config] = keyData;\n return keyData;\n };\n // Return the keycode value as string\n KeyboardEvents.getKeyCode = function (keyVal) {\n return keyCode[\"\" + keyVal] || keyVal.toUpperCase().charCodeAt(0);\n };\n var KeyboardEvents_1;\n KeyboardEvents.configCache = {};\n __decorate([\n Property({})\n ], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property('keyup')\n ], KeyboardEvents.prototype, \"eventName\", void 0);\n __decorate([\n Event()\n ], KeyboardEvents.prototype, \"keyAction\", void 0);\n KeyboardEvents = KeyboardEvents_1 = __decorate([\n NotifyPropertyChanges\n ], KeyboardEvents);\n return KeyboardEvents;\n}(Base));\nexport { KeyboardEvents };\n","import { extend, isNullOrUndefined } from './util';\nimport { defaultCulture } from './internationalization';\n/**\n * L10n modules provides localized text for different culture.\n * ```typescript\n * import {setCulture} from '@syncfusion/ts-base-library';\n * //load global locale object common for all components.\n * L10n.load({\n * 'fr-BE': {\n * 'button': {\n * 'check': 'vérifié'\n * }\n * }\n * });\n * //set globale default locale culture.\n * setCulture('fr-BE');\n * let instance: L10n = new L10n('button', {\n * check: 'checked'\n * });\n * //Get locale text for current property.\n * instance.getConstant('check');\n * //Change locale culture in a component.\n * instance.setLocale('en-US');\n * ```\n */\nvar L10n = /** @class */ (function () {\n /**\n * Constructor\n *\n * @param {string} controlName ?\n * @param {Object} localeStrings ?\n * @param {string} locale ?\n */\n function L10n(controlName, localeStrings, locale) {\n this.controlName = controlName;\n this.localeStrings = localeStrings;\n this.setLocale(locale || defaultCulture);\n }\n /**\n * Sets the locale text\n *\n * @param {string} locale ?\n * @returns {void} ?\n */\n L10n.prototype.setLocale = function (locale) {\n var intLocale = this.intGetControlConstant(L10n.locale, locale);\n this.currentLocale = intLocale || this.localeStrings;\n };\n /**\n * Sets the global locale for all components.\n *\n * @param {Object} localeObject - specifies the localeObject to be set as global locale.\n * @returns {void} ?\n */\n L10n.load = function (localeObject) {\n this.locale = extend(this.locale, localeObject, {}, true);\n };\n /**\n * Returns current locale text for the property based on the culture name and control name.\n *\n * @param {string} prop - specifies the property for which localize text to be returned.\n * @returns {string} ?\n */\n L10n.prototype.getConstant = function (prop) {\n // Removed conditional operator because this method does not return correct value when passing 0 as value in localization\n if (!isNullOrUndefined(this.currentLocale[\"\" + prop])) {\n return this.currentLocale[\"\" + prop];\n }\n else {\n return this.localeStrings[\"\" + prop] || '';\n }\n };\n /**\n * Returns the control constant object for current object and the locale specified.\n *\n * @param {Object} curObject ?\n * @param {string} locale ?\n * @returns {Object} ?\n */\n L10n.prototype.intGetControlConstant = function (curObject, locale) {\n if ((curObject)[\"\" + locale]) {\n return (curObject)[\"\" + locale][this.controlName];\n }\n return null;\n };\n L10n.locale = {};\n return L10n;\n}());\nexport { L10n };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { extend } from './util';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Browser } from './browser';\nimport { Base } from './base';\nimport { ChildProperty } from './child-property';\nimport { EventHandler } from './event-handler';\n/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nvar SwipeSettings = /** @class */ (function (_super) {\n __extends(SwipeSettings, _super);\n function SwipeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(50)\n ], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\n return SwipeSettings;\n}(ChildProperty));\nexport { SwipeSettings };\nvar swipeRegex = /(Up|Down)/;\n/**\n * Touch class provides support to handle the touch event like tap, double tap, tap hold, etc..,\n * ```typescript\n * let node: HTMLElement;\n * let touchObj: Touch = new Touch({\n * element: node,\n * tap: function (e) {\n * // tap handler function code\n * }\n * tapHold: function (e) {\n * // tap hold handler function code\n * }\n * scroll: function (e) {\n * // scroll handler function code\n * }\n * swipe: function (e) {\n * // swipe handler function code\n * }\n * });\n * ```\n */\nvar Touch = /** @class */ (function (_super) {\n __extends(Touch, _super);\n /* End-Properties */\n function Touch(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.touchAction = true;\n _this.tapCount = 0;\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.startEvent = function (evt) {\n if (_this.touchAction === true) {\n var point = _this.updateChangeTouches(evt);\n if (evt.changedTouches !== undefined) {\n _this.touchAction = false;\n }\n _this.isTouchMoved = false;\n _this.movedDirection = '';\n _this.startPoint = _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n _this.startEventData = point;\n _this.hScrollLocked = _this.vScrollLocked = false;\n _this.tStampStart = Date.now();\n _this.timeOutTapHold = setTimeout(function () { _this.tapHoldEvent(evt); }, _this.tapHoldThreshold);\n EventHandler.add(_this.element, Browser.touchMoveEvent, _this.moveEvent, _this);\n EventHandler.add(_this.element, Browser.touchEndEvent, _this.endEvent, _this);\n EventHandler.add(_this.element, Browser.touchCancelEvent, _this.cancelEvent, _this);\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.moveEvent = function (evt) {\n var point = _this.updateChangeTouches(evt);\n _this.movedPoint = point;\n _this.isTouchMoved = !(point.clientX === _this.startPoint.clientX && point.clientY === _this.startPoint.clientY);\n var eScrollArgs = {};\n if (_this.isTouchMoved) {\n clearTimeout(_this.timeOutTapHold);\n _this.calcScrollPoints(evt);\n var scrollArg = {\n startEvents: _this.startEventData,\n originalEvent: evt, startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY, distanceX: _this.distanceX,\n distanceY: _this.distanceY, scrollDirection: _this.scrollDirection,\n velocity: _this.getVelocity(point)\n };\n eScrollArgs = extend(eScrollArgs, {}, scrollArg);\n _this.trigger('scroll', eScrollArgs);\n _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.cancelEvent = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n _this.tapCount = 0;\n _this.swipeFn(evt);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.endEvent = function (evt) {\n _this.swipeFn(evt);\n if (!_this.isTouchMoved) {\n if (typeof _this.tap === 'function') {\n _this.trigger('tap', { originalEvent: evt, tapCount: ++_this.tapCount });\n _this.timeOutTap = setTimeout(function () {\n _this.tapCount = 0;\n }, _this.tapThreshold);\n }\n }\n _this.modeclear();\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.swipeFn = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n var point = _this.updateChangeTouches(evt);\n var diffX = point.clientX - _this.startPoint.clientX;\n var diffY = point.clientY - _this.startPoint.clientY;\n diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);\n diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);\n _this.isTouchMoved = diffX > 1 || diffY > 1;\n var isFirefox = (/Firefox/).test(Browser.userAgent);\n if (isFirefox && point.clientX === 0 && point.clientY === 0 && evt.type === 'mouseup') {\n _this.isTouchMoved = false;\n }\n _this.endPoint = point;\n _this.calcPoints(evt);\n var swipeArgs = {\n originalEvent: evt,\n startEvents: _this.startEventData,\n startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY,\n distanceX: _this.distanceX, distanceY: _this.distanceY, swipeDirection: _this.movedDirection,\n velocity: _this.getVelocity(point)\n };\n if (_this.isTouchMoved) {\n var eSwipeArgs = void 0;\n var tDistance = _this.swipeSettings.swipeThresholdDistance;\n // eslint-disable-next-line\n eSwipeArgs = extend(eSwipeArgs, _this.defaultArgs, swipeArgs);\n var canTrigger = false;\n var ele = _this.element;\n var scrollBool = _this.isScrollable(ele);\n var moved = swipeRegex.test(_this.movedDirection);\n if ((tDistance < _this.distanceX && !moved) || (tDistance < _this.distanceY && moved)) {\n if (!scrollBool) {\n canTrigger = true;\n }\n else {\n canTrigger = _this.checkSwipe(ele, moved);\n }\n }\n if (canTrigger) {\n _this.trigger('swipe', eSwipeArgs);\n }\n }\n _this.modeclear();\n };\n _this.modeclear = function () {\n _this.modeClear = setTimeout(function () {\n _this.touchAction = true;\n }, (typeof _this.tap !== 'function' ? 0 : 20));\n _this.lastTapTime = new Date().getTime();\n EventHandler.remove(_this.element, Browser.touchMoveEvent, _this.moveEvent);\n EventHandler.remove(_this.element, Browser.touchEndEvent, _this.endEvent);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.bind();\n return _this;\n }\n // triggers when property changed\n /**\n *\n * @private\n * @param {TouchModel} newProp ?\n * @param {TouchModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Touch.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Touch.prototype.bind = function () {\n this.wireEvents();\n if (Browser.isIE) {\n this.element.classList.add('e-block-touch');\n }\n };\n /**\n * To destroy the touch instance.\n *\n * @returns {void}\n */\n Touch.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n // Need to changes the event binding once we updated the event handler.\n Touch.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchStartEvent, this.startEvent, this);\n };\n Touch.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.startEvent);\n };\n /**\n * Returns module name as touch\n *\n * @returns {string} ?\n * @private\n */\n Touch.prototype.getModuleName = function () {\n return 'touch';\n };\n /**\n * Returns if the HTML element is Scrollable.\n *\n * @param {HTMLElement} element - HTML Element to check if Scrollable.\n * @returns {boolean} ?\n */\n Touch.prototype.isScrollable = function (element) {\n var eleStyle = getComputedStyle(element);\n var style = eleStyle.overflow + eleStyle.overflowX + eleStyle.overflowY;\n if ((/(auto|scroll)/).test(style)) {\n return true;\n }\n return false;\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n Touch.prototype.tapHoldEvent = function (evt) {\n this.tapCount = 0;\n this.touchAction = true;\n var eTapArgs;\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n // eslint-disable-next-line\n eTapArgs = { originalEvent: evt };\n this.trigger('tapHold', eTapArgs);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n };\n Touch.prototype.calcPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.startPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.startPoint.clientY)));\n if (this.distanceX > this.distanceY) {\n this.movedDirection = (point.clientX > this.startPoint.clientX) ? 'Right' : 'Left';\n }\n else {\n this.movedDirection = (point.clientY < this.startPoint.clientY) ? 'Up' : 'Down';\n }\n };\n Touch.prototype.calcScrollPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.lastMovedPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.lastMovedPoint.clientY)));\n if ((this.distanceX > this.distanceY || this.hScrollLocked === true) && this.vScrollLocked === false) {\n this.scrollDirection = (point.clientX > this.lastMovedPoint.clientX) ? 'Right' : 'Left';\n this.hScrollLocked = true;\n }\n else {\n this.scrollDirection = (point.clientY < this.lastMovedPoint.clientY) ? 'Up' : 'Down';\n this.vScrollLocked = true;\n }\n };\n Touch.prototype.getVelocity = function (pnt) {\n var newX = pnt.clientX;\n var newY = pnt.clientY;\n var newT = Date.now();\n var xDist = newX - this.startPoint.clientX;\n var yDist = newY - this.startPoint.clientX;\n var interval = newT - this.tStampStart;\n return Math.sqrt(xDist * xDist + yDist * yDist) / interval;\n };\n // eslint-disable-next-line\n Touch.prototype.checkSwipe = function (ele, flag) {\n var keys = ['scroll', 'offset'];\n var temp = flag ? ['Height', 'Top'] : ['Width', 'Left'];\n if ((ele[keys[0] + temp[0]] <= ele[keys[1] + temp[0]])) {\n return true;\n }\n return (ele[keys[0] + temp[1]] === 0) ||\n (ele[keys[1] + temp[0]] + ele[keys[0] + temp[1]] >= ele[keys[0] + temp[0]]);\n };\n Touch.prototype.updateChangeTouches = function (evt) {\n var point = evt.changedTouches && evt.changedTouches.length !== 0 ? evt.changedTouches[0] : evt;\n return point;\n };\n __decorate([\n Event()\n ], Touch.prototype, \"tap\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"tapHold\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"swipe\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"scroll\", void 0);\n __decorate([\n Property(350)\n ], Touch.prototype, \"tapThreshold\", void 0);\n __decorate([\n Property(750)\n ], Touch.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Complex({}, SwipeSettings)\n ], Touch.prototype, \"swipeSettings\", void 0);\n Touch = __decorate([\n NotifyPropertyChanges\n ], Touch);\n return Touch;\n}(Base));\nexport { Touch };\n","/**\n * Template Engine\n */\nvar LINES = new RegExp('\\\\n|\\\\r|\\\\s\\\\s+', 'g');\nvar QUOTES = new RegExp(/'|\"/g);\nvar IF_STMT = new RegExp('if ?\\\\(');\nvar ELSEIF_STMT = new RegExp('else if ?\\\\(');\nvar ELSE_STMT = new RegExp('else');\nvar FOR_STMT = new RegExp('for ?\\\\(');\nvar IF_OR_FOR = new RegExp('(/if|/for)');\nvar CALL_FUNCTION = new RegExp('\\\\((.*)\\\\)', '');\nvar NOT_NUMBER = new RegExp('^[0-9]+$', 'g');\nvar WORD = new RegExp('[\\\\w\"\\'.\\\\s+]+', 'g');\nvar DBL_QUOTED_STR = new RegExp('\"(.*?)\"', 'g');\nvar WORDIF = new RegExp('[\\\\w\"\\'@#$.\\\\s-+]+', 'g');\nvar exp = new RegExp('\\\\${([^}]*)}', 'g');\n// let cachedTemplate: Object = {};\nvar ARR_OBJ = /^\\..*/gm;\nvar SINGLE_SLASH = /\\\\/gi;\nvar DOUBLE_SLASH = /\\\\\\\\/gi;\nvar WORDFUNC = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nvar WINDOWFUNC = /\\window\\./gm;\n/**\n * The function to set regular expression for template expression string.\n *\n * @param {RegExp} value - Value expression.\n * @returns {RegExp} ?\n * @private\n */\nexport function expression(value) {\n if (value) {\n exp = value;\n }\n return exp;\n}\n// /**\n// * To render the template string from the given data.\n// * @param {string} template - String Template.\n// * @param {Object[]|JSON} data - DataSource for the template.\n// * @param {Object} helper? - custom helper object.\n// */\n// export function template(template: string, data: JSON, helper?: Object): string {\n// let hash: string = hashCode(template);\n// let tmpl: Function;\n// if (!cachedTemplate[hash]) {\n// tmpl = cachedTemplate[hash] = compile(template, helper);\n// } else {\n// tmpl = cachedTemplate[hash];\n// }\n// return tmpl(data);\n// }\n/**\n * Compile the template string into template function.\n *\n * @param {string | Function} template - The template string which is going to convert.\n * @param {Object} helper - Helper functions as an object.\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n * @private\n */\nexport function compile(template, helper, ignorePrefix) {\n if (typeof template === 'function') {\n return template;\n }\n else {\n var argName = 'data';\n var evalExpResult = evalExp(template, argName, helper, ignorePrefix);\n /* eslint-disable */\n var condtion = \"var valueRegEx = (/value=\\\\'([A-Za-z0-9 _]*)((.)([\\\\w)(!-;?-\\u25A0\\\\s]+)['])/g);\\n var hrefRegex = (/(?:href)([\\\\s='\\\"./]+)([\\\\w-./?=&\\\\\\\\#\\\"]+)((.)([\\\\w)(!-;/?-\\u25A0\\\\s]+)['])/g);\\n if(str.match(valueRegEx)){\\n var check = str.match(valueRegEx);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(valueRegEx)[i].split('value=')[1];\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n str = str.replace(str, str1);\\n }\\n else if (str.match(/(?:href='')/) === null) {\\n if(str.match(hrefRegex)) {\\n var check = str.match(hrefRegex);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(hrefRegex)[i].split('href=')[1];\\n if (check1) {\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n }\\n str = str.replace(str, str1);\\n }\\n }\\n \";\n var fnCode = 'var str=\\\"' + evalExpResult + '\\\";' + condtion + ' return str;';\n /* eslint-enable */\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n }\n}\n/** function used to evaluate the function expression\n *\n * @param {string} str ?\n * @param {string} nameSpace ?\n * @param {Object} helper ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction evalExp(str, nameSpace, helper, ignorePrefix) {\n var varCOunt = 0;\n /**\n * Variable containing Local Keys\n */\n var localKeys = [];\n var isClass = str.match(/class=\"([^\"]+|)\\s{2}/g);\n var singleSpace = '';\n if (isClass) {\n isClass.forEach(function (value) {\n singleSpace = value.replace(/\\s\\s+/g, ' ');\n str = str.replace(value, singleSpace);\n });\n }\n if (exp.test(str)) {\n var insideBraces = false;\n var outputString = '';\n for (var i = 0; i < str.length; i++) {\n if (str[i + ''] === '$' && str[i + 1] === '{') {\n insideBraces = true;\n }\n else if (str[i + ''] === '}') {\n insideBraces = false;\n }\n outputString += (str[i + ''] === '\"' && !insideBraces) ? '\\\\\"' : str[i + ''];\n }\n str = outputString;\n }\n else {\n str = str.replace(/\\\\?\"/g, '\\\\\"');\n }\n return str.replace(LINES, '').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, \n // eslint-disable-next-line\n function (match, cnt, offset, matchStr) {\n var SPECIAL_CHAR = /@|#|\\$/gm;\n var matches = cnt.match(CALL_FUNCTION);\n // matches to detect any function calls\n if (matches) {\n var rlStr = matches[1];\n if (ELSEIF_STMT.test(cnt)) {\n //handling else-if condition\n cnt = '\";} ' + cnt.replace(matches[1], rlStr.replace(WORD, function (str) {\n str = str.trim();\n return addNameSpace(str, !(QUOTES.test(str)) && (localKeys.indexOf(str) === -1), nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (IF_STMT.test(cnt)) {\n //handling if condition\n cnt = '\"; ' + cnt.replace(matches[1], rlStr.replace(WORDIF, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (FOR_STMT.test(cnt)) {\n //handling for condition\n var rlStr_1 = matches[1].split(' of ');\n // replace for each into actual JavaScript\n // eslint-disable-next-line\n cnt = '\"; ' + cnt.replace(matches[1], function (mtc) {\n localKeys.push(rlStr_1[0]);\n localKeys.push(rlStr_1[0] + 'Index');\n varCOunt = varCOunt + 1;\n // tslint:disable-next-line\n return 'var i' + varCOunt + '=0; i' + varCOunt + ' < ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + rlStr_1[0] + '= ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix)\n + '[i' + varCOunt + ']; \\n var ' + rlStr_1[0] + 'Index=i' + varCOunt + '; \\n str = str + \"';\n }\n else {\n //helper function handling\n var fnStr = cnt.split('(');\n // eslint-disable-next-line\n var fNameSpace = (helper && helper.hasOwnProperty(fnStr[0]) ? 'this.' : 'global');\n fNameSpace = (/\\./.test(fnStr[0]) ? '' : fNameSpace);\n var ftArray = matches[1].split(',');\n if (matches[1].length !== 0 && !(/data/).test(ftArray[0]) && !(/window./).test(ftArray[0])) {\n matches[1] = (fNameSpace === 'global' ? nameSpace + '.' + matches[1] : matches[1]);\n }\n var splRegexp = /@|\\$|#/gm;\n var arrObj = /\\]\\./gm;\n if (WINDOWFUNC.test(cnt) && arrObj.test(cnt) || splRegexp.test(cnt)) {\n var splArrRegexp = /@|\\$|#|\\]\\./gm;\n if (splArrRegexp.test(cnt)) {\n // tslint:disable-next-line\n cnt = '\"+ ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(matches[1], rlStr.replace(WORDFUNC, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '+ \"';\n }\n }\n else {\n cnt = '\" + ' + (fNameSpace === 'global' ? '' : fNameSpace) +\n cnt.replace(rlStr, addNameSpace(matches[1].replace(/,( |)data.|,/gi, ',' + nameSpace + '.').replace(/,( |)data.window/gi, ',window'), (fNameSpace === 'global' ? false : true), nameSpace, localKeys, ignorePrefix)) +\n '+\"';\n }\n }\n }\n else if (ELSE_STMT.test(cnt)) {\n // handling else condition\n cnt = '\"; ' + cnt.replace(ELSE_STMT, '} else { \\n str = str + \"');\n // eslint-disable-next-line\n }\n else if (!!cnt.match(IF_OR_FOR)) {\n // close condition\n cnt = cnt.replace(IF_OR_FOR, '\"; \\n } \\n str = str + \"');\n }\n else if (SPECIAL_CHAR.test(cnt)) {\n // template string with double slash with special character\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n }\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // template string with double slash\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // evaluate normal expression\n cnt = cnt !== '' ? '\"+' + addNameSpace(cnt.replace(/,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys, ignorePrefix) + '+\"' : '${}';\n }\n }\n return cnt;\n });\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction addNameSpace(str, addNS, nameSpace, ignoreList, ignorePrefix) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1 && !ignorePrefix && str !== 'true' && str !== 'false') ? nameSpace + '.' + str : str);\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n var arrObjReg = /^\\..*/gm;\n return ((addNS && !(NOT_NUMBER.test(str)) &&\n ignoreList.indexOf(str.split('.')[0]) === -1 && !(arrObjReg.test(str))) ? nameSpace + '.' + str : str);\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '[\"' + str : str);\n}\n// eslint-disable-next-line\nfunction SlashReplace(tempStr) {\n var double = '\\\\\\\\';\n if (tempStr.match(DOUBLE_SLASH)) {\n // eslint-disable-next-line\n tempStr = tempStr;\n }\n else {\n tempStr = tempStr.replace(SINGLE_SLASH, double);\n }\n return tempStr;\n}\n/**\n *\n * @param {string} str ?\n * @param {string} nameSpaceNew ?\n * @param {string[]} keys ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys, ignorePrefix) {\n str = str.trim();\n var windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n var quotes = /'|\"/gm;\n var splRegexp = /@|\\$|#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, (keys.indexOf(str) === -1), nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n else {\n return addNameSpace(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys, ignorePrefix);\n }\n }\n else {\n return str;\n }\n}\n","/**\n * Template Engine Bridge\n */\nimport { compile as render } from './template';\nimport { createElement } from './dom';\nimport { isNullOrUndefined, isBlazor } from './util';\nvar HAS_ROW = /^[\\n\\r.]+ 0) {\n elements.forEach(function (element) {\n detach(element);\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeJsEvents = function () {\n var elements = this.wrapElement.querySelectorAll('[' + jsEvents.join('],[') + ']');\n if (elements.length > 0) {\n elements.forEach(function (element) {\n jsEvents.forEach(function (attr) {\n if (element.hasAttribute(attr)) {\n element.removeAttribute(attr);\n }\n });\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeXssAttrs = function () {\n var _this = this;\n // eslint-disable-next-line\n this.removeAttrs.forEach(function (item, index) {\n var elements = _this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n elements.forEach(function (element) {\n element.removeAttribute(item.attribute);\n });\n }\n });\n };\n return SanitizeHtmlHelper;\n}());\nexport { SanitizeHtmlHelper };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Component, isBlazor, isRippleEnabled } from '@syncfusion/ej2-base';\nimport { addClass, Event, detach, removeClass } from '@syncfusion/ej2-base';\nimport { rippleEffect, EventHandler, Observer, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getTextNode } from '../common/common';\n/**\n * Defines the icon position of button.\n */\nexport var IconPosition;\n(function (IconPosition) {\n /**\n * Positions the Icon at the left of the text content in the Button.\n */\n IconPosition[\"Left\"] = \"Left\";\n /**\n * Positions the Icon at the right of the text content in the Button.\n */\n IconPosition[\"Right\"] = \"Right\";\n /**\n * Positions the Icon at the top of the text content in the Button.\n */\n IconPosition[\"Top\"] = \"Top\";\n /**\n * Positions the Icon at the bottom of the text content in the Button.\n */\n IconPosition[\"Bottom\"] = \"Bottom\";\n})(IconPosition || (IconPosition = {}));\nexport var buttonObserver = new Observer();\nvar cssClassName = {\n RTL: 'e-rtl',\n BUTTON: 'e-btn',\n PRIMARY: 'e-primary',\n ICONBTN: 'e-icon-btn'\n};\n/**\n * The Button is a graphical user interface element that triggers an event on its click action. It can contain a text, an image, or both.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Button = /** @class */ (function (_super) {\n __extends(Button, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {ButtonModel} options - Specifies the button model\n * @param {string|HTMLButtonElement} element - Specifies the target element\n */\n function Button(options, element) {\n return _super.call(this, options, element) || this;\n }\n Button.prototype.preRender = function () {\n // pre render code snippets\n };\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Button.prototype.render = function () {\n this.initialize();\n this.removeRippleEffect = rippleEffect(this.element, { selector: '.' + cssClassName.BUTTON });\n this.renderComplete();\n };\n Button.prototype.initialize = function () {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n if (!isBlazor() || (isBlazor() && this.getModuleName() !== 'progress-btn')) {\n if (this.content) {\n var tempContent = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.content) : this.content;\n this.element.innerHTML = tempContent;\n }\n this.setIconCss();\n }\n if (this.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n if (this.disabled) {\n this.controlStatus(this.disabled);\n }\n else {\n this.wireEvents();\n }\n };\n Button.prototype.controlStatus = function (disabled) {\n this.element.disabled = disabled;\n };\n Button.prototype.setIconCss = function () {\n if (this.iconCss) {\n var span = this.createElement('span', { className: 'e-btn-icon ' + this.iconCss });\n if (!this.element.textContent.trim()) {\n this.element.classList.add(cssClassName.ICONBTN);\n }\n else {\n span.classList.add('e-icon-' + this.iconPosition.toLowerCase());\n if (this.iconPosition === 'Top' || this.iconPosition === 'Bottom') {\n this.element.classList.add('e-' + this.iconPosition.toLowerCase() + '-icon-btn');\n }\n }\n var node = this.element.childNodes[0];\n if (node && (this.iconPosition === 'Left' || this.iconPosition === 'Top')) {\n this.element.insertBefore(span, node);\n }\n else {\n this.element.appendChild(span);\n }\n }\n };\n Button.prototype.wireEvents = function () {\n if (this.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n };\n Button.prototype.unWireEvents = function () {\n if (this.isToggle) {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n }\n };\n Button.prototype.btnClickHandler = function () {\n if (this.element.classList.contains('e-active')) {\n this.element.classList.remove('e-active');\n }\n else {\n this.element.classList.add('e-active');\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Button.prototype.destroy = function () {\n var classList = [cssClassName.PRIMARY, cssClassName.RTL, cssClassName.ICONBTN, 'e-success', 'e-info', 'e-danger',\n 'e-warning', 'e-flat', 'e-outline', 'e-small', 'e-bigger', 'e-active', 'e-round',\n 'e-top-icon-btn', 'e-bottom-icon-btn'];\n if (this.cssClass) {\n classList = classList.concat(this.cssClass.split(' '));\n }\n _super.prototype.destroy.call(this);\n removeClass([this.element], classList);\n if (!this.element.getAttribute('class')) {\n this.element.removeAttribute('class');\n }\n if (this.disabled) {\n this.element.removeAttribute('disabled');\n }\n if (this.content) {\n this.element.innerHTML = this.element.innerHTML.replace(this.content, '');\n }\n var span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.unWireEvents();\n if (isRippleEnabled) {\n this.removeRippleEffect();\n }\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Button.prototype.getModuleName = function () {\n return 'btn';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist Data\n * @private\n */\n Button.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @private\n * @returns {void}\n */\n Button.Inject = function () {\n // Inject code snippets\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ButtonModel} newProp - Specifies new properties\n * @param {ButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Button.prototype.onPropertyChanged = function (newProp, oldProp) {\n var span = this.element.querySelector('span.e-btn-icon');\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'isPrimary':\n if (newProp.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n else {\n this.element.classList.remove(cssClassName.PRIMARY);\n }\n break;\n case 'disabled':\n this.controlStatus(newProp.disabled);\n break;\n case 'iconCss': {\n span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n if (newProp.iconCss) {\n span.className = 'e-btn-icon ' + newProp.iconCss;\n if (this.element.textContent.trim()) {\n if (this.iconPosition === 'Left') {\n span.classList.add('e-icon-left');\n }\n else {\n span.classList.add('e-icon-right');\n }\n }\n }\n else {\n detach(span);\n }\n }\n else {\n this.setIconCss();\n }\n break;\n }\n case 'iconPosition':\n removeClass([this.element], ['e-top-icon-btn', 'e-bottom-icon-btn']);\n span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.setIconCss();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n else {\n this.element.classList.remove(cssClassName.RTL);\n }\n break;\n case 'content': {\n var node = getTextNode(this.element);\n if (!node) {\n this.element.classList.remove(cssClassName.ICONBTN);\n }\n if (!isBlazor() || (isBlazor() && !this.isServerRendered && this.getModuleName() !== 'progress-btn')) {\n if (this.enableHtmlSanitizer) {\n newProp.content = SanitizeHtmlHelper.sanitize(newProp.content);\n }\n this.element.innerHTML = newProp.content;\n this.setIconCss();\n }\n break;\n }\n case 'isToggle':\n if (newProp.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n else {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n removeClass([this.element], ['e-active']);\n }\n break;\n }\n }\n };\n /**\n * Click the button element\n * its native method\n *\n * @public\n * @returns {void}\n */\n Button.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to Button\n * its native method\n *\n * @public\n * @returns {void}\n */\n Button.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('Left')\n ], Button.prototype, \"iconPosition\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"isPrimary\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"content\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"isToggle\", void 0);\n __decorate([\n Property()\n ], Button.prototype, \"locale\", void 0);\n __decorate([\n Property(true)\n ], Button.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Event()\n ], Button.prototype, \"created\", void 0);\n Button = __decorate([\n NotifyPropertyChanges\n ], Button);\n return Button;\n}(Component));\nexport { Button };\n","import { detach, getUniqueID, rippleEffect, setValue, attributes } from '@syncfusion/ej2-base';\nimport { getValue, addClass, deleteObject } from '@syncfusion/ej2-base';\n/**\n * Initialize wrapper element for angular.\n *\n * @private\n *\n * @param {CreateElementArgs} createElement - Specifies created element args\n * @param {string} tag - Specifies tag name\n * @param {string} type - Specifies type name\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} WRAPPER - Specifies wrapper element\n * @param {string} role - Specifies role\n * @returns {HTMLInputElement} - Input Element\n */\nexport function wrapperInitialize(createElement, tag, type, element, WRAPPER, role) {\n var input = element;\n if (element.tagName === tag) {\n var ejInstance = getValue('ej2_instances', element);\n input = createElement('input', { attrs: { 'type': type } });\n var props = ['change', 'cssClass', 'label', 'labelPosition', 'id'];\n for (var index = 0, len = element.attributes.length; index < len; index++) {\n if (props.indexOf(element.attributes[index].nodeName) === -1) {\n input.setAttribute(element.attributes[index].nodeName, element.attributes[index].nodeValue);\n }\n }\n attributes(element, { 'class': WRAPPER });\n element.appendChild(input);\n setValue('ej2_instances', ejInstance, input);\n deleteObject(element, 'ej2_instances');\n }\n return input;\n}\n/**\n * Get the text node.\n *\n * @param {HTMLElement} element - Specifies html element\n * @private\n * @returns {Node} - Text node.\n */\nexport function getTextNode(element) {\n var node;\n var childnode = element.childNodes;\n for (var i = 0; i < childnode.length; i++) {\n node = childnode[i];\n if (node.nodeType === 3) {\n return node;\n }\n }\n return null;\n}\n/**\n * Destroy the button components.\n *\n * @private\n * @param {Switch | CheckBox} ejInst - Specifies eJ2 Instance\n * @param {Element} wrapper - Specifies wrapper element\n * @param {string} tagName - Specifies tag name\n * @returns {void}\n */\nexport function destroy(ejInst, wrapper, tagName) {\n if (tagName === 'INPUT') {\n wrapper.parentNode.insertBefore(ejInst.element, wrapper);\n detach(wrapper);\n ejInst.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n ejInst.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n ejInst.element = wrapper;\n }\n}\n/**\n * Initialize control pre rendering.\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies proxy\n * @param {string} control - Specifies control\n * @param {string} wrapper - Specifies wrapper element\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} moduleName - Specifies module name\n * @returns {void}\n */\nexport function preRender(proxy, control, wrapper, element, moduleName) {\n element = wrapperInitialize(proxy.createElement, control, 'checkbox', element, wrapper, moduleName);\n proxy.element = element;\n if (proxy.element.getAttribute('type') !== 'checkbox') {\n proxy.element.setAttribute('type', 'checkbox');\n }\n if (!proxy.element.id) {\n proxy.element.id = getUniqueID('e-' + moduleName);\n }\n}\n/**\n * Creates CheckBox component UI with theming and ripple support.\n *\n * @private\n * @param {CreateElementArgs} createElement - Specifies Created Element args\n * @param {boolean} enableRipple - Specifies ripple effect\n * @param {CheckBoxUtilModel} options - Specifies Checkbox util Model\n * @returns {Element} - Checkbox Element\n */\nexport function createCheckBox(createElement, enableRipple, options) {\n if (enableRipple === void 0) { enableRipple = false; }\n if (options === void 0) { options = {}; }\n var wrapper = createElement('div', { className: 'e-checkbox-wrapper e-css' });\n if (options.cssClass) {\n addClass([wrapper], options.cssClass.split(' '));\n }\n if (options.enableRtl) {\n wrapper.classList.add('e-rtl');\n }\n if (enableRipple) {\n var rippleSpan = createElement('span', { className: 'e-ripple-container' });\n rippleEffect(rippleSpan, { isCenterRipple: true, duration: 400 });\n wrapper.appendChild(rippleSpan);\n }\n var frameSpan = createElement('span', { className: 'e-frame e-icons' });\n if (options.checked) {\n frameSpan.classList.add('e-check');\n }\n wrapper.appendChild(frameSpan);\n if (options.label) {\n var labelSpan = createElement('span', { className: 'e-label' });\n if (options.disableHtmlEncode) {\n labelSpan.textContent = options.label;\n }\n else {\n labelSpan.innerHTML = options.label;\n }\n wrapper.appendChild(labelSpan);\n }\n return wrapper;\n}\n/**\n * Handles ripple mouse.\n *\n * @private\n * @param {MouseEvent} e - Specifies mouse event\n * @param {Element} rippleSpan - Specifies Ripple span element\n * @returns {void}\n */\nexport function rippleMouseHandler(e, rippleSpan) {\n if (rippleSpan) {\n var event_1 = document.createEvent('MouseEvents');\n event_1.initEvent(e.type, false, true);\n rippleSpan.dispatchEvent(event_1);\n }\n}\n/**\n * Append hidden input to given element\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies Proxy\n * @param {Element} wrap - Specifies Wrapper ELement\n * @returns {void}\n */\nexport function setHiddenInput(proxy, wrap) {\n if (proxy.element.getAttribute('ejs-for')) {\n wrap.appendChild(proxy.createElement('input', {\n attrs: { 'name': proxy.name || proxy.element.name, 'value': 'false', 'type': 'hidden' }\n }));\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { merge, extend, isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Query, Predicate } from './query';\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Adaptors are specific data source type aware interfaces that are used by DataManager to communicate with DataSource.\n * This is the base adaptor class that other adaptors can extend.\n *\n * @hidden\n */\nvar Adaptor = /** @class */ (function () {\n /**\n * Constructor for Adaptor class\n *\n * @param {DataOptions} ds?\n * @param ds\n * @hidden\n * @returns aggregates\n */\n function Adaptor(ds) {\n // common options for all the adaptors\n this.options = {\n from: 'table',\n requestType: 'json',\n sortBy: 'sorted',\n select: 'select',\n skip: 'skip',\n group: 'group',\n take: 'take',\n search: 'search',\n count: 'requiresCounts',\n where: 'where',\n aggregates: 'aggregates',\n expand: 'expand'\n };\n /**\n * Specifies the type of adaptor.\n *\n * @default Adaptor\n */\n this.type = Adaptor;\n this.dataSource = ds;\n this.pvt = {};\n }\n /**\n * Returns the data from the query processing.\n *\n * @param {Object} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param ds\n * @param query\n * @param xhr\n * @returns Object\n */\n Adaptor.prototype.processResponse = function (data, ds, query, xhr) {\n return data;\n };\n return Adaptor;\n}());\nexport { Adaptor };\n/**\n * JsonAdaptor is used to process JSON data. It contains methods to process the given JSON data based on the queries.\n *\n * @hidden\n */\nvar JsonAdaptor = /** @class */ (function (_super) {\n __extends(JsonAdaptor, _super);\n function JsonAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the JSON data based on the provided queries.\n *\n * @param {DataManager} dataManager\n * @param {Query} query\n * @returns Object\n */\n JsonAdaptor.prototype.processQuery = function (dataManager, query) {\n var result = dataManager.dataSource.json.slice(0);\n var count = result.length;\n var countFlg = true;\n var ret;\n var key;\n var lazyLoad = {};\n var keyCount = 0;\n var group = [];\n var page;\n for (var i = 0; i < query.lazyLoad.length; i++) {\n keyCount++;\n lazyLoad[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n var agg = {};\n for (var i = 0; i < query.queries.length; i++) {\n key = query.queries[i];\n if ((key.fn === 'onPage' || key.fn === 'onGroup') && query.lazyLoad.length) {\n if (key.fn === 'onGroup') {\n group.push(key.e);\n }\n if (key.fn === 'onPage') {\n page = key.e;\n }\n continue;\n }\n ret = this[key.fn].call(this, result, key.e, query);\n if (key.fn === 'onAggregates') {\n agg[key.e.field + ' - ' + key.e.type] = ret;\n }\n else {\n result = ret !== undefined ? ret : result;\n }\n if (key.fn === 'onPage' || key.fn === 'onSkip' || key.fn === 'onTake' || key.fn === 'onRange') {\n countFlg = false;\n }\n if (countFlg) {\n count = result.length;\n }\n }\n if (keyCount) {\n var args = {\n query: query, lazyLoad: lazyLoad, result: result, group: group, page: page\n };\n var lazyLoadData = this.lazyLoadGroup(args);\n result = lazyLoadData.result;\n count = lazyLoadData.count;\n }\n if (query.isCountRequired) {\n result = {\n result: result,\n count: count,\n aggregates: agg\n };\n }\n return result;\n };\n /**\n * Perform lazy load grouping in JSON array based on the given query and lazy load details.\n *\n * @param {LazyLoadGroupArgs} args\n */\n JsonAdaptor.prototype.lazyLoadGroup = function (args) {\n var count = 0;\n var agg = this.getAggregate(args.query);\n var result = args.result;\n if (!isNullOrUndefined(args.lazyLoad.onDemandGroupInfo)) {\n var req = args.lazyLoad.onDemandGroupInfo;\n for (var i = req.where.length - 1; i >= 0; i--) {\n result = this.onWhere(result, req.where[i]);\n }\n if (args.group.length !== req.level) {\n var field = args.group[req.level].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[0].comparer, true);\n }\n count = result.length;\n var data = result;\n result = result.slice(req.skip);\n result = result.slice(0, req.take);\n if (args.group.length !== req.level) {\n this.formGroupResult(result, data);\n }\n }\n else {\n var field = args.group[0].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[0].comparer, true);\n count = result.length;\n var data = result;\n if (args.page) {\n result = this.onPage(result, args.page, args.query);\n }\n this.formGroupResult(result, data);\n }\n return { result: result, count: count };\n };\n JsonAdaptor.prototype.formGroupResult = function (result, data) {\n if (result.length && data.length) {\n var uid = 'GroupGuid';\n var childLevel = 'childLevels';\n var level = 'level';\n var records = 'records';\n result[uid] = data[uid];\n result[childLevel] = data[childLevel];\n result[level] = data[level];\n result[records] = data[records];\n }\n return result;\n };\n /**\n * Separate the aggregate query from the given queries\n *\n * @param {Query} query\n */\n JsonAdaptor.prototype.getAggregate = function (query) {\n var aggQuery = Query.filterQueries(query.queries, 'onAggregates');\n var agg = [];\n if (aggQuery.length) {\n var tmp = void 0;\n for (var i = 0; i < aggQuery.length; i++) {\n tmp = aggQuery[i].e;\n agg.push({ type: tmp.type, field: DataUtil.getValue(tmp.field, query) });\n }\n }\n return agg;\n };\n /**\n * Performs batch update in the JSON array which add, remove and update records.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n JsonAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var i;\n var deletedRecordsLen = changes.deletedRecords.length;\n for (i = 0; i < changes.addedRecords.length; i++) {\n this.insert(dm, changes.addedRecords[i]);\n }\n for (i = 0; i < changes.changedRecords.length; i++) {\n this.update(dm, e.key, changes.changedRecords[i]);\n }\n for (i = 0; i < deletedRecordsLen; i++) {\n this.remove(dm, e.key, changes.deletedRecords[i]);\n }\n return changes;\n };\n /**\n * Performs filter operation with the given data and where query.\n *\n * @param {Object[]} ds\n * @param {{validate:Function}} e\n * @param e.validate\n */\n JsonAdaptor.prototype.onWhere = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.filter(function (obj) {\n if (e) {\n return e.validate(obj);\n }\n });\n };\n /**\n * Returns aggregate function based on the aggregate type.\n *\n * @param {Object[]} ds\n * @param e\n * @param {string} } type\n * @param e.field\n * @param e.type\n */\n JsonAdaptor.prototype.onAggregates = function (ds, e) {\n var fn = DataUtil.aggregates[e.type];\n if (!ds || !fn || ds.length === 0) {\n return null;\n }\n return fn(ds, e.field);\n };\n /**\n * Performs search operation based on the given query.\n *\n * @param {Object[]} ds\n * @param {QueryOptions} e\n */\n JsonAdaptor.prototype.onSearch = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n if (e.fieldNames.length === 0) {\n DataUtil.getFieldList(ds[0], e.fieldNames);\n }\n return ds.filter(function (obj) {\n for (var j = 0; j < e.fieldNames.length; j++) {\n if (e.comparer.call(obj, DataUtil.getObject(e.fieldNames[j], obj), e.searchKey, e.ignoreCase, e.ignoreAccent)) {\n return true;\n }\n }\n return false;\n });\n };\n /**\n * Sort the data with given direction and field.\n *\n * @param {Object[]} ds\n * @param e\n * @param {Object} b\n * @param e.comparer\n * @param e.fieldName\n * @param query\n */\n JsonAdaptor.prototype.onSortBy = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var fnCompare;\n var field = DataUtil.getValue(e.fieldName, query);\n if (!field) {\n return ds.sort(e.comparer);\n }\n if (field instanceof Array) {\n field = field.slice(0);\n for (var i = field.length - 1; i >= 0; i--) {\n if (!field[i]) {\n continue;\n }\n fnCompare = e.comparer;\n if (DataUtil.endsWith(field[i], ' desc')) {\n fnCompare = DataUtil.fnSort('descending');\n field[i] = field[i].replace(' desc', '');\n }\n ds = DataUtil.sort(ds, field[i], fnCompare);\n }\n return ds;\n }\n return DataUtil.sort(ds, field, e.comparer);\n };\n /**\n * Group the data based on the given query.\n *\n * @param {Object[]} ds\n * @param {QueryOptions} e\n * @param {Query} query\n */\n JsonAdaptor.prototype.onGroup = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var agg = this.getAggregate(query);\n return DataUtil.group(ds, DataUtil.getValue(e.fieldName, query), agg, null, null, e.comparer);\n };\n /**\n * Retrieves records based on the given page index and size.\n *\n * @param {Object[]} ds\n * @param e\n * @param {number} } pageIndex\n * @param e.pageSize\n * @param {Query} query\n * @param e.pageIndex\n */\n JsonAdaptor.prototype.onPage = function (ds, e, query) {\n var size = DataUtil.getValue(e.pageSize, query);\n var start = (DataUtil.getValue(e.pageIndex, query) - 1) * size;\n var end = start + size;\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(start, end);\n };\n /**\n * Retrieves records based on the given start and end index from query.\n *\n * @param {Object[]} ds\n * @param e\n * @param {number} } end\n * @param e.start\n * @param e.end\n */\n JsonAdaptor.prototype.onRange = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.start), DataUtil.getValue(e.end));\n };\n /**\n * Picks the given count of records from the top of the datasource.\n *\n * @param {Object[]} ds\n * @param {{nos:number}} e\n * @param e.nos\n */\n JsonAdaptor.prototype.onTake = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(0, DataUtil.getValue(e.nos));\n };\n /**\n * Skips the given count of records from the data source.\n *\n * @param {Object[]} ds\n * @param {{nos:number}} e\n * @param e.nos\n */\n JsonAdaptor.prototype.onSkip = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.nos));\n };\n /**\n * Selects specified columns from the data source.\n *\n * @param {Object[]} ds\n * @param {{fieldNames:string}} e\n * @param e.fieldNames\n */\n JsonAdaptor.prototype.onSelect = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return DataUtil.select(ds, DataUtil.getValue(e.fieldNames));\n };\n /**\n * Inserts new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param tableName\n * @param query\n * @param {number} position\n */\n JsonAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n if (isNullOrUndefined(position)) {\n return dm.dataSource.json.push(data);\n }\n else {\n return dm.dataSource.json.splice(position, 0, data);\n }\n };\n /**\n * Remove the data from the dataSource based on the key field value.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @returns null\n */\n JsonAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n if (typeof value === 'object' && !(value instanceof Date)) {\n value = DataUtil.getObject(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (DataUtil.getObject(keyField, ds[i]) === value) {\n break;\n }\n }\n return i !== ds.length ? ds.splice(i, 1) : null;\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @returns null\n */\n JsonAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n var key;\n if (!isNullOrUndefined(keyField)) {\n key = getValue(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (!isNullOrUndefined(keyField) && (getValue(keyField, ds[i])) === key) {\n break;\n }\n }\n return i < ds.length ? merge(ds[i], value) : null;\n };\n return JsonAdaptor;\n}(Adaptor));\nexport { JsonAdaptor };\n/**\n * URL Adaptor of DataManager can be used when you are required to use remote service to retrieve data.\n * It interacts with server-side for all DataManager Queries and CRUD operations.\n *\n * @hidden\n */\nvar UrlAdaptor = /** @class */ (function (_super) {\n __extends(UrlAdaptor, _super);\n function UrlAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the query to generate request body.\n *\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @param hierarchyFilters\n * @returns p\n */\n // tslint:disable-next-line:max-func-body-length\n UrlAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var params = query.params;\n var url = dm.dataSource.url;\n var temp;\n var skip;\n var take = null;\n var options = this.options;\n var request = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n // calc Paging & Range\n if ('onPage' in singles) {\n temp = singles.onPage;\n skip = DataUtil.getValue(temp.pageIndex, query);\n take = DataUtil.getValue(temp.pageSize, query);\n skip = (skip - 1) * take;\n }\n else if ('onRange' in singles) {\n temp = singles.onRange;\n skip = temp.start;\n take = temp.end - temp.start;\n }\n // Sorting\n for (var i = 0; i < queries.sorts.length; i++) {\n temp = DataUtil.getValue(queries.sorts[i].e.fieldName, query);\n request.sorts.push(DataUtil.callAdaptorFunction(this, 'onEachSort', { name: temp, direction: queries.sorts[i].e.direction }, query));\n }\n // hierarchy\n if (hierarchyFilters) {\n temp = this.getFiltersFrom(hierarchyFilters, query);\n if (temp) {\n request.filters.push(DataUtil.callAdaptorFunction(this, 'onEachWhere', temp.toJson(), query));\n }\n }\n // Filters\n for (var i = 0; i < queries.filters.length; i++) {\n var res = DataUtil.callAdaptorFunction(this, 'onEachWhere', queries.filters[i].e.toJson(), query);\n if ((this.getModuleName &&\n this.getModuleName() === 'ODataV4Adaptor') &&\n !isNullOrUndefined(queries.filters[i].e.key) && queries.filters.length > 1) {\n res = '(' + res + ')';\n }\n request.filters.push(res);\n var keys_3 = typeof request.filters[i] === 'object' ? Object.keys(request.filters[i]) : [];\n for (var _i = 0, keys_1 = keys_3; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (DataUtil.isNull((request)[prop])) {\n delete request[prop];\n }\n }\n }\n // Searches\n for (var i = 0; i < queries.searches.length; i++) {\n temp = queries.searches[i].e;\n request.searches.push(DataUtil.callAdaptorFunction(this, 'onEachSearch', {\n fields: temp.fieldNames,\n operator: temp.operator,\n key: temp.searchKey,\n ignoreCase: temp.ignoreCase\n }, query));\n }\n // Grouping\n for (var i = 0; i < queries.groups.length; i++) {\n request.groups.push(DataUtil.getValue(queries.groups[i].e.fieldName, query));\n }\n // aggregates\n for (var i = 0; i < queries.aggregates.length; i++) {\n temp = queries.aggregates[i].e;\n request.aggregates.push({ type: temp.type, field: DataUtil.getValue(temp.field, query) });\n }\n var req = {};\n this.getRequestQuery(options, query, singles, request, req);\n // Params\n DataUtil.callAdaptorFunction(this, 'addParams', { dm: dm, query: query, params: params, reqParams: req });\n if (query.lazyLoad.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n req[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n }\n // cleanup\n var keys = Object.keys(req);\n for (var _a = 0, keys_2 = keys; _a < keys_2.length; _a++) {\n var prop = keys_2[_a];\n if (DataUtil.isNull(req[prop]) || req[prop] === '' || req[prop].length === 0) {\n delete req[prop];\n }\n }\n if (!(options.skip in req && options.take in req) && take !== null) {\n req[options.skip] = DataUtil.callAdaptorFunction(this, 'onSkip', skip, query);\n req[options.take] = DataUtil.callAdaptorFunction(this, 'onTake', take, query);\n }\n var p = this.pvt;\n this.pvt = {};\n if (this.options.requestType === 'json') {\n return {\n data: JSON.stringify(req, DataUtil.parse.jsonDateReplacer),\n url: url,\n pvtData: p,\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n }\n temp = this.convertToQueryString(req, query, dm);\n temp = (dm.dataSource.url.indexOf('?') !== -1 ? '&' : '/') + temp;\n return {\n type: 'GET', url: temp.length ? url.replace(/\\/*$/, temp) : url, pvtData: p\n };\n };\n UrlAdaptor.prototype.getRequestQuery = function (options, query, singles, request, request1) {\n var param = 'param';\n var req = request1;\n req[options.from] = query.fromTable;\n if (options.apply && query.distincts.length) {\n req[options.apply] = 'onDistinct' in this ? DataUtil.callAdaptorFunction(this, 'onDistinct', query.distincts) : '';\n }\n if (!query.distincts.length && options.expand) {\n req[options.expand] = 'onExpand' in this && 'onSelect' in singles ?\n DataUtil.callAdaptorFunction(this, 'onExpand', { selects: DataUtil.getValue(singles.onSelect.fieldNames, query), expands: query.expands }, query) : query.expands;\n }\n req[options.select] = 'onSelect' in singles && !query.distincts.length ?\n DataUtil.callAdaptorFunction(this, 'onSelect', DataUtil.getValue(singles.onSelect.fieldNames, query), query) : '';\n req[options.count] = query.isCountRequired ? DataUtil.callAdaptorFunction(this, 'onCount', query.isCountRequired, query) : '';\n req[options.search] = request.searches.length ? DataUtil.callAdaptorFunction(this, 'onSearch', request.searches, query) : '';\n req[options.skip] = 'onSkip' in singles ?\n DataUtil.callAdaptorFunction(this, 'onSkip', DataUtil.getValue(singles.onSkip.nos, query), query) : '';\n req[options.take] = 'onTake' in singles ?\n DataUtil.callAdaptorFunction(this, 'onTake', DataUtil.getValue(singles.onTake.nos, query), query) : '';\n req[options.where] = request.filters.length || request.searches.length ?\n DataUtil.callAdaptorFunction(this, 'onWhere', request.filters, query) : '';\n req[options.sortBy] = request.sorts.length ? DataUtil.callAdaptorFunction(this, 'onSortBy', request.sorts, query) : '';\n req[options.group] = request.groups.length ? DataUtil.callAdaptorFunction(this, 'onGroup', request.groups, query) : '';\n req[options.aggregates] = request.aggregates.length ?\n DataUtil.callAdaptorFunction(this, 'onAggregates', request.aggregates, query) : '';\n req[param] = [];\n };\n /**\n * Convert the object from processQuery to string which can be added query string.\n *\n * @param {Object} req\n * @param request\n * @param {Query} query\n * @param {DataManager} dm\n */\n UrlAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n return '';\n // this needs to be overridden\n };\n /**\n * Return the data from the data manager processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Object} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n */\n UrlAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (xhr && xhr.headers.get('Content-Type') &&\n xhr.headers.get('Content-Type').indexOf('application/json') !== -1) {\n var handleTimeZone = DataUtil.timeZoneHandling;\n if (ds && !ds.timeZoneHandling) {\n DataUtil.timeZoneHandling = false;\n }\n data = DataUtil.parse.parseJson(data);\n DataUtil.timeZoneHandling = handleTimeZone;\n }\n var requests = request;\n var pvt = requests.pvtData || {};\n var groupDs = data ? data.groupDs : [];\n if (xhr && xhr.headers.get('Content-Type') &&\n xhr.headers.get('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n var d = JSON.parse(requests.data);\n if (d && d.action === 'batch' && data && data.addedRecords) {\n changes.addedRecords = data.addedRecords;\n return changes;\n }\n if (data && data.d) {\n data = data.d;\n }\n var args = {};\n if (data && 'count' in data) {\n args.count = data.count;\n }\n args.result = data && data.result ? data.result : data;\n var isExpand = false;\n if (Array.isArray(data.result) && data.result.length) {\n var key = 'key';\n var val = 'value';\n var level = 'level';\n if (!isNullOrUndefined(data.result[0][key])) {\n args.result = this.formRemoteGroupedData(args.result, 1, pvt.groups.length - 1);\n }\n if (query && query.lazyLoad.length && pvt.groups.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n if (query.lazyLoad[i][key] === 'onDemandGroupInfo') {\n var value = query.lazyLoad[i][val][level];\n if (pvt.groups.length === value) {\n isExpand = true;\n }\n }\n }\n }\n }\n if (!isExpand) {\n this.getAggregateResult(pvt, data, args, groupDs, query);\n }\n return DataUtil.isNull(args.count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n UrlAdaptor.prototype.formRemoteGroupedData = function (data, level, childLevel) {\n for (var i = 0; i < data.length; i++) {\n if (data[i].items.length && Object.keys(data[i].items[0]).indexOf('key') > -1) {\n this.formRemoteGroupedData(data[i].items, level + 1, childLevel - 1);\n }\n }\n var uid = 'GroupGuid';\n var childLvl = 'childLevels';\n var lvl = 'level';\n var records = 'records';\n data[uid] = consts[uid];\n data[lvl] = level;\n data[childLvl] = childLevel;\n data[records] = data[0].items.length ? this.getGroupedRecords(data, !isNullOrUndefined(data[0].items[records])) : [];\n return data;\n };\n UrlAdaptor.prototype.getGroupedRecords = function (data, hasRecords) {\n var childGroupedRecords = [];\n var records = 'records';\n for (var i = 0; i < data.length; i++) {\n if (!hasRecords) {\n for (var j = 0; j < data[i].items.length; j++) {\n childGroupedRecords.push(data[i].items[j]);\n }\n }\n else {\n childGroupedRecords = childGroupedRecords.concat(data[i].items[records]);\n }\n }\n return childGroupedRecords;\n };\n /**\n * Add the group query to the adaptor`s option.\n *\n * @param {Object[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return e;\n };\n /**\n * Add the aggregate query to the adaptor`s option.\n *\n * @param {Aggregates[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n * @param query\n * @param original\n */\n UrlAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var url;\n var key;\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.removeUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e[url],\n key: e[key]\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {Request} request\n * @returns void\n */\n UrlAdaptor.prototype.beforeSend = function (dm, request) {\n // need to extend this method\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.insert = function (dm, data, tableName, query) {\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number|string} value\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.remove = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: value,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.update = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: value,\n action: 'update',\n keyColumn: keyField,\n key: DataUtil.getObject(keyField, value),\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * To generate the predicate based on the filtered query.\n *\n * @param {Object[]|string[]|number[]} data\n * @param {Query} query\n * @hidden\n */\n UrlAdaptor.prototype.getFiltersFrom = function (data, query) {\n var key = query.fKey;\n var value;\n var prop = key;\n var pKey = query.key;\n var predicats = [];\n if (typeof data[0] !== 'object') {\n prop = null;\n }\n for (var i = 0; i < data.length; i++) {\n if (typeof data[0] === 'object') {\n value = DataUtil.getObject(pKey || prop, data[i]);\n }\n else {\n value = data[i];\n }\n predicats.push(new Predicate(key, 'equal', value));\n }\n return Predicate.or(predicats);\n };\n UrlAdaptor.prototype.getAggregateResult = function (pvt, data, args, groupDs, query) {\n var pData = data;\n if (data && data.result) {\n pData = data.result;\n }\n if (pvt && pvt.aggregates && pvt.aggregates.length) {\n var agg = pvt.aggregates;\n var fn = void 0;\n var aggregateData = pData;\n var res = {};\n if (data.aggregate) {\n aggregateData = data.aggregate;\n }\n for (var i = 0; i < agg.length; i++) {\n fn = DataUtil.aggregates[agg[i].type];\n if (fn) {\n res[agg[i].field + ' - ' + agg[i].type] = fn(aggregateData, agg[i].field);\n }\n }\n args.aggregates = res;\n }\n var key = 'key';\n var isServerGrouping = Array.isArray(data.result) && data.result.length && !isNullOrUndefined(data.result[0][key]);\n if (pvt && pvt.groups && pvt.groups.length && !isServerGrouping) {\n var groups = pvt.groups;\n for (var i = 0; i < groups.length; i++) {\n var level = null;\n if (!isNullOrUndefined(groupDs)) {\n groupDs = DataUtil.group(groupDs, groups[i]);\n }\n var groupQuery = Query.filterQueries(query.queries, 'onGroup')[i].e;\n pData = DataUtil.group(pData, groups[i], pvt.aggregates, level, groupDs, groupQuery.comparer);\n }\n args.result = pData;\n }\n return args;\n };\n UrlAdaptor.prototype.getQueryRequest = function (query) {\n var req = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n req.sorts = Query.filterQueries(query.queries, 'onSortBy');\n req.groups = Query.filterQueries(query.queries, 'onGroup');\n req.filters = Query.filterQueries(query.queries, 'onWhere');\n req.searches = Query.filterQueries(query.queries, 'onSearch');\n req.aggregates = Query.filterQueries(query.queries, 'onAggregates');\n return req;\n };\n UrlAdaptor.prototype.addParams = function (options) {\n var req = options.reqParams;\n if (options.params.length) {\n req.params = {};\n }\n for (var _i = 0, _a = options.params; _i < _a.length; _i++) {\n var tmp = _a[_i];\n if (req[tmp.key]) {\n throw new Error('Query() - addParams: Custom Param is conflicting other request arguments');\n }\n req[tmp.key] = tmp.value;\n if (tmp.fn) {\n req[tmp.key] = tmp.fn.call(options.query, tmp.key, options.query, options.dm);\n }\n req.params[tmp.key] = req[tmp.key];\n }\n };\n return UrlAdaptor;\n}(Adaptor));\nexport { UrlAdaptor };\n/**\n * OData Adaptor that is extended from URL Adaptor, is used for consuming data through OData Service.\n *\n * @hidden\n */\nvar ODataAdaptor = /** @class */ (function (_super) {\n __extends(ODataAdaptor, _super);\n function ODataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json;odata=light;q=1,application/json;odata=verbose;q=0.5',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$inlinecount',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PUT'\n });\n extend(_this.options, props || {});\n return _this;\n }\n ODataAdaptor.prototype.getModuleName = function () {\n return 'ODataAdaptor';\n };\n /**\n * Generate request string based on the filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var operator;\n var guid;\n var val = predicate.value;\n var type = typeof val;\n var field = predicate.field ? ODataAdaptor.getField(predicate.field) : null;\n if (val instanceof Date) {\n val = 'datetime\\'' + DataUtil.parse.replacer(val) + '\\'';\n }\n if (type === 'string') {\n val = val.replace(/'/g, '\\'\\'');\n if (predicate.ignoreCase) {\n val = val.toLowerCase();\n }\n if (predicate.operator !== 'like') {\n val = encodeURIComponent(val);\n }\n if (predicate.operator !== 'wildcard' && predicate.operator !== 'like') {\n val = '\\'' + val + '\\'';\n }\n if (requiresCast) {\n field = 'cast(' + field + ', \\'Edm.String\\')';\n }\n if (DataUtil.parse.isGuid(val)) {\n guid = 'guid';\n }\n if (predicate.ignoreCase) {\n if (!guid) {\n field = 'tolower(' + field + ')';\n }\n val = val.toLowerCase();\n }\n }\n if (predicate.operator === 'isempty' || predicate.operator === 'isnull' || predicate.operator === 'isnotempty' ||\n predicate.operator === 'isnotnull') {\n operator = predicate.operator.indexOf('isnot') !== -1 ? DataUtil.odBiOperator['notequal'] : DataUtil.odBiOperator['equal'];\n val = predicate.operator === 'isnull' || predicate.operator === 'isnotnull' ? null : '\\'\\'';\n }\n else {\n operator = DataUtil.odBiOperator[predicate.operator];\n }\n if (operator) {\n returnValue += field;\n returnValue += operator;\n if (guid) {\n returnValue += guid;\n }\n return returnValue + val;\n }\n if (!isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor') {\n operator = DataUtil.odv4UniOperator[predicate.operator];\n }\n else {\n operator = DataUtil.odUniOperator[predicate.operator];\n }\n if (operator === 'like') {\n val = val;\n if (val.indexOf('%') !== -1) {\n if (val.charAt(0) === '%' && val.lastIndexOf('%') < 2) {\n val = val.substring(1, val.length);\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['startswith'] : DataUtil.odUniOperator['startswith'];\n }\n else if (val.charAt(val.length - 1) === '%' && val.indexOf('%') > val.length - 3) {\n val = val.substring(0, val.length - 1);\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['endswith'] : DataUtil.odUniOperator['endswith'];\n }\n else if (val.lastIndexOf('%') !== val.indexOf('%') && val.lastIndexOf('%') > val.indexOf('%') + 1) {\n val = val.substring(val.indexOf('%') + 1, val.lastIndexOf('%'));\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n }\n else {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n }\n }\n val = encodeURIComponent(val);\n val = '\\'' + val + '\\'';\n }\n else if (operator === 'wildcard') {\n val = val;\n if (val.indexOf('*') !== -1) {\n var splittedStringValue = val.split('*');\n var splittedValue = void 0;\n var count = 0;\n if (val.indexOf('*') !== 0 && splittedStringValue[0].indexOf('%3f') === -1 &&\n splittedStringValue[0].indexOf('?') === -1) {\n splittedValue = splittedStringValue[0];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['startswith'] : DataUtil.odUniOperator['startswith'];\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n if (val.lastIndexOf('*') !== val.length - 1 && splittedStringValue[splittedStringValue.length - 1].indexOf('%3f') === -1 &&\n splittedStringValue[splittedStringValue.length - 1].indexOf('?') === -1) {\n splittedValue = splittedStringValue[splittedStringValue.length - 1];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['endswith'] : DataUtil.odUniOperator['endswith'];\n if (count > 0) {\n returnValue += ' and ';\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n if (splittedStringValue.length > 2) {\n for (var i = 1; i < splittedStringValue.length - 1; i++) {\n if (splittedStringValue[i].indexOf('%3f') === -1 && splittedStringValue[i].indexOf('?') === -1) {\n splittedValue = splittedStringValue[i];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (count > 0) {\n returnValue += ' and ';\n }\n if (operator === 'substringof' || operator === 'not substringof') {\n var temp = splittedValue;\n splittedValue = field;\n field = temp;\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n }\n }\n if (count === 0) {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (val.indexOf('?') !== -1 || val.indexOf('%3f') !== -1) {\n val = val.indexOf('?') !== -1 ? val.split('?').join('') : val.split('%3f').join('');\n }\n val = '\\'' + val + '\\'';\n }\n else {\n operator = 'wildcard';\n }\n }\n else {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (val.indexOf('?') !== -1 || val.indexOf('%3f') !== -1) {\n val = val.indexOf('?') !== -1 ? val.split('?').join('') : val.split('%3f').join('');\n }\n val = '\\'' + val + '\\'';\n }\n }\n if (operator === 'substringof' || operator === 'not substringof') {\n var temp = val;\n val = field;\n field = temp;\n }\n if (operator !== 'wildcard') {\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += val + ')';\n }\n return returnValue;\n };\n ODataAdaptor.prototype.addParams = function (options) {\n _super.prototype.addParams.call(this, options);\n delete options.reqParams.params;\n };\n /**\n * Generate request string based on the multiple filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onComplexPredicate = function (predicate, query, requiresCast) {\n var res = [];\n for (var i = 0; i < predicate.predicates.length; i++) {\n res.push('(' + this.onEachWhere(predicate.predicates[i], query, requiresCast) + ')');\n }\n return res.join(' ' + predicate.condition + ' ');\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n *\n * @param {Predicate} filter\n * @param {boolean} requiresCast?\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onEachWhere = function (filter, query, requiresCast) {\n return filter.isComplex ? this.onComplexPredicate(filter, query, requiresCast) : this.onPredicate(filter, query, requiresCast);\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n *\n * @param {string[]} filters\n */\n ODataAdaptor.prototype.onWhere = function (filters) {\n if (this.pvt.search) {\n filters.push(this.onEachWhere(this.pvt.search, null, true));\n }\n return filters.join(' and ');\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n *\n * @param e\n * @param {string} operator\n * @param {string} key\n * @param {boolean} } ignoreCase\n * @param e.fields\n * @param e.operator\n * @param e.key\n * @param e.ignoreCase\n */\n ODataAdaptor.prototype.onEachSearch = function (e) {\n if (e.fields && e.fields.length === 0) {\n DataUtil.throwError('Query() - Search : oData search requires list of field names to search');\n }\n var filter = this.pvt.search || [];\n for (var i = 0; i < e.fields.length; i++) {\n filter.push(new Predicate(e.fields[i], e.operator, e.key, e.ignoreCase));\n }\n this.pvt.search = filter;\n };\n /**\n * Generate query string based on the search criteria from query.\n *\n * @param {Object} e\n */\n ODataAdaptor.prototype.onSearch = function (e) {\n this.pvt.search = Predicate.or(this.pvt.search);\n return '';\n };\n /**\n * Generate query string based on multiple sort criteria from query.\n *\n * @param {QueryOptions} e\n */\n ODataAdaptor.prototype.onEachSort = function (e) {\n var res = [];\n if (e.name instanceof Array) {\n for (var i = 0; i < e.name.length; i++) {\n res.push(ODataAdaptor.getField(e.name[i]) + (e.direction === 'descending' ? ' desc' : ''));\n }\n }\n else {\n res.push(ODataAdaptor.getField(e.name) + (e.direction === 'descending' ? ' desc' : ''));\n }\n return res.join(',');\n };\n /**\n * Returns sort query string.\n *\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSortBy = function (e) {\n return e.reverse().join(',');\n };\n /**\n * Adds the group query to the adaptor option.\n *\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return [];\n };\n /**\n * Returns the select query string.\n *\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSelect = function (e) {\n for (var i = 0; i < e.length; i++) {\n e[i] = ODataAdaptor.getField(e[i]);\n }\n return e.join(',');\n };\n /**\n * Add the aggregate query to the adaptor option.\n *\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n return '';\n };\n /**\n * Returns the query string which requests total count from the data source.\n *\n * @param {boolean} e\n * @returns string\n */\n ODataAdaptor.prototype.onCount = function (e) {\n return e === true ? 'allpages' : '';\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {Request} request\n * @param {Fetch} settings?\n * @param settings\n */\n ODataAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (DataUtil.endsWith(settings.url, this.options.batch) && settings.type.toLowerCase() === 'post') {\n request.headers.set('Accept', this.options.multipartAccept);\n request.headers.set('DataServiceVersion', '2.0');\n //request.overrideMimeType('text/plain; charset=x-user-defined');\n }\n else {\n request.headers.set('Accept', this.options.accept);\n }\n request.headers.set('DataServiceVersion', '2.0');\n request.headers.set('MaxDataServiceVersion', '2.0');\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Fetch} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n ODataAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaCheck = 'odata.metadata';\n if ((request && request.type === 'GET') && !this.rootUrl && data[metaCheck]) {\n var dataUrls = data[metaCheck].split('/$metadata#');\n this.rootUrl = dataUrls[0];\n this.resourceTableName = dataUrls[1];\n }\n var pvtData = 'pvtData';\n if (!isNullOrUndefined(data.d)) {\n var dataCopy = ((query && query.isCountRequired) ? data.d.results : data.d);\n var metaData = '__metadata';\n if (!isNullOrUndefined(dataCopy)) {\n for (var i = 0; i < dataCopy.length; i++) {\n if (!isNullOrUndefined(dataCopy[i][metaData])) {\n delete dataCopy[i][metaData];\n }\n }\n }\n }\n var pvt = request && request[pvtData];\n var emptyAndBatch = this.processBatchResponse(data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var versionCheck = xhr && request.fetchRequest.headers.get('DataServiceVersion');\n var count = null;\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n var oDataCount = '__count';\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n if (data.d) {\n data = data.d;\n }\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n }\n if (version === 3 && data.value) {\n data = data.value;\n }\n if (data.d) {\n data = data.d;\n }\n if (version < 3 && data.results) {\n data = data.results;\n }\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n /**\n * Converts the request object to query string.\n *\n * @param {Object} req\n * @param request\n * @param {Query} query\n * @param {DataManager} dm\n * @returns tableName\n */\n ODataAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n var res = [];\n var table = 'table';\n var tableName = request[table] || '';\n var format = '$format';\n delete request[table];\n if (dm.dataSource.requiresFormat) {\n request[format] = 'json';\n }\n var keys = Object.keys(request);\n for (var _i = 0, keys_4 = keys; _i < keys_4.length; _i++) {\n var prop = keys_4[_i];\n res.push(prop + '=' + request[prop]);\n }\n res = res.join('&');\n if (dm.dataSource.url && dm.dataSource.url.indexOf('?') !== -1 && !tableName) {\n return res;\n }\n return res.length ? tableName + '?' + res : tableName || '';\n };\n ODataAdaptor.prototype.localTimeReplacer = function (key, convertObj) {\n for (var _i = 0, _a = !isNullOrUndefined(convertObj) ? Object.keys(convertObj) : []; _i < _a.length; _i++) {\n var prop = _a[_i];\n if ((convertObj[prop] instanceof Date)) {\n convertObj[prop] = DataUtil.dateParse.toLocalTime(convertObj[prop]);\n }\n }\n return convertObj;\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n ODataAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n url: (dm.dataSource.insertUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : ''),\n data: JSON.stringify(data, this.options.localTime ? this.localTimeReplacer : null)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n * @param tableName\n */\n ODataAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var url;\n if (typeof value === 'string' && !DataUtil.parse.isGuid(value)) {\n url = \"('\" + value + \"')\";\n }\n else {\n url = \"(\" + value + \")\";\n }\n return {\n type: 'DELETE',\n url: (dm.dataSource.removeUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url\n };\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @param query\n * @param original\n * @returns this\n */\n ODataAdaptor.prototype.update = function (dm, keyField, value, tableName, query, original) {\n if (this.options.updateType === 'PATCH' && !isNullOrUndefined(original)) {\n value = this.compareAndRemove(value, original, keyField);\n }\n var url;\n if (typeof value[keyField] === 'string' && !DataUtil.parse.isGuid(value[keyField])) {\n url = \"('\" + value[keyField] + \"')\";\n }\n else {\n url = \"(\" + value[keyField] + \")\";\n }\n return {\n type: this.options.updateType,\n url: (dm.dataSource.updateUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url,\n data: JSON.stringify(value, this.options.localTime ? this.localTimeReplacer : null),\n accept: this.options.accept\n };\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @param query\n * @param original\n * @returns {Object}\n */\n ODataAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = this.rootUrl ? this.rootUrl + '/' + this.options.batch :\n dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var args = {\n url: e.url,\n key: e.key,\n cid: 1,\n cSet: DataUtil.getGuid(this.options.changeSet)\n };\n var req = '--' + initialGuid + '\\n';\n req += 'Content-Type: multipart/mixed; boundary=' + args.cSet.replace('--', '') + '\\n';\n this.pvt.changeSet = 0;\n req += this.generateInsertRequest(changes.addedRecords, args, dm);\n req += this.generateUpdateRequest(changes.changedRecords, args, dm, original ? original.changedRecords : []);\n req += this.generateDeleteRequest(changes.deletedRecords, args, dm);\n req += args.cSet + '--\\n';\n req += '--' + initialGuid + '--';\n return {\n type: 'POST',\n url: url,\n dataType: 'json',\n contentType: 'multipart/mixed; charset=UTF-8;boundary=' + initialGuid,\n data: req\n };\n };\n /**\n * Generate the string content from the removed records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n * @returns this\n */\n ODataAdaptor.prototype.generateDeleteRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '(' + url + ')';\n }\n else if (url instanceof Date) {\n var dateTime = data[i][key];\n return '(' + dateTime.toJSON() + ')';\n }\n else {\n return \"('\" + url + \"')\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req + '\\n';\n };\n /**\n * Generate the string content from the inserted records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n */\n ODataAdaptor.prototype.generateInsertRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n /**\n * Generate the string content from the updated records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n * @param org\n */\n ODataAdaptor.prototype.generateUpdateRequest = function (arr, e, dm, org) {\n var _this = this;\n if (!arr) {\n return '';\n }\n var req = '';\n arr.forEach(function (change) { return change = _this.compareAndRemove(change, org.filter(function (o) { return DataUtil.getObject(e.key, o) === DataUtil.getObject(e.key, change); })[0], e.key); });\n var stat = {\n 'method': this.options.updateType + ' ',\n 'url': function (data, i, key) {\n if (typeof data[i][key] === 'number' || DataUtil.parse.isGuid(data[i][key])) {\n return '(' + data[i][key] + ')';\n }\n else if (data[i][key] instanceof Date) {\n var date = data[i][key];\n return '(' + date.toJSON() + ')';\n }\n else {\n return \"('\" + data[i][key] + \"')\";\n }\n },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n ODataAdaptor.getField = function (prop) {\n return prop.replace(/\\./g, '/');\n };\n ODataAdaptor.prototype.generateBodyContent = function (arr, e, stat, dm) {\n var req = '';\n for (var i = 0; i < arr.length; i++) {\n req += '\\n' + e.cSet + '\\n';\n req += this.options.changeSetContent + '\\n\\n';\n req += stat.method;\n if (stat.method === 'POST ') {\n req += (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'PUT ' || stat.method === 'PATCH ') {\n req += (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'DELETE ') {\n req += (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n req += 'Accept: ' + this.options.accept + '\\n';\n req += 'Content-Id: ' + this.pvt.changeSet++ + '\\n';\n req += this.options.batchChangeSetContentType + '\\n';\n if (!isNullOrUndefined(arr[i]['@odata.etag'])) {\n req += 'If-Match: ' + arr[i]['@odata.etag'] + '\\n\\n';\n delete arr[i]['@odata.etag'];\n }\n else {\n req += '\\n';\n }\n req += stat.data(arr, i);\n }\n return req;\n };\n ODataAdaptor.prototype.processBatchResponse = function (data, query, xhr, request, changes) {\n if (xhr && xhr.headers.get('Content-Type') && xhr.headers.get('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n if (request && this.options.batch && DataUtil.endsWith(request.url, this.options.batch) && request.type.toLowerCase() === 'post') {\n var guid = xhr.headers.get('Content-Type');\n var cIdx = void 0;\n var jsonObj = void 0;\n var d = data + '';\n guid = guid.substring(guid.indexOf('=batchresponse') + 1);\n d = d.split(guid);\n if (d.length < 2) {\n return {};\n }\n d = d[1];\n var exVal = /(?:\\bContent-Type.+boundary=)(changesetresponse.+)/i.exec(d);\n if (exVal) {\n d.replace(exVal[0], '');\n }\n var changeGuid = exVal ? exVal[1] : '';\n d = d.split(changeGuid);\n for (var i = d.length; i > -1; i--) {\n if (!/\\bContent-ID:/i.test(d[i]) || !/\\bHTTP.+201/.test(d[i])) {\n continue;\n }\n cIdx = parseInt(/\\bContent-ID: (\\d+)/i.exec(d[i])[1], 10);\n if (changes.addedRecords[cIdx]) {\n jsonObj = DataUtil.parse.parseJson(/^\\{.+\\}/m.exec(d[i])[0]);\n extend({}, changes.addedRecords[cIdx], this.processResponse(jsonObj));\n }\n }\n return changes;\n }\n return null;\n };\n ODataAdaptor.prototype.compareAndRemove = function (data, original, key) {\n var _this = this;\n if (isNullOrUndefined(original)) {\n return data;\n }\n Object.keys(data).forEach(function (prop) {\n if (prop !== key && prop !== '@odata.etag') {\n if (DataUtil.isPlainObject(data[prop])) {\n _this.compareAndRemove(data[prop], original[prop]);\n var final = Object.keys(data[prop]).filter(function (data) { return data !== '@odata.etag'; });\n if (final.length === 0) {\n delete data[prop];\n }\n }\n else if (data[prop] === original[prop]) {\n delete data[prop];\n }\n else if (data[prop] && original[prop] && data[prop].valueOf() === original[prop].valueOf()) {\n delete data[prop];\n }\n }\n });\n return data;\n };\n return ODataAdaptor;\n}(UrlAdaptor));\nexport { ODataAdaptor };\n/**\n * The OData v4 is an improved version of OData protocols.\n * The DataManager uses the ODataV4Adaptor to consume OData v4 services.\n *\n * @hidden\n */\nvar ODataV4Adaptor = /** @class */ (function (_super) {\n __extends(ODataV4Adaptor, _super);\n function ODataV4Adaptor(props) {\n var _this = _super.call(this, props) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json, text/javascript, */*; q=0.01',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$count',\n search: '$search',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PATCH',\n localTime: false,\n apply: '$apply'\n });\n extend(_this.options, props || {});\n return _this;\n }\n /**\n * @hidden\n */\n ODataV4Adaptor.prototype.getModuleName = function () {\n return 'ODataV4Adaptor';\n };\n /**\n * Returns the query string which requests total count from the data source.\n *\n * @param {boolean} e\n * @returns string\n */\n ODataV4Adaptor.prototype.onCount = function (e) {\n return e === true ? 'true' : '';\n };\n /**\n * Generate request string based on the filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataV4Adaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var val = predicate.value;\n var isDate = val instanceof Date;\n if (query instanceof Query) {\n var queries = this.getQueryRequest(query);\n for (var i = 0; i < queries.filters.length; i++) {\n if (queries.filters[i].e.key === predicate.value) {\n requiresCast = true;\n }\n }\n }\n returnValue = _super.prototype.onPredicate.call(this, predicate, query, requiresCast);\n if (isDate) {\n returnValue = returnValue.replace(/datetime'(.*)'$/, '$1');\n }\n if (DataUtil.parse.isGuid(val)) {\n returnValue = returnValue.replace('guid', '').replace(/'/g, '');\n }\n return returnValue;\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n *\n * @param e\n * @param {string} operator\n * @param {string} key\n * @param {boolean} } ignoreCase\n * @param e.fields\n * @param e.operator\n * @param e.key\n * @param e.ignoreCase\n */\n ODataV4Adaptor.prototype.onEachSearch = function (e) {\n var search = this.pvt.searches || [];\n search.push(e.key);\n this.pvt.searches = search;\n };\n /**\n * Generate query string based on the search criteria from query.\n *\n * @param {Object} e\n */\n ODataV4Adaptor.prototype.onSearch = function (e) {\n return this.pvt.searches.join(' OR ');\n };\n /**\n * Returns the expand query string.\n *\n * @param {string} e\n * @param e.selects\n * @param e.expands\n */\n ODataV4Adaptor.prototype.onExpand = function (e) {\n var _this = this;\n var selected = {};\n var expanded = {};\n var expands = e.expands.slice();\n var exArr = [];\n var selects = e.selects.filter(function (item) { return item.indexOf('.') > -1; });\n selects.forEach(function (select) {\n var splits = select.split('.');\n if (!(splits[0] in selected)) {\n selected[splits[0]] = [];\n }\n if (splits.length === 2) {\n if (selected[splits[0]].length && Object.keys(selected).indexOf(splits[0]) !== -1) {\n if (selected[splits[0]][0].indexOf('$expand') !== -1 && selected[splits[0]][0].indexOf(';$select=') === -1) {\n selected[splits[0]][0] = selected[splits[0]][0] + ';' + '$select=' + splits[1];\n }\n else {\n selected[splits[0]][0] = selected[splits[0]][0] + ',' + splits[1];\n }\n }\n else {\n selected[splits[0]].push('$select=' + splits[1]);\n }\n }\n else {\n var sel = '$select=' + splits[splits.length - 1];\n var exp = '';\n var close_1 = '';\n for (var i = 1; i < splits.length - 1; i++) {\n exp = exp + '$expand=' + splits[i] + '(';\n close_1 = close_1 + ')';\n }\n var combineVal = exp + sel + close_1;\n if (selected[splits[0]].length && Object.keys(selected).indexOf(splits[0]) !== -1 &&\n _this.expandQueryIndex(selected[splits[0]], true)) {\n var idx = _this.expandQueryIndex(selected[splits[0]]);\n selected[splits[0]][idx] = selected[splits[0]][idx] + combineVal.replace('$expand=', ',');\n }\n else {\n selected[splits[0]].push(combineVal);\n }\n }\n });\n //Auto expand from select query\n Object.keys(selected).forEach(function (expand) {\n if ((expands.indexOf(expand) === -1)) {\n expands.push(expand);\n }\n });\n expands.forEach(function (expand) {\n expanded[expand] = expand in selected ? expand + \"(\" + selected[expand].join(';') + \")\" : expand;\n });\n Object.keys(expanded).forEach(function (ex) { return exArr.push(expanded[ex]); });\n return exArr.join(',');\n };\n ODataV4Adaptor.prototype.expandQueryIndex = function (query, isExpand) {\n for (var i = 0; i < query.length; i++) {\n if (query[i].indexOf('$expand') !== -1) {\n return isExpand ? true : i;\n }\n }\n return isExpand ? false : 0;\n };\n /**\n * Returns the groupby query string.\n *\n * @param {string} e\n * @param distinctFields\n */\n ODataV4Adaptor.prototype.onDistinct = function (distinctFields) {\n var fields = distinctFields.map(function (field) { return ODataAdaptor.getField(field); }).join(',');\n return \"groupby((\" + fields + \"))\";\n };\n /**\n * Returns the select query string.\n *\n * @param {string[]} e\n */\n ODataV4Adaptor.prototype.onSelect = function (e) {\n return _super.prototype.onSelect.call(this, e.filter(function (item) { return item.indexOf('.') === -1; }));\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {Request} request\n * @param {Fetch} settings\n * @returns void\n */\n ODataV4Adaptor.prototype.beforeSend = function (dm, request, settings) {\n if (settings.type === 'POST' || settings.type === 'PUT' || settings.type === 'PATCH') {\n request.headers.set('Prefer', 'return=representation');\n }\n request.headers.set('Accept', this.options.accept);\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Fetch} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n ODataV4Adaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaName = '@odata.context';\n var metaV4Name = '@context';\n if ((request && request.type === 'GET') && !this.rootUrl && (data[metaName] || data[metaV4Name])) {\n var dataUrl = data[metaName] ? data[metaName].split('/$metadata#') : data[metaV4Name].split('/$metadata#');\n this.rootUrl = dataUrl[0];\n this.resourceTableName = dataUrl[1];\n }\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var emptyAndBatch = _super.prototype.processBatchResponse.call(this, data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var count = null;\n var dataCount = '@odata.count';\n var dataV4Count = '@count';\n if (query && query.isCountRequired) {\n if (dataCount in data) {\n count = data[dataCount];\n }\n else if (dataV4Count in data) {\n count = data[dataV4Count];\n }\n }\n data = !isNullOrUndefined(data.value) ? data.value : data;\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: count, aggregates: args.aggregates };\n };\n return ODataV4Adaptor;\n}(ODataAdaptor));\nexport { ODataV4Adaptor };\n/**\n * The Web API is a programmatic interface to define the request and response messages system that is mostly exposed in JSON or XML.\n * The DataManager uses the WebApiAdaptor to consume Web API.\n * Since this adaptor is targeted to interact with Web API created using OData endpoint, it is extended from ODataAdaptor\n *\n * @hidden\n */\nvar WebApiAdaptor = /** @class */ (function (_super) {\n __extends(WebApiAdaptor, _super);\n function WebApiAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n WebApiAdaptor.prototype.getModuleName = function () {\n return 'WebApiAdaptor';\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n type: 'POST',\n url: dm.dataSource.url,\n data: JSON.stringify(data)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n return {\n type: 'DELETE',\n url: dm.dataSource.url + '/' + value,\n data: JSON.stringify(value)\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n return {\n type: 'PUT',\n url: dm.dataSource.url,\n data: JSON.stringify(value)\n };\n };\n WebApiAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var _this = this;\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var req = [];\n var _loop_1 = function (i, x) {\n changes.addedRecords.forEach(function (j, d) {\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('POST ' + '/api/' + (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.addedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //insertion\n for (var i = 0, x = changes.addedRecords.length; i < x; i++) {\n _loop_1(i, x);\n }\n var _loop_2 = function (i, x) {\n changes.changedRecords.forEach(function (j, d) {\n var stat = {\n 'method': _this.options.updateType + ' ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('PUT ' + '/api/' + (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.changedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //updation\n for (var i = 0, x = changes.changedRecords.length; i < x; i++) {\n _loop_2(i, x);\n }\n var _loop_3 = function (i, x) {\n changes.deletedRecords.forEach(function (j, d) {\n var state = {\n 'mtd': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '/' + url;\n }\n else if (url instanceof Date) {\n var datTime = data[i][key];\n return '/' + datTime.toJSON();\n }\n else {\n return \"/'\" + url + \"'\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('DELETE ' + '/api/' + (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url)\n + state.url(changes.deletedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //deletion\n for (var i = 0, x = changes.deletedRecords.length; i < x; i++) {\n _loop_3(i, x);\n }\n req.push('--' + initialGuid + '--', '');\n return {\n type: 'POST',\n url: url,\n contentType: 'multipart/mixed; boundary=' + initialGuid,\n data: req.join('\\r\\n')\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {Request} request\n * @param {Fetch} settings\n * @returns void\n */\n WebApiAdaptor.prototype.beforeSend = function (dm, request, settings) {\n request.headers.set('Accept', 'application/json, text/javascript, */*; q=0.01');\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Fetch} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n WebApiAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var count = null;\n var args = {};\n if (request && request.type.toLowerCase() !== 'post') {\n var versionCheck = xhr && request.fetchRequest.headers.get('DataServiceVersion');\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n if (!DataUtil.isNull(data.Count)) {\n count = data.Count;\n }\n }\n if (version < 3 && data.Items) {\n data = data.Items;\n }\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n }\n args.result = args.result || data;\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n return WebApiAdaptor;\n}(ODataAdaptor));\nexport { WebApiAdaptor };\n/**\n * WebMethodAdaptor can be used by DataManager to interact with web method.\n *\n * @hidden\n */\nvar WebMethodAdaptor = /** @class */ (function (_super) {\n __extends(WebMethodAdaptor, _super);\n function WebMethodAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Prepare the request body based on the query.\n * The query information can be accessed at the WebMethod using variable named `value`.\n *\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @param hierarchyFilters\n * @returns application\n */\n WebMethodAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var obj = new UrlAdaptor().processQuery(dm, query, hierarchyFilters);\n var getData = 'data';\n var data = DataUtil.parse.parseJson(obj[getData]);\n var result = {};\n var value = 'value';\n if (data.param) {\n for (var i = 0; i < data.param.length; i++) {\n var param = data.param[i];\n var key = Object.keys(param)[0];\n result[key] = param[key];\n }\n }\n result[value] = data;\n var pvtData = 'pvtData';\n var url = 'url';\n return {\n data: JSON.stringify(result),\n url: obj[url],\n pvtData: obj[pvtData],\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n };\n return WebMethodAdaptor;\n}(UrlAdaptor));\nexport { WebMethodAdaptor };\n/**\n * RemoteSaveAdaptor, extended from JsonAdaptor and it is used for binding local data and performs all DataManager queries in client-side.\n * It interacts with server-side only for CRUD operations.\n *\n * @hidden\n */\nvar RemoteSaveAdaptor = /** @class */ (function (_super) {\n __extends(RemoteSaveAdaptor, _super);\n /**\n * @hidden\n */\n function RemoteSaveAdaptor() {\n var _this = _super.call(this) || this;\n setValue('beforeSend', UrlAdaptor.prototype.beforeSend, _this);\n return _this;\n }\n RemoteSaveAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n this.pvt.position = position;\n this.updateType = 'add';\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.remove = function (dm, keyField, val, tableName, query) {\n _super.prototype.remove.call(this, dm, keyField, val);\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: val,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.update = function (dm, keyField, val, tableName, query) {\n this.updateType = 'update';\n this.updateKey = keyField;\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: val,\n action: 'update',\n keyColumn: keyField,\n key: val[keyField],\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes, e) {\n var i;\n var newData = request ? JSON.parse(request.data) : data;\n data = newData.action === 'batch' ? DataUtil.parse.parseJson(data) : data;\n if (this.updateType === 'add') {\n _super.prototype.insert.call(this, ds, data, null, null, this.pvt.position);\n }\n if (this.updateType === 'update') {\n _super.prototype.update.call(this, ds, this.updateKey, data);\n }\n this.updateType = undefined;\n if (data.added) {\n for (i = 0; i < data.added.length; i++) {\n _super.prototype.insert.call(this, ds, data.added[i]);\n }\n }\n if (data.changed) {\n for (i = 0; i < data.changed.length; i++) {\n _super.prototype.update.call(this, ds, e.key, data.changed[i]);\n }\n }\n if (data.deleted) {\n for (i = 0; i < data.deleted.length; i++) {\n _super.prototype.remove.call(this, ds, e.key, data.deleted[i]);\n }\n }\n return data;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * Also perform the changes in the locally cached data to sync with the remote data.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @param query\n * @param original\n */\n RemoteSaveAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e.url,\n key: e.key\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.addParams = function (options) {\n var urlParams = new UrlAdaptor();\n urlParams.addParams(options);\n };\n return RemoteSaveAdaptor;\n}(JsonAdaptor));\nexport { RemoteSaveAdaptor };\n/**\n * Fetch Adaptor that is extended from URL Adaptor, is used for handle data operations with user defined functions.\n *\n * @hidden\n */\nvar CustomDataAdaptor = /** @class */ (function (_super) {\n __extends(CustomDataAdaptor, _super);\n function CustomDataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n getData: new Function(),\n addRecord: new Function(),\n updateRecord: new Function(),\n deleteRecord: new Function(),\n batchUpdate: new Function()\n });\n extend(_this.options, props || {});\n return _this;\n }\n CustomDataAdaptor.prototype.getModuleName = function () {\n return 'CustomDataAdaptor';\n };\n return CustomDataAdaptor;\n}(UrlAdaptor));\nexport { CustomDataAdaptor };\n/**\n * The GraphqlAdaptor that is extended from URL Adaptor, is used for retrieving data from the Graphql server.\n * It interacts with the Graphql server with all the DataManager Queries and performs CRUD operations.\n *\n * @hidden\n */\nvar GraphQLAdaptor = /** @class */ (function (_super) {\n __extends(GraphQLAdaptor, _super);\n function GraphQLAdaptor(options) {\n var _this = _super.call(this) || this;\n _this.opt = options;\n _this.schema = _this.opt.response;\n _this.query = _this.opt.query;\n /* eslint-disable @typescript-eslint/no-empty-function */\n // tslint:disable-next-line:no-empty\n _this.getVariables = _this.opt.getVariables ? _this.opt.getVariables : function () { };\n /* eslint-enable @typescript-eslint/no-empty-function */\n _this.getQuery = function () { return _this.query; };\n return _this;\n }\n GraphQLAdaptor.prototype.getModuleName = function () {\n return 'GraphQLAdaptor';\n };\n /**\n * Process the JSON data based on the provided queries.\n *\n * @param {DataManager} dm\n * @param {Query} query?\n * @param datamanager\n * @param query\n */\n GraphQLAdaptor.prototype.processQuery = function (datamanager, query) {\n var urlQuery = _super.prototype.processQuery.apply(this, arguments);\n var dm = JSON.parse(urlQuery.data);\n // constructing GraphQL parameters\n var keys = ['skip', 'take', 'sorted', 'table', 'select', 'where',\n 'search', 'requiresCounts', 'aggregates', 'params'];\n var temp = {};\n var str = 'searchwhereparams';\n keys.filter(function (e) {\n temp[e] = str.indexOf(e) > -1 ? JSON.stringify(dm[e]) : dm[e];\n });\n var vars = this.getVariables() || {};\n // tslint:disable-next-line:no-string-literal\n vars['datamanager'] = temp;\n var data = JSON.stringify({\n query: this.getQuery(),\n variables: vars\n });\n urlQuery.data = data;\n return urlQuery;\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n *\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Object} request?\n * @param resData\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @returns DataResult\n */\n GraphQLAdaptor.prototype.processResponse = function (resData, ds, query, xhr, request) {\n var res = resData;\n var count;\n var aggregates;\n var result = getValue(this.schema.result, res.data);\n if (this.schema.count) {\n count = getValue(this.schema.count, res.data);\n }\n if (this.schema.aggregates) {\n aggregates = getValue(this.schema.aggregates, res.data);\n aggregates = !isNullOrUndefined(aggregates) ? DataUtil.parse.parseJson(aggregates) : aggregates;\n }\n var pvt = request.pvtData || {};\n var args = { result: result, aggregates: aggregates };\n var data = args;\n if (pvt && pvt.groups && pvt.groups.length) {\n this.getAggregateResult(pvt, data, args, null, query);\n }\n return !isNullOrUndefined(count) ? { result: args.result, count: count, aggregates: aggregates } : args.result;\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n */\n GraphQLAdaptor.prototype.insert = function () {\n var inserted = _super.prototype.insert.apply(this, arguments);\n return this.generateCrudData(inserted, 'insert');\n };\n /**\n * Prepare and returns request body which is used to update a new record in the table.\n */\n GraphQLAdaptor.prototype.update = function () {\n var inserted = _super.prototype.update.apply(this, arguments);\n return this.generateCrudData(inserted, 'update');\n };\n /**\n * Prepare and returns request body which is used to remove a new record in the table.\n */\n GraphQLAdaptor.prototype.remove = function () {\n var inserted = _super.prototype.remove.apply(this, arguments);\n return this.generateCrudData(inserted, 'remove');\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n * @param e.key\n * @param {Query} query\n * @param {Object} original\n */\n GraphQLAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var batch = _super.prototype.batchRequest.apply(this, arguments);\n // tslint:disable-next-line:typedef\n var bData = JSON.parse(batch.data);\n bData.key = e.key;\n batch.data = JSON.stringify(bData);\n return this.generateCrudData(batch, 'batch');\n };\n GraphQLAdaptor.prototype.generateCrudData = function (crudData, action) {\n var parsed = JSON.parse(crudData.data);\n crudData.data = JSON.stringify({\n query: this.opt.getMutation(action),\n variables: parsed\n });\n return crudData;\n };\n return GraphQLAdaptor;\n}(UrlAdaptor));\nexport { GraphQLAdaptor };\n/**\n * Cache Adaptor is used to cache the data of the visited pages. It prevents new requests for the previously visited pages.\n * You can configure cache page size and duration of caching by using cachingPageSize and timeTillExpiration properties of the DataManager\n *\n * @hidden\n */\nvar CacheAdaptor = /** @class */ (function (_super) {\n __extends(CacheAdaptor, _super);\n /**\n * Constructor for CacheAdaptor class.\n *\n * @param {CacheAdaptor} adaptor?\n * @param {number} timeStamp?\n * @param {number} pageSize?\n * @param adaptor\n * @param timeStamp\n * @param pageSize\n * @hidden\n */\n function CacheAdaptor(adaptor, timeStamp, pageSize) {\n var _this = _super.call(this) || this;\n _this.isCrudAction = false;\n _this.isInsertAction = false;\n if (!isNullOrUndefined(adaptor)) {\n _this.cacheAdaptor = adaptor;\n }\n _this.pageSize = pageSize;\n _this.guidId = DataUtil.getGuid('cacheAdaptor');\n var obj = { keys: [], results: [] };\n window.localStorage.setItem(_this.guidId, JSON.stringify(obj));\n var guid = _this.guidId;\n if (!isNullOrUndefined(timeStamp)) {\n setInterval(function () {\n var data = DataUtil.parse.parseJson(window.localStorage.getItem(guid));\n var forDel = [];\n for (var i = 0; i < data.results.length; i++) {\n var currentTime = +new Date();\n var requestTime = +new Date(data.results[i].timeStamp);\n data.results[i].timeStamp = currentTime - requestTime;\n if (currentTime - requestTime > timeStamp) {\n forDel.push(i);\n }\n }\n for (var i = 0; i < forDel.length; i++) {\n data.results.splice(forDel[i], 1);\n data.keys.splice(forDel[i], 1);\n }\n window.localStorage.removeItem(guid);\n window.localStorage.setItem(guid, JSON.stringify(data));\n }, timeStamp);\n }\n return _this;\n }\n /**\n * It will generate the key based on the URL when we send a request to server.\n *\n * @param {string} url\n * @param {Query} query?\n * @param query\n * @hidden\n */\n CacheAdaptor.prototype.generateKey = function (url, query) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var key = url;\n var page = 'onPage';\n if (page in singles) {\n key += singles[page].pageIndex;\n }\n queries.sorts.forEach(function (obj) {\n key += obj.e.direction + obj.e.fieldName;\n });\n queries.groups.forEach(function (obj) {\n key += obj.e.fieldName;\n });\n queries.searches.forEach(function (obj) {\n key += obj.e.searchKey;\n });\n for (var filter = 0; filter < queries.filters.length; filter++) {\n var currentFilter = queries.filters[filter];\n if (currentFilter.e.isComplex) {\n var newQuery = query.clone();\n newQuery.queries = [];\n for (var i = 0; i < currentFilter.e.predicates.length; i++) {\n newQuery.queries.push({ fn: 'onWhere', e: currentFilter.e.predicates[i], filter: query.queries.filter });\n }\n key += currentFilter.e.condition + this.generateKey(url, newQuery);\n }\n else {\n key += currentFilter.e.field + currentFilter.e.operator + currentFilter.e.value;\n }\n }\n return key;\n };\n /**\n * Process the query to generate request body.\n * If the data is already cached, it will return the cached data.\n *\n * @param {DataManager} dm\n * @param {Query} query?\n * @param {Object[]} hierarchyFilters?\n * @param query\n * @param hierarchyFilters\n */\n CacheAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var key = this.generateKey(dm.dataSource.url, query);\n var cachedItems = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var data = cachedItems ? cachedItems.results[cachedItems.keys.indexOf(key)] : null;\n if (data != null && !this.isCrudAction && !this.isInsertAction) {\n return data;\n }\n this.isCrudAction = null;\n this.isInsertAction = null;\n /* eslint-disable prefer-spread */\n return this.cacheAdaptor.processQuery.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n /* eslint-enable prefer-spread */\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n *\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Fetch} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n */\n CacheAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (this.isInsertAction || (request && this.cacheAdaptor.options.batch &&\n DataUtil.endsWith(request.url, this.cacheAdaptor.options.batch) && request.type.toLowerCase() === 'post')) {\n return this.cacheAdaptor.processResponse(data, ds, query, xhr, request, changes);\n }\n /* eslint-disable prefer-spread */\n data = this.cacheAdaptor.processResponse.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n /* eslint-enable prefer-spread */\n var key = query ? this.generateKey(ds.dataSource.url, query) : ds.dataSource.url;\n var obj = {};\n obj = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var index = obj.keys.indexOf(key);\n if (index !== -1) {\n obj.results.splice(index, 1);\n obj.keys.splice(index, 1);\n }\n obj.results[obj.keys.push(key) - 1] = { keys: key, result: data.result, timeStamp: new Date(), count: data.count };\n while (obj.results.length > this.pageSize) {\n obj.results.splice(0, 1);\n obj.keys.splice(0, 1);\n }\n window.localStorage.setItem(this.guidId, JSON.stringify(obj));\n return data;\n };\n /**\n * Method will trigger before send the request to server side. Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {Request} request\n * @param {Fetch} settings?\n * @param settings\n */\n CacheAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (!isNullOrUndefined(this.cacheAdaptor.options.batch) && DataUtil.endsWith(settings.url, this.cacheAdaptor.options.batch)\n && settings.type.toLowerCase() === 'post') {\n request.headers.set('Accept', this.cacheAdaptor.options.multipartAccept);\n }\n if (!dm.dataSource.crossDomain) {\n request.headers.set('Accept', this.cacheAdaptor.options.accept);\n }\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n */\n CacheAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.update(dm, keyField, value, tableName);\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n CacheAdaptor.prototype.insert = function (dm, data, tableName) {\n this.isInsertAction = true;\n return this.cacheAdaptor.insert(dm, data, tableName);\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n */\n CacheAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.remove(dm, keyField, value, tableName);\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n CacheAdaptor.prototype.batchRequest = function (dm, changes, e) {\n return this.cacheAdaptor.batchRequest(dm, changes, e);\n };\n return CacheAdaptor;\n}(UrlAdaptor));\nexport { CacheAdaptor };\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { Fetch } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Predicate, Query } from './query';\nimport { ODataAdaptor, JsonAdaptor, CacheAdaptor, RemoteSaveAdaptor, CustomDataAdaptor } from './adaptors';\n/**\n * DataManager is used to manage and manipulate relational data.\n */\nvar DataManager = /** @class */ (function () {\n /**\n * Constructor for DataManager class\n *\n * @param {DataOptions|JSON[]} dataSource?\n * @param {Query} query?\n * @param {AdaptorOptions|string} adaptor?\n * @param dataSource\n * @param query\n * @param adaptor\n * @hidden\n */\n function DataManager(dataSource, query, adaptor) {\n var _this = this;\n /** @hidden */\n this.dateParse = true;\n /** @hidden */\n this.timeZoneHandling = true;\n this.persistQuery = {};\n this.isInitialLoad = false;\n this.requests = [];\n this.isInitialLoad = true;\n if (!dataSource && !this.dataSource) {\n dataSource = [];\n }\n adaptor = adaptor || dataSource.adaptor;\n if (dataSource && dataSource.timeZoneHandling === false) {\n this.timeZoneHandling = dataSource.timeZoneHandling;\n }\n var data;\n if (dataSource instanceof Array) {\n data = {\n json: dataSource,\n offline: true\n };\n }\n else if (typeof dataSource === 'object') {\n if (!dataSource.json) {\n dataSource.json = [];\n }\n if (!dataSource.enablePersistence) {\n dataSource.enablePersistence = false;\n }\n if (!dataSource.id) {\n dataSource.id = '';\n }\n if (!dataSource.ignoreOnPersist) {\n dataSource.ignoreOnPersist = [];\n }\n data = {\n url: dataSource.url,\n insertUrl: dataSource.insertUrl,\n removeUrl: dataSource.removeUrl,\n updateUrl: dataSource.updateUrl,\n crudUrl: dataSource.crudUrl,\n batchUrl: dataSource.batchUrl,\n json: dataSource.json,\n headers: dataSource.headers,\n accept: dataSource.accept,\n data: dataSource.data,\n timeTillExpiration: dataSource.timeTillExpiration,\n cachingPageSize: dataSource.cachingPageSize,\n enableCaching: dataSource.enableCaching,\n requestType: dataSource.requestType,\n key: dataSource.key,\n crossDomain: dataSource.crossDomain,\n jsonp: dataSource.jsonp,\n dataType: dataSource.dataType,\n offline: dataSource.offline !== undefined ? dataSource.offline\n : dataSource.adaptor instanceof RemoteSaveAdaptor || dataSource.adaptor instanceof CustomDataAdaptor ?\n false : dataSource.url ? false : true,\n requiresFormat: dataSource.requiresFormat,\n enablePersistence: dataSource.enablePersistence,\n id: dataSource.id,\n ignoreOnPersist: dataSource.ignoreOnPersist\n };\n }\n else {\n DataUtil.throwError('DataManager: Invalid arguments');\n }\n if (data.requiresFormat === undefined && !DataUtil.isCors()) {\n data.requiresFormat = isNullOrUndefined(data.crossDomain) ? true : data.crossDomain;\n }\n if (data.dataType === undefined) {\n data.dataType = 'json';\n }\n this.dataSource = data;\n this.defaultQuery = query;\n if (this.dataSource.enablePersistence && this.dataSource.id) {\n window.addEventListener('unload', this.setPersistData.bind(this));\n }\n if (data.url && data.offline && !data.json.length) {\n this.isDataAvailable = false;\n this.adaptor = adaptor || new ODataAdaptor();\n this.dataSource.offline = false;\n this.ready = this.executeQuery(query || new Query());\n this.ready.then(function (e) {\n _this.dataSource.offline = true;\n _this.isDataAvailable = true;\n data.json = e.result;\n _this.adaptor = new JsonAdaptor();\n });\n }\n else {\n this.adaptor = data.offline ? new JsonAdaptor() : new ODataAdaptor();\n }\n if (!data.jsonp && this.adaptor instanceof ODataAdaptor) {\n data.jsonp = 'callback';\n }\n this.adaptor = adaptor || this.adaptor;\n if (data.enableCaching) {\n this.adaptor = new CacheAdaptor(this.adaptor, data.timeTillExpiration, data.cachingPageSize);\n }\n return this;\n }\n /**\n * Get the queries maintained in the persisted state.\n * @param {string} id - The identifier of the persisted query to retrieve.\n * @returns {object} The persisted data object.\n */\n DataManager.prototype.getPersistedData = function (id) {\n var persistedData = localStorage.getItem(id || this.dataSource.id);\n return JSON.parse(persistedData);\n };\n /**\n * Set the queries to be maintained in the persisted state.\n * @param {Event} e - The event parameter that triggers the setPersistData method.\n * @param {string} id - The identifier of the persisted query to set.\n * @param {object} persistData - The data to be persisted.\n * @returns {void} .\n */\n DataManager.prototype.setPersistData = function (e, id, persistData) {\n localStorage.setItem(id || this.dataSource.id, JSON.stringify(persistData || this.persistQuery));\n };\n DataManager.prototype.setPersistQuery = function (query) {\n var _this = this;\n var persistedQuery = this.getPersistedData();\n if (this.isInitialLoad && persistedQuery && Object.keys(persistedQuery).length) {\n this.persistQuery = persistedQuery;\n this.persistQuery.queries = this.persistQuery.queries.filter(function (query) {\n if (_this.dataSource.ignoreOnPersist && _this.dataSource.ignoreOnPersist.length) {\n if (query.fn && _this.dataSource.ignoreOnPersist.some(function (keyword) { return query.fn === keyword; })) {\n return false; // Exclude the matching query\n }\n }\n if (query.fn === 'onWhere') {\n var e = query.e;\n if (e && e.isComplex && e.predicates instanceof Array) {\n var allPredicates = e.predicates.map(function (predicateObj) {\n if (predicateObj.predicates && predicateObj.predicates instanceof Array) {\n // Process nested predicate array\n var nestedPredicates = predicateObj.predicates.map(function (nestedPredicate) {\n var field = nestedPredicate.field, operator = nestedPredicate.operator, value = nestedPredicate.value, ignoreCase = nestedPredicate.ignoreCase, ignoreAccent = nestedPredicate.ignoreAccent, matchCase = nestedPredicate.matchCase;\n return new Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase);\n });\n return predicateObj.condition === 'and' ? Predicate.and(nestedPredicates) : Predicate.or(nestedPredicates);\n }\n else {\n // Process individual predicate\n var field = predicateObj.field, operator = predicateObj.operator, value = predicateObj.value, ignoreCase = predicateObj.ignoreCase, ignoreAccent = predicateObj.ignoreAccent, matchCase = predicateObj.matchCase;\n return new Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase);\n }\n });\n query.e = new Predicate(allPredicates[0], e.condition, allPredicates.slice(1));\n }\n }\n return true; // Keep all other queries\n });\n var newQuery = extend(new Query(), this.persistQuery);\n this.isInitialLoad = false;\n return (newQuery);\n }\n else {\n this.persistQuery = query;\n this.isInitialLoad = false;\n return query;\n }\n };\n /**\n * Overrides DataManager's default query with given query.\n *\n * @param {Query} query - Defines the new default query.\n */\n DataManager.prototype.setDefaultQuery = function (query) {\n this.defaultQuery = query;\n return this;\n };\n /**\n * Executes the given query with local data source.\n *\n * @param {Query} query - Defines the query to retrieve data.\n */\n DataManager.prototype.executeLocal = function (query) {\n if (!this.defaultQuery && !(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeLocal() : A query is required to execute');\n }\n if (!this.dataSource.json) {\n DataUtil.throwError('DataManager - executeLocal() : Json data is required to execute');\n }\n if (this.dataSource.enablePersistence && this.dataSource.id) {\n query = this.setPersistQuery(query);\n }\n query = query || this.defaultQuery;\n var result = this.adaptor.processQuery(this, query);\n if (query.subQuery) {\n var from = query.subQuery.fromTable;\n var lookup = query.subQuery.lookups;\n var res = query.isCountRequired ? result.result :\n result;\n if (lookup && lookup instanceof Array) {\n DataUtil.buildHierarchy(query.subQuery.fKey, from, res, lookup, query.subQuery.key);\n }\n for (var j = 0; j < res.length; j++) {\n if (res[j][from] instanceof Array) {\n res[j] = extend({}, {}, res[j]);\n res[j][from] = this.adaptor.processResponse(query.subQuery.using(new DataManager(res[j][from].slice(0))).executeLocal(), this, query);\n }\n }\n }\n return this.adaptor.processResponse(result, this, query);\n };\n /**\n * Executes the given query with either local or remote data source.\n * It will be executed as asynchronously and returns Promise object which will be resolved or rejected after action completed.\n *\n * @param {Query|Function} query - Defines the query to retrieve data.\n * @param {Function} done - Defines the callback function and triggers when the Promise is resolved.\n * @param {Function} fail - Defines the callback function and triggers when the Promise is rejected.\n * @param {Function} always - Defines the callback function and triggers when the Promise is resolved or rejected.\n */\n DataManager.prototype.executeQuery = function (query, done, fail, always) {\n var _this = this;\n var makeRequest = 'makeRequest';\n if (this.dataSource.enablePersistence && this.dataSource.id) {\n query = this.setPersistQuery(query);\n }\n if (typeof query === 'function') {\n always = fail;\n fail = done;\n done = query;\n query = null;\n }\n if (!query) {\n query = this.defaultQuery;\n }\n if (!(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeQuery() : A query is required to execute');\n }\n var deffered = new Deferred();\n var args = { query: query };\n if (!this.dataSource.offline && (this.dataSource.url !== undefined && this.dataSource.url !== '')\n || (!isNullOrUndefined(this.adaptor[makeRequest])) || this.isCustomDataAdaptor(this.adaptor)) {\n var result = this.adaptor.processQuery(this, query);\n if (!isNullOrUndefined(this.adaptor[makeRequest])) {\n this.adaptor[makeRequest](result, deffered, args, query);\n }\n else if (!isNullOrUndefined(result.url) || this.isCustomDataAdaptor(this.adaptor)) {\n this.requests = [];\n this.makeRequest(result, deffered, args, query);\n }\n else {\n args = DataManager.getDeferedArgs(query, result, args);\n deffered.resolve(args);\n }\n }\n else {\n DataManager.nextTick(function () {\n var res = _this.executeLocal(query);\n args = DataManager.getDeferedArgs(query, res, args);\n deffered.resolve(args);\n });\n }\n if (done || fail) {\n deffered.promise.then(done, fail);\n }\n if (always) {\n deffered.promise.then(always, always);\n }\n return deffered.promise;\n };\n DataManager.getDeferedArgs = function (query, result, args) {\n if (query.isCountRequired) {\n args.result = result.result;\n args.count = result.count;\n args.aggregates = result.aggregates;\n }\n else {\n args.result = result;\n }\n return args;\n };\n DataManager.nextTick = function (fn) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n // tslint:disable-next-line:no-any\n (window.setImmediate || window.setTimeout)(fn, 0);\n /* eslint-enable @typescript-eslint/no-explicit-any */\n };\n DataManager.prototype.extendRequest = function (url, fnSuccess, fnFail) {\n return extend({}, {\n type: 'GET',\n dataType: this.dataSource.dataType,\n crossDomain: this.dataSource.crossDomain,\n jsonp: this.dataSource.jsonp,\n cache: true,\n processData: false,\n onSuccess: fnSuccess,\n onFailure: fnFail\n }, url);\n };\n // tslint:disable-next-line:max-func-body-length\n DataManager.prototype.makeRequest = function (url, deffered, args, query) {\n var _this = this;\n var isSelector = !!query.subQuerySelector;\n var fnFail = function (e) {\n args.error = e;\n deffered.reject(args);\n };\n var process = function (data, count, xhr, request, actual, aggregates, virtualSelectRecords) {\n args.xhr = xhr;\n args.count = count ? parseInt(count.toString(), 10) : 0;\n args.result = data;\n args.request = request;\n args.aggregates = aggregates;\n args.actual = actual;\n args.virtualSelectRecords = virtualSelectRecords;\n deffered.resolve(args);\n };\n var fnQueryChild = function (data, selector) {\n var subDeffer = new Deferred();\n var childArgs = { parent: args };\n query.subQuery.isChild = true;\n var subUrl = _this.adaptor.processQuery(_this, query.subQuery, data ? _this.adaptor.processResponse(data) : selector);\n var childReq = _this.makeRequest(subUrl, subDeffer, childArgs, query.subQuery);\n if (!isSelector) {\n subDeffer.then(function (subData) {\n if (data) {\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, data, subData, query.subQuery.key);\n process(data, subData.count, subData.xhr);\n }\n }, fnFail);\n }\n return childReq;\n };\n var fnSuccess = function (data, request) {\n if (_this.isGraphQLAdaptor(_this.adaptor)) {\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n return fnFail(data['errors'], request);\n }\n }\n if (_this.isCustomDataAdaptor(_this.adaptor)) {\n request = extend({}, _this.fetchReqOption, request);\n }\n if (request.contentType.indexOf('xml') === -1 && _this.dateParse) {\n data = DataUtil.parse.parseJson(data);\n }\n var result = _this.adaptor.processResponse(data, _this, query, request.fetchRequest, request);\n var count = 0;\n var aggregates = null;\n var virtualSelectRecords = 'virtualSelectRecords';\n var virtualRecords = data[virtualSelectRecords];\n if (query.isCountRequired) {\n count = result.count;\n aggregates = result.aggregates;\n result = result.result;\n }\n if (!query.subQuery) {\n process(result, count, request.fetchRequest, request.type, data, aggregates, virtualRecords);\n return;\n }\n if (!isSelector) {\n fnQueryChild(result, request);\n }\n };\n var req = this.extendRequest(url, fnSuccess, fnFail);\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var fetch_1 = new Fetch(req);\n fetch_1.beforeSend = function () {\n _this.beforeSend(fetch_1.fetchRequest, fetch_1);\n };\n req = fetch_1.send();\n req.catch(function (e) { return true; }); // to handle failure remote requests.\n this.requests.push(fetch_1);\n }\n else {\n this.fetchReqOption = req;\n var request = req;\n this.adaptor.options.getData({\n data: request.data,\n onSuccess: request.onSuccess, onFailure: request.onFailure\n });\n }\n if (isSelector) {\n var promise = void 0;\n var res = query.subQuerySelector.call(this, { query: query.subQuery, parent: query });\n if (res && res.length) {\n promise = Promise.all([req, fnQueryChild(null, res)]);\n promise.then(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = args[0];\n var pResult = _this.adaptor.processResponse(result[0], _this, query, _this.requests[0].fetchRequest, _this.requests[0]);\n var count = 0;\n if (query.isCountRequired) {\n count = pResult.count;\n pResult = pResult.result;\n }\n var cResult = _this.adaptor.processResponse(result[1], _this, query.subQuery, _this.requests[1].fetchRequest, _this.requests[1]);\n count = 0;\n if (query.subQuery.isCountRequired) {\n count = cResult.count;\n cResult = cResult.result;\n }\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, pResult, cResult, query.subQuery.key);\n isSelector = false;\n process(pResult, count, _this.requests[0].fetchRequest);\n });\n }\n else {\n isSelector = false;\n }\n }\n return req;\n };\n DataManager.prototype.beforeSend = function (request, settings) {\n this.adaptor.beforeSend(this, request, settings);\n var headers = this.dataSource.headers;\n var props;\n for (var i = 0; headers && i < headers.length; i++) {\n props = [];\n var keys = Object.keys(headers[i]);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n props.push(prop);\n request.headers.set(prop, headers[i][prop]);\n }\n }\n };\n /**\n * Save bulk changes to the given table name.\n * User can add a new record, edit an existing record, and delete a record at the same time.\n * If the datasource from remote, then updated in a single post.\n *\n * @param {Object} changes - Defines the CrudOptions.\n * @param {string} key - Defines the column field.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n * @param original\n */\n DataManager.prototype.saveChanges = function (changes, key, tableName, query, original) {\n var _this = this;\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var args = {\n url: tableName,\n key: key || this.dataSource.key\n };\n var req = this.adaptor.batchRequest(this, changes, args, query || new Query(), original);\n var dofetchRequest = 'dofetchRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[dofetchRequest])) {\n return this.adaptor[dofetchRequest](req);\n }\n else if (!this.isCustomDataAdaptor(this.adaptor)) {\n var deff_1 = new Deferred();\n var fetch_2 = new Fetch(req);\n fetch_2.beforeSend = function () {\n _this.beforeSend(fetch_2.fetchRequest, fetch_2);\n };\n fetch_2.onSuccess = function (data, request) {\n if (_this.isGraphQLAdaptor(_this.adaptor)) {\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n fetch_2.onFailure(JSON.stringify(data['errors']));\n }\n }\n deff_1.resolve(_this.adaptor.processResponse(data, _this, null, request.fetchRequest, request, changes, args));\n };\n fetch_2.onFailure = function (e) {\n deff_1.reject([{ error: e }]);\n };\n fetch_2.send().catch(function (e) { return true; }); // to handle the failure requests.\n return deff_1.promise;\n }\n else {\n return this.dofetchRequest(req, this.adaptor.options.batchUpdate);\n }\n };\n /**\n * Inserts new record in the given table.\n *\n * @param {Object} data - Defines the data to insert.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n * @param position\n */\n DataManager.prototype.insert = function (data, tableName, query, position) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var req = this.adaptor.insert(this, data, tableName, query, position);\n var dofetchRequest = 'dofetchRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[dofetchRequest])) {\n return this.adaptor[dofetchRequest](req);\n }\n else {\n return this.dofetchRequest(req, this.adaptor.options.addRecord);\n }\n };\n /**\n * Removes data from the table with the given key.\n *\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.remove = function (keyField, value, tableName, query) {\n if (typeof value === 'object') {\n value = DataUtil.getObject(keyField, value);\n }\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.remove(this, keyField, value, tableName, query);\n var dofetchRequest = 'dofetchRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[dofetchRequest])) {\n return this.adaptor[dofetchRequest](res);\n }\n else {\n var remove = this.adaptor.options.deleteRecord;\n return this.dofetchRequest(res, remove);\n }\n };\n /**\n * Updates existing record in the given table.\n *\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n * @param original\n */\n DataManager.prototype.update = function (keyField, value, tableName, query, original) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.update(this, keyField, value, tableName, query, original);\n var dofetchRequest = 'dofetchRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[dofetchRequest])) {\n return this.adaptor[dofetchRequest](res);\n }\n else {\n var update = this.adaptor.options.updateRecord;\n return this.dofetchRequest(res, update);\n }\n };\n DataManager.prototype.isCustomDataAdaptor = function (dataSource) {\n return this.adaptor.getModuleName &&\n this.adaptor.getModuleName() === 'CustomDataAdaptor';\n };\n DataManager.prototype.isGraphQLAdaptor = function (dataSource) {\n return this.adaptor.getModuleName &&\n this.adaptor.getModuleName() === 'GraphQLAdaptor';\n };\n DataManager.prototype.successFunc = function (record, request) {\n if (this.isGraphQLAdaptor(this.adaptor)) {\n var data = typeof record === 'object' ? record : JSON.parse(record);\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n this.failureFunc(JSON.stringify(data['errors']));\n }\n }\n if (this.isCustomDataAdaptor(this.adaptor)) {\n request = extend({}, this.fetchReqOption, request);\n }\n try {\n DataUtil.parse.parseJson(record);\n }\n catch (e) {\n record = [];\n }\n record = this.adaptor.processResponse(DataUtil.parse.parseJson(record), this, null, request.fetchRequest, request);\n this.fetchDeffered.resolve(record);\n };\n DataManager.prototype.failureFunc = function (e) {\n this.fetchDeffered.reject([{ error: e }]);\n };\n DataManager.prototype.dofetchRequest = function (res, fetchFunc) {\n var _this = this;\n res = extend({}, {\n type: 'POST',\n contentType: 'application/json; charset=utf-8',\n processData: false\n }, res);\n this.fetchDeffered = new Deferred();\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var fetch_3 = new Fetch(res);\n fetch_3.beforeSend = function () {\n _this.beforeSend(fetch_3.fetchRequest, fetch_3);\n };\n fetch_3.onSuccess = this.successFunc.bind(this);\n fetch_3.onFailure = this.failureFunc.bind(this);\n fetch_3.send().catch(function (e) { return true; }); // to handle the failure requests.\n }\n else {\n this.fetchReqOption = res;\n fetchFunc.call(this, {\n data: res.data, onSuccess: this.successFunc.bind(this),\n onFailure: this.failureFunc.bind(this)\n });\n }\n return this.fetchDeffered.promise;\n };\n DataManager.prototype.clearPersistence = function () {\n window.removeEventListener('unload', this.setPersistData.bind(this));\n this.dataSource.enablePersistence = false;\n this.persistQuery = {};\n window.localStorage.setItem(this.dataSource.id, '[]');\n };\n return DataManager;\n}());\nexport { DataManager };\n/**\n * Deferred is used to handle asynchronous operation.\n */\nvar Deferred = /** @class */ (function () {\n function Deferred() {\n var _this = this;\n /**\n * Promise is an object that represents a value that may not be available yet, but will be resolved at some point in the future.\n */\n this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n /**\n * Defines the callback function triggers when the Deferred object is resolved.\n */\n this.then = this.promise.then.bind(this.promise);\n /**\n * Defines the callback function triggers when the Deferred object is rejected.\n */\n this.catch = this.promise.catch.bind(this.promise);\n }\n return Deferred;\n}());\nexport { Deferred };\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { DataUtil } from './util';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Query class is used to build query which is used by the DataManager to communicate with datasource.\n */\nvar Query = /** @class */ (function () {\n /**\n * Constructor for Query class.\n *\n * @param {string|string[]} from?\n * @param from\n * @hidden\n */\n function Query(from) {\n /** @hidden */\n this.subQuery = null;\n /** @hidden */\n this.isChild = false;\n /** @hidden */\n this.distincts = [];\n this.queries = [];\n this.key = '';\n this.fKey = '';\n if (typeof from === 'string') {\n this.fromTable = from;\n }\n else if (from && from instanceof Array) {\n this.lookups = from;\n }\n this.expands = [];\n this.sortedColumns = [];\n this.groupedColumns = [];\n this.subQuery = null;\n this.isChild = false;\n this.params = [];\n this.lazyLoad = [];\n return this;\n }\n /**\n * Sets the primary key.\n *\n * @param {string} field - Defines the column field.\n */\n Query.prototype.setKey = function (field) {\n this.key = field;\n return this;\n };\n /**\n * Sets default DataManager to execute query.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.using = function (dataManager) {\n this.dataManager = dataManager;\n return this;\n };\n /**\n * Executes query with the given DataManager.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n * @param {Function} done - Defines the success callback.\n * @param {Function} fail - Defines the failure callback.\n * @param {Function} always - Defines the callback which will be invoked on either success or failure.\n *\n *
    \n     * let dataManager: DataManager = new DataManager([{ ID: '10' }, { ID: '2' }, { ID: '1' }, { ID: '20' }]);\n     * let query: Query = new Query();\n     * query.sortBy('ID', (x: string, y: string): number => { return parseInt(x, 10) - parseInt(y, 10) });\n     * let promise: Promise< Object > = query.execute(dataManager);\n     * promise.then((e: { result: Object }) => { });\n     * 
    \n */\n Query.prototype.execute = function (dataManager, done, fail, always) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeQuery(this, done, fail, always);\n }\n return DataUtil.throwError('Query - execute() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Executes query with the local datasource.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.executeLocal = function (dataManager) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeLocal(this);\n }\n return DataUtil.throwError('Query - executeLocal() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Creates deep copy of the Query object.\n */\n Query.prototype.clone = function () {\n var cloned = new Query();\n cloned.queries = this.queries.slice(0);\n cloned.key = this.key;\n cloned.isChild = this.isChild;\n cloned.dataManager = this.dataManager;\n cloned.fromTable = this.fromTable;\n cloned.params = this.params.slice(0);\n cloned.expands = this.expands.slice(0);\n cloned.sortedColumns = this.sortedColumns.slice(0);\n cloned.groupedColumns = this.groupedColumns.slice(0);\n cloned.subQuerySelector = this.subQuerySelector;\n cloned.subQuery = this.subQuery;\n cloned.fKey = this.fKey;\n cloned.isCountRequired = this.isCountRequired;\n cloned.distincts = this.distincts.slice(0);\n cloned.lazyLoad = this.lazyLoad.slice(0);\n return cloned;\n };\n /**\n * Specifies the name of table to retrieve data in query execution.\n *\n * @param {string} tableName - Defines the table name.\n */\n Query.prototype.from = function (tableName) {\n this.fromTable = tableName;\n return this;\n };\n /**\n * Adds additional parameter which will be sent along with the request which will be generated while DataManager execute.\n *\n * @param {string} key - Defines the key of additional parameter.\n * @param {Function|string} value - Defines the value for the key.\n */\n Query.prototype.addParams = function (key, value) {\n if (typeof value === 'function') {\n this.params.push({ key: key, fn: value });\n }\n else {\n this.params.push({ key: key, value: value });\n }\n return this;\n };\n /**\n * @param fields\n * @hidden\n */\n Query.prototype.distinct = function (fields) {\n if (typeof fields === 'string') {\n this.distincts = [].slice.call([fields], 0);\n }\n else {\n this.distincts = fields.slice(0);\n }\n return this;\n };\n /**\n * Expands the related table.\n *\n * @param {string|Object[]} tables\n */\n Query.prototype.expand = function (tables) {\n if (typeof tables === 'string') {\n this.expands = [].slice.call([tables], 0);\n }\n else {\n this.expands = tables.slice(0);\n }\n return this;\n };\n /**\n * Filter data with given filter criteria.\n *\n * @param {string|Predicate} fieldName - Defines the column field or Predicate.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string|number|boolean} value - Defines the values to match with data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreAccent\n * @param matchCase\n */\n Query.prototype.where = function (fieldName, operator, value, ignoreCase, ignoreAccent, matchCase) {\n operator = operator ? (operator).toLowerCase() : null;\n var predicate = null;\n if (typeof fieldName === 'string') {\n predicate = new Predicate(fieldName, operator, value, ignoreCase, ignoreAccent, matchCase);\n }\n else if (fieldName instanceof Predicate) {\n predicate = fieldName;\n }\n this.queries.push({\n fn: 'onWhere',\n e: predicate\n });\n return this;\n };\n /**\n * Search data with given search criteria.\n *\n * @param {string|number|boolean} searchKey - Defines the search key.\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n * @param {string} operator - Defines the operator how to search data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreAccent\n */\n Query.prototype.search = function (searchKey, fieldNames, operator, ignoreCase, ignoreAccent) {\n if (typeof fieldNames === 'string') {\n fieldNames = [fieldNames];\n }\n if (!operator || operator === 'none') {\n operator = 'contains';\n }\n var comparer = DataUtil.fnOperators[operator];\n this.queries.push({\n fn: 'onSearch',\n e: {\n fieldNames: fieldNames,\n operator: operator,\n searchKey: searchKey,\n ignoreCase: ignoreCase,\n ignoreAccent: ignoreAccent,\n comparer: comparer\n }\n });\n return this;\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n *\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n * @param isFromGroup\n */\n Query.prototype.sortBy = function (fieldName, comparer, isFromGroup) {\n return this.sortByForeignKey(fieldName, comparer, isFromGroup);\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n *\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n * @param isFromGroup\n * @param {string} direction - Defines the sort direction .\n */\n Query.prototype.sortByForeignKey = function (fieldName, comparer, isFromGroup, direction) {\n var order = !isNullOrUndefined(direction) ? direction : 'ascending';\n var sorts;\n var temp;\n if (typeof fieldName === 'string' && DataUtil.endsWith(fieldName.toLowerCase(), ' desc')) {\n fieldName = fieldName.replace(/ desc$/i, '');\n comparer = 'descending';\n }\n if (!comparer || typeof comparer === 'string') {\n order = comparer ? comparer.toLowerCase() : 'ascending';\n comparer = DataUtil.fnSort(comparer);\n }\n if (isFromGroup) {\n sorts = Query.filterQueries(this.queries, 'onSortBy');\n for (var i = 0; i < sorts.length; i++) {\n temp = sorts[i].e.fieldName;\n if (typeof temp === 'string') {\n if (temp === fieldName) {\n return this;\n }\n }\n else if (temp instanceof Array) {\n for (var j = 0; j < temp.length; j++) {\n if (temp[j] === fieldName || fieldName.toLowerCase() === temp[j] + ' desc') {\n return this;\n }\n }\n }\n }\n }\n this.queries.push({\n fn: 'onSortBy',\n e: {\n fieldName: fieldName,\n comparer: comparer,\n direction: order\n }\n });\n return this;\n };\n /**\n * Sorts data in descending order.\n *\n * @param {string} fieldName - Defines the column field.\n */\n Query.prototype.sortByDesc = function (fieldName) {\n return this.sortBy(fieldName, 'descending');\n };\n /**\n * Groups data with the given field name.\n *\n * @param {string} fieldName - Defines the column field.\n * @param fn\n * @param format\n */\n Query.prototype.group = function (fieldName, fn, format) {\n this.sortBy(fieldName, null, true);\n this.queries.push({\n fn: 'onGroup',\n e: {\n fieldName: fieldName,\n comparer: fn ? fn : null,\n format: format ? format : null\n }\n });\n return this;\n };\n /**\n * Gets data based on the given page index and size.\n *\n * @param {number} pageIndex - Defines the current page index.\n * @param {number} pageSize - Defines the no of records per page.\n */\n Query.prototype.page = function (pageIndex, pageSize) {\n this.queries.push({\n fn: 'onPage',\n e: {\n pageIndex: pageIndex,\n pageSize: pageSize\n }\n });\n return this;\n };\n /**\n * Gets data based on the given start and end index.\n *\n * @param {number} start - Defines the start index of the datasource.\n * @param {number} end - Defines the end index of the datasource.\n */\n Query.prototype.range = function (start, end) {\n this.queries.push({\n fn: 'onRange',\n e: {\n start: start,\n end: end\n }\n });\n return this;\n };\n /**\n * Gets data from the top of the data source based on given number of records count.\n *\n * @param {number} nos - Defines the no of records to retrieve from datasource.\n */\n Query.prototype.take = function (nos) {\n this.queries.push({\n fn: 'onTake',\n e: {\n nos: nos\n }\n });\n return this;\n };\n /**\n * Skips data with given number of records count from the top of the data source.\n *\n * @param {number} nos - Defines the no of records skip in the datasource.\n */\n Query.prototype.skip = function (nos) {\n this.queries.push({\n fn: 'onSkip',\n e: { nos: nos }\n });\n return this;\n };\n /**\n * Selects specified columns from the data source.\n *\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n */\n Query.prototype.select = function (fieldNames) {\n if (typeof fieldNames === 'string') {\n fieldNames = [].slice.call([fieldNames], 0);\n }\n this.queries.push({\n fn: 'onSelect',\n e: { fieldNames: fieldNames }\n });\n return this;\n };\n /**\n * Gets the records in hierarchical relationship from two tables. It requires the foreign key to relate two tables.\n *\n * @param {Query} query - Defines the query to relate two tables.\n * @param {Function} selectorFn - Defines the custom function to select records.\n */\n Query.prototype.hierarchy = function (query, selectorFn) {\n this.subQuerySelector = selectorFn;\n this.subQuery = query;\n return this;\n };\n /**\n * Sets the foreign key which is used to get data from the related table.\n *\n * @param {string} key - Defines the foreign key.\n */\n Query.prototype.foreignKey = function (key) {\n this.fKey = key;\n return this;\n };\n /**\n * It is used to get total number of records in the DataManager execution result.\n */\n Query.prototype.requiresCount = function () {\n this.isCountRequired = true;\n return this;\n };\n //type - sum, avg, min, max\n /**\n * Aggregate the data with given type and field name.\n *\n * @param {string} type - Defines the aggregate type.\n * @param {string} field - Defines the column field to aggregate.\n */\n Query.prototype.aggregate = function (type, field) {\n this.queries.push({\n fn: 'onAggregates',\n e: { field: field, type: type }\n });\n return this;\n };\n /**\n * Pass array of filterColumn query for performing filter operation.\n *\n * @param {QueryOptions[]} queries\n * @param {string} name\n * @hidden\n */\n Query.filterQueries = function (queries, name) {\n return queries.filter(function (q) {\n return q.fn === name;\n });\n };\n /**\n * To get the list of queries which is already filtered in current data source.\n *\n * @param {Object[]} queries\n * @param {string[]} singles\n * @hidden\n */\n Query.filterQueryLists = function (queries, singles) {\n var filtered = queries.filter(function (q) {\n return singles.indexOf(q.fn) !== -1;\n });\n var res = {};\n for (var i = 0; i < filtered.length; i++) {\n if (!res[filtered[i].fn]) {\n res[filtered[i].fn] = filtered[i].e;\n }\n }\n return res;\n };\n return Query;\n}());\nexport { Query };\n/**\n * Predicate class is used to generate complex filter criteria.\n * This will be used by DataManager to perform multiple filtering operation.\n */\nvar Predicate = /** @class */ (function () {\n /**\n * Constructor for Predicate class.\n *\n * @param {string|Predicate} field\n * @param {string} operator\n * @param {string|number|boolean|Predicate|Predicate[]} value\n * @param {boolean=false} ignoreCase\n * @param ignoreAccent\n * @param {boolean} matchCase\n * @hidden\n */\n function Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase) {\n if (ignoreCase === void 0) { ignoreCase = false; }\n /** @hidden */\n this.ignoreAccent = false;\n /** @hidden */\n this.isComplex = false;\n if (typeof field === 'string') {\n this.field = field;\n this.operator = operator.toLowerCase();\n this.value = value;\n this.matchCase = matchCase;\n this.ignoreCase = ignoreCase;\n this.ignoreAccent = ignoreAccent;\n this.isComplex = false;\n this.comparer = DataUtil.fnOperators.processOperator(this.operator);\n }\n else if (field instanceof Predicate && value instanceof Predicate || value instanceof Array) {\n this.isComplex = true;\n this.condition = operator.toLowerCase();\n this.predicates = [field];\n this.matchCase = field.matchCase;\n this.ignoreCase = field.ignoreCase;\n this.ignoreAccent = field.ignoreAccent;\n if (value instanceof Array) {\n [].push.apply(this.predicates, value);\n }\n else {\n this.predicates.push(value);\n }\n }\n return this;\n }\n /**\n * Adds n-number of new predicates on existing predicate with “and” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.and = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'and');\n };\n /**\n * Adds new predicate on existing predicate with “and” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.and = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'and', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “or” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.or = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'or');\n };\n /**\n * Adds new predicate on existing predicate with “or” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.or = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'or', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “and not” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.ornot = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'or not');\n };\n /**\n * Adds new predicate on existing predicate with “and not” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.ornot = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'ornot', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “and not” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.andnot = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'and not');\n };\n /**\n * Adds new predicate on existing predicate with “and not” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.andnot = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'andnot', ignoreCase, ignoreAccent);\n };\n /**\n * Converts plain JavaScript object to Predicate object.\n *\n * @param {Predicate[]|Predicate} json - Defines single or collection of Predicate.\n */\n Predicate.fromJson = function (json) {\n if (json instanceof Array) {\n var res = [];\n for (var i = 0, len = json.length; i < len; i++) {\n res.push(this.fromJSONData(json[i]));\n }\n return res;\n }\n var pred = json;\n return this.fromJSONData(pred);\n };\n /**\n * Validate the record based on the predicates.\n *\n * @param {Object} record - Defines the datasource record.\n */\n Predicate.prototype.validate = function (record) {\n var predicate = this.predicates ? this.predicates : [];\n var ret;\n var isAnd;\n if (!this.isComplex && this.comparer) {\n if (this.condition && this.condition.indexOf('not') !== -1) {\n this.condition = this.condition.split('not')[0] === '' ? undefined : this.condition.split('not')[0];\n return !this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n else {\n return this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (this.condition && this.condition.indexOf('not') !== -1) {\n isAnd = this.condition.indexOf('and') !== -1;\n }\n else {\n isAnd = this.condition === 'and';\n }\n for (var i = 0; i < predicate.length; i++) {\n if (i > 0 && this.condition && this.condition.indexOf('not') !== -1) {\n predicate[i].condition = predicate[i].condition ? predicate[i].condition + 'not' : 'not';\n }\n ret = predicate[i].validate(record);\n if (isAnd) {\n if (!ret) {\n return false;\n }\n }\n else {\n if (ret) {\n return true;\n }\n }\n }\n return isAnd;\n };\n /**\n * Converts predicates to plain JavaScript.\n * This method is uses Json stringify when serializing Predicate object.\n */\n Predicate.prototype.toJson = function () {\n var predicates;\n var p;\n if (this.isComplex) {\n predicates = [];\n p = this.predicates;\n for (var i = 0; i < p.length; i++) {\n predicates.push(p[i].toJson());\n }\n }\n return {\n isComplex: this.isComplex,\n field: this.field,\n operator: this.operator,\n value: this.value,\n ignoreCase: this.ignoreCase,\n ignoreAccent: this.ignoreAccent,\n condition: this.condition,\n predicates: predicates,\n matchCase: this.matchCase\n };\n };\n Predicate.combinePredicates = function (predicates, operator) {\n if (predicates.length === 1) {\n if (!(predicates[0] instanceof Array)) {\n return predicates[0];\n }\n predicates = predicates[0];\n }\n return new Predicate(predicates[0], operator, predicates.slice(1));\n };\n Predicate.combine = function (pred, field, operator, value, condition, ignoreCase, ignoreAccent) {\n if (field instanceof Predicate) {\n return Predicate[condition](pred, field);\n }\n if (typeof field === 'string') {\n return Predicate[condition](pred, new Predicate(field, operator, value, ignoreCase, ignoreAccent));\n }\n return DataUtil.throwError('Predicate - ' + condition + ' : invalid arguments');\n };\n Predicate.fromJSONData = function (json) {\n var preds = json.predicates || [];\n var len = preds.length;\n var predicates = [];\n var result;\n for (var i = 0; i < len; i++) {\n predicates.push(this.fromJSONData(preds[i]));\n }\n if (!json.isComplex) {\n result = new Predicate(json.field, json.operator, json.value, json.ignoreCase, json.ignoreAccent);\n }\n else {\n result = new Predicate(predicates[0], json.condition, predicates.slice(1));\n }\n return result;\n };\n return Predicate;\n}());\nexport { Predicate };\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from './manager';\nimport { Query, Predicate } from './query';\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Data manager common utility methods.\n *\n * @hidden\n */\nvar DataUtil = /** @class */ (function () {\n function DataUtil() {\n }\n /**\n * Returns the value by invoking the provided parameter function.\n * If the paramater is not of type function then it will be returned as it is.\n *\n * @param {Function|string|string[]|number} value\n * @param {Object} inst?\n * @param inst\n * @hidden\n */\n DataUtil.getValue = function (value, inst) {\n if (typeof value === 'function') {\n return value.call(inst || {});\n }\n return value;\n };\n /**\n * Returns true if the input string ends with given string.\n *\n * @param {string} input\n * @param {string} substr\n */\n DataUtil.endsWith = function (input, substr) {\n return input.slice && input.slice(-substr.length) === substr;\n };\n /**\n * Returns true if the input string not ends with given string.\n *\n * @param {string} input\n * @param {string} substr\n */\n DataUtil.notEndsWith = function (input, substr) {\n return input.slice && input.slice(-substr.length) !== substr;\n };\n /**\n * Returns true if the input string starts with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param start\n */\n DataUtil.startsWith = function (input, start) {\n return input.slice(0, start.length) === start;\n };\n /**\n * Returns true if the input string not starts with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param start\n */\n DataUtil.notStartsWith = function (input, start) {\n return input.slice(0, start.length) !== start;\n };\n /**\n * Returns true if the input string pattern(wildcard) matches with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param pattern\n */\n DataUtil.wildCard = function (input, pattern) {\n var asteriskSplit;\n var optionalSplit;\n // special character allowed search\n if (pattern.indexOf('[') !== -1) {\n pattern = pattern.split('[').join('[[]');\n }\n if (pattern.indexOf('(') !== -1) {\n pattern = pattern.split('(').join('[(]');\n }\n if (pattern.indexOf(')') !== -1) {\n pattern = pattern.split(')').join('[)]');\n }\n if (pattern.indexOf('\\\\') !== -1) {\n pattern = pattern.split('\\\\').join('[\\\\\\\\]');\n }\n if (pattern.indexOf('*') !== -1) {\n if (pattern.charAt(0) !== '*') {\n pattern = '^' + pattern;\n }\n if (pattern.charAt(pattern.length - 1) !== '*') {\n pattern = pattern + '$';\n }\n asteriskSplit = pattern.split('*');\n for (var i = 0; i < asteriskSplit.length; i++) {\n if (asteriskSplit[i].indexOf('.') === -1) {\n asteriskSplit[i] = asteriskSplit[i] + '.*';\n }\n else {\n asteriskSplit[i] = asteriskSplit[i] + '*';\n }\n }\n pattern = asteriskSplit.join('');\n }\n if (pattern.indexOf('%3f') !== -1 || pattern.indexOf('?') !== -1) {\n optionalSplit = pattern.indexOf('%3f') !== -1 ? pattern.split('%3f') : pattern.split('?');\n pattern = optionalSplit.join('.');\n }\n // eslint-disable-next-line security/detect-non-literal-regexp\n var regexPattern = new RegExp(pattern, 'g');\n return regexPattern.test(input);\n };\n /**\n * Returns true if the input string pattern(like) matches with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param pattern\n */\n DataUtil.like = function (input, pattern) {\n if (pattern.indexOf('%') !== -1) {\n if (pattern.charAt(0) === '%' && pattern.lastIndexOf('%') < 2) {\n pattern = pattern.substring(1, pattern.length);\n return DataUtil.startsWith(DataUtil.toLowerCase(input), DataUtil.toLowerCase(pattern));\n }\n else if (pattern.charAt(pattern.length - 1) === '%' && pattern.indexOf('%') > pattern.length - 3) {\n pattern = pattern.substring(0, pattern.length - 1);\n return DataUtil.endsWith(DataUtil.toLowerCase(input), DataUtil.toLowerCase(pattern));\n }\n else if (pattern.lastIndexOf('%') !== pattern.indexOf('%') && pattern.lastIndexOf('%') > pattern.indexOf('%') + 1) {\n pattern = pattern.substring(pattern.indexOf('%') + 1, pattern.lastIndexOf('%'));\n return input.indexOf(pattern) !== -1;\n }\n else {\n return input.indexOf(pattern) !== -1;\n }\n }\n else {\n return false;\n }\n };\n /**\n * To return the sorting function based on the string.\n *\n * @param {string} order\n * @hidden\n */\n DataUtil.fnSort = function (order) {\n order = order ? DataUtil.toLowerCase(order) : 'ascending';\n if (order === 'ascending') {\n return this.fnAscending;\n }\n return this.fnDescending;\n };\n /**\n * Comparer function which is used to sort the data in ascending order.\n *\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnAscending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return -1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y);\n }\n if (x === null || x === undefined) {\n return 1;\n }\n return x - y;\n };\n /**\n * Comparer function which is used to sort the data in descending order.\n *\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnDescending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return 1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y) * -1;\n }\n if (x === null || x === undefined) {\n return -1;\n }\n return y - x;\n };\n DataUtil.extractFields = function (obj, fields) {\n var newObj = {};\n for (var i = 0; i < fields.length; i++) {\n newObj = this.setValue(fields[i], this.getObject(fields[i], obj), newObj);\n }\n return newObj;\n };\n /**\n * Select objects by given fields from jsonArray.\n *\n * @param {Object[]} jsonArray\n * @param {string[]} fields\n */\n DataUtil.select = function (jsonArray, fields) {\n var newData = [];\n for (var i = 0; i < jsonArray.length; i++) {\n newData.push(this.extractFields(jsonArray[i], fields));\n }\n return newData;\n };\n /**\n * Group the input data based on the field name.\n * It also performs aggregation of the grouped records based on the aggregates paramater.\n *\n * @param {Object[]} jsonArray\n * @param {string} field?\n * @param {Object[]} agg?\n * @param {number} level?\n * @param {Object[]} groupDs?\n * @param field\n * @param aggregates\n * @param level\n * @param groupDs\n * @param format\n * @param isLazyLoad\n */\n DataUtil.group = function (jsonArray, field, aggregates, level, groupDs, format, isLazyLoad) {\n level = level || 1;\n var jsonData = jsonArray;\n var guid = 'GroupGuid';\n if (jsonData.GroupGuid === consts[guid]) {\n var _loop_1 = function (j) {\n if (!isNullOrUndefined(groupDs)) {\n var indx = -1;\n var temp = groupDs.filter(function (e) { return e.key === jsonData[j].key; });\n indx = groupDs.indexOf(temp[0]);\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, groupDs[indx].items, format, isLazyLoad);\n jsonData[j].count = groupDs[indx].count;\n }\n else {\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, null, format, isLazyLoad);\n jsonData[j].count = jsonData[j].items.length;\n }\n };\n var this_1 = this;\n for (var j = 0; j < jsonData.length; j++) {\n _loop_1(j);\n }\n jsonData.childLevels += 1;\n return jsonData;\n }\n var grouped = {};\n var groupedArray = [];\n groupedArray.GroupGuid = consts[guid];\n groupedArray.level = level;\n groupedArray.childLevels = 0;\n groupedArray.records = jsonData;\n var _loop_2 = function (i) {\n var val = this_2.getVal(jsonData, i, field);\n if (!isNullOrUndefined(format)) {\n val = format(val, field);\n }\n if (!grouped[val]) {\n grouped[val] = {\n key: val,\n count: 0,\n items: [],\n aggregates: {},\n field: field\n };\n groupedArray.push(grouped[val]);\n if (!isNullOrUndefined(groupDs)) {\n var tempObj = groupDs.filter(function (e) { return e.key === grouped[val].key; });\n grouped[val].count = tempObj[0].count;\n }\n }\n grouped[val].count = !isNullOrUndefined(groupDs) ? grouped[val].count : grouped[val].count += 1;\n if (!isLazyLoad || (isLazyLoad && aggregates.length)) {\n grouped[val].items.push(jsonData[i]);\n }\n };\n var this_2 = this;\n for (var i = 0; i < jsonData.length; i++) {\n _loop_2(i);\n }\n if (aggregates && aggregates.length) {\n var _loop_3 = function (i) {\n var res = {};\n var fn = void 0;\n var aggs = aggregates;\n for (var j = 0; j < aggregates.length; j++) {\n fn = DataUtil.aggregates[aggregates[j].type];\n if (!isNullOrUndefined(groupDs)) {\n var temp = groupDs.filter(function (e) { return e.key === groupedArray[i].key; });\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(temp[0].items, aggs[j].field);\n }\n }\n else {\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(groupedArray[i].items, aggs[j].field);\n }\n }\n }\n groupedArray[i].aggregates = res;\n };\n for (var i = 0; i < groupedArray.length; i++) {\n _loop_3(i);\n }\n }\n if (isLazyLoad && groupedArray.length && aggregates.length) {\n for (var i = 0; i < groupedArray.length; i++) {\n groupedArray[i].items = [];\n }\n }\n return jsonData.length && groupedArray || jsonData;\n };\n /**\n * It is used to categorize the multiple items based on a specific field in jsonArray.\n * The hierarchical queries are commonly required when you use foreign key binding.\n *\n * @param {string} fKey\n * @param {string} from\n * @param {Object[]} source\n * @param {Group} lookup?\n * @param {string} pKey?\n * @param lookup\n * @param pKey\n * @hidden\n */\n DataUtil.buildHierarchy = function (fKey, from, source, lookup, pKey) {\n var i;\n var grp = {};\n var temp;\n if (lookup.result) {\n lookup = lookup.result;\n }\n if (lookup.GroupGuid) {\n this.throwError('DataManager: Do not have support Grouping in hierarchy');\n }\n for (i = 0; i < lookup.length; i++) {\n var fKeyData = this.getObject(fKey, lookup[i]);\n temp = grp[fKeyData] || (grp[fKeyData] = []);\n temp.push(lookup[i]);\n }\n for (i = 0; i < source.length; i++) {\n var fKeyData = this.getObject(pKey || fKey, source[i]);\n source[i][from] = grp[fKeyData];\n }\n };\n /**\n * The method used to get the field names which started with specified characters.\n *\n * @param {Object} obj\n * @param {string[]} fields?\n * @param {string} prefix?\n * @param fields\n * @param prefix\n * @hidden\n */\n DataUtil.getFieldList = function (obj, fields, prefix) {\n if (prefix === undefined) {\n prefix = '';\n }\n if (fields === undefined || fields === null) {\n return this.getFieldList(obj, [], prefix);\n }\n var copyObj = obj;\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (typeof copyObj[prop] === 'object' && !(copyObj[prop] instanceof Array)) {\n this.getFieldList(copyObj[prop], fields, prefix + prop + '.');\n }\n else {\n fields.push(prefix + prop);\n }\n }\n return fields;\n };\n /**\n * Gets the value of the property in the given object.\n * The complex object can be accessed by providing the field names concatenated with dot(.).\n *\n * @param {string} nameSpace - The name of the property to be accessed.\n * @param {Object} from - Defines the source object.\n */\n DataUtil.getObject = function (nameSpace, from) {\n if (!nameSpace) {\n return from;\n }\n if (!from) {\n return undefined;\n }\n if (nameSpace.indexOf('.') === -1) {\n var lowerCaseNameSpace = nameSpace.charAt(0).toLowerCase() + nameSpace.slice(1);\n var upperCaseNameSpace = nameSpace.charAt(0).toUpperCase() + nameSpace.slice(1);\n if (!isNullOrUndefined(from[nameSpace])) {\n return from[nameSpace];\n }\n else {\n if (!isNullOrUndefined(from[lowerCaseNameSpace])) {\n return from[lowerCaseNameSpace];\n }\n else if (!isNullOrUndefined(from[upperCaseNameSpace])) {\n return from[upperCaseNameSpace];\n }\n else {\n return null;\n }\n }\n }\n var value = from;\n var splits = nameSpace.split('.');\n for (var i = 0; i < splits.length; i++) {\n if (value == null) {\n break;\n }\n value = value[splits[i]];\n if (value === undefined) {\n var casing = splits[i].charAt(0).toUpperCase() + splits[i].slice(1);\n value = from[casing] || from[casing.charAt(0).toLowerCase() + casing.slice(1)] || null;\n }\n from = value;\n }\n return value;\n };\n /**\n * To set value for the nameSpace in desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object.\n * @param {Object} value - Value that you need to set.\n * @param {Object} obj - Object to get the inner object value.\n * @return { [key: string]: Object; } | Object\n * @hidden\n */\n DataUtil.setValue = function (nameSpace, value, obj) {\n var keys = nameSpace.toString().split('.');\n var start = obj || {};\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[i];\n if (i + 1 === length) {\n fromObj[key] = value === undefined ? undefined : value;\n }\n else if (isNullOrUndefined(fromObj[key])) {\n fromObj[key] = {};\n }\n fromObj = fromObj[key];\n }\n return start;\n };\n /**\n * Sort the given data based on the field and comparer.\n *\n * @param {Object[]} ds - Defines the input data.\n * @param {string} field - Defines the field to be sorted.\n * @param {Function} comparer - Defines the comparer function used to sort the records.\n */\n DataUtil.sort = function (ds, field, comparer) {\n if (ds.length <= 1) {\n return ds;\n }\n var middle = parseInt((ds.length / 2).toString(), 10);\n var left = ds.slice(0, middle);\n var right = ds.slice(middle);\n left = this.sort(left, field, comparer);\n right = this.sort(right, field, comparer);\n return this.merge(left, right, field, comparer);\n };\n DataUtil.ignoreDiacritics = function (value) {\n if (typeof value !== 'string') {\n return value;\n }\n var result = value.split('');\n var newValue = result.map(function (temp) { return temp in DataUtil.diacritics ? DataUtil.diacritics[temp] : temp; });\n return newValue.join('');\n };\n DataUtil.merge = function (left, right, fieldName, comparer) {\n var result = [];\n var current;\n while (left.length > 0 || right.length > 0) {\n if (left.length > 0 && right.length > 0) {\n if (comparer) {\n current = comparer(this.getVal(left, 0, fieldName), this.getVal(right, 0, fieldName), left[0], right[0]) <= 0 ? left : right;\n }\n else {\n current = left[0][fieldName] < left[0][fieldName] ? left : right;\n }\n }\n else {\n current = left.length > 0 ? left : right;\n }\n result.push(current.shift());\n }\n return result;\n };\n DataUtil.getVal = function (array, index, field) {\n return field ? this.getObject(field, array[index]) : array[index];\n };\n DataUtil.toLowerCase = function (val) {\n return val ? typeof val === 'string' ? val.toLowerCase() : val.toString() : (val === 0 || val === false) ? val.toString() : '';\n };\n /**\n * To perform the filter operation with specified adaptor and returns the result.\n *\n * @param {Object} adaptor\n * @param {string} fnName\n * @param {Object} param1?\n * @param {Object} param2?\n * @param param1\n * @param param2\n * @hidden\n */\n DataUtil.callAdaptorFunction = function (adaptor, fnName, param1, param2) {\n if (fnName in adaptor) {\n var res = adaptor[fnName](param1, param2);\n if (!isNullOrUndefined(res)) {\n param1 = res;\n }\n }\n return param1;\n };\n DataUtil.getAddParams = function (adp, dm, query) {\n var req = {};\n DataUtil.callAdaptorFunction(adp, 'addParams', {\n dm: dm,\n query: query,\n params: query.params,\n reqParams: req\n });\n return req;\n };\n /**\n * Checks wheather the given input is a plain object or not.\n *\n * @param {Object|Object[]} obj\n */\n DataUtil.isPlainObject = function (obj) {\n return (!!obj) && (obj.constructor === Object);\n };\n /**\n * Returns true when the browser cross origin request.\n */\n DataUtil.isCors = function () {\n var xhr = null;\n var request = 'XMLHttpRequest';\n try {\n xhr = new window[request]();\n }\n catch (e) {\n // No exception handling\n }\n return !!xhr && ('withCredentials' in xhr);\n };\n /**\n * Generate random GUID value which will be prefixed with the given value.\n *\n * @param {string} prefix\n */\n DataUtil.getGuid = function (prefix) {\n var hexs = '0123456789abcdef';\n var rand;\n return (prefix || '') + '00000000-0000-4000-0000-000000000000'.replace(/0/g, function (val, i) {\n if ('crypto' in window && 'getRandomValues' in crypto) {\n var arr = new Uint8Array(1);\n window.crypto.getRandomValues(arr);\n rand = arr[0] % 16 | 0;\n }\n else {\n rand = Math.random() * 16 | 0;\n }\n return hexs[i === 19 ? rand & 0x3 | 0x8 : rand];\n });\n };\n /**\n * Checks wheather the given value is null or not.\n *\n * @param {string|Object} val\n * @returns boolean\n */\n DataUtil.isNull = function (val) {\n return val === undefined || val === null;\n };\n /**\n * To get the required items from collection of objects.\n *\n * @param {Object[]} array\n * @param {string} field\n * @param {Function} comparer\n * @returns Object\n * @hidden\n */\n DataUtil.getItemFromComparer = function (array, field, comparer) {\n var keyVal;\n var current;\n var key;\n var i = 0;\n var castRequired = typeof DataUtil.getVal(array, 0, field) === 'string';\n if (array.length) {\n while (isNullOrUndefined(keyVal) && i < array.length) {\n keyVal = DataUtil.getVal(array, i, field);\n key = array[i++];\n }\n }\n for (; i < array.length; i++) {\n current = DataUtil.getVal(array, i, field);\n if (isNullOrUndefined(current)) {\n continue;\n }\n if (castRequired) {\n keyVal = +keyVal;\n current = +current;\n }\n if (comparer(keyVal, current) > 0) {\n keyVal = current;\n key = array[i];\n }\n }\n return key;\n };\n /**\n * To get distinct values of Array or Array of Objects.\n *\n * @param {Object[]} json\n * @param {string} field\n * @param fieldName\n * @param {boolean} requiresCompleteRecord\n * @returns Object[]\n * * distinct array of objects is return when requiresCompleteRecord set as true.\n * @hidden\n */\n DataUtil.distinct = function (json, fieldName, requiresCompleteRecord) {\n requiresCompleteRecord = isNullOrUndefined(requiresCompleteRecord) ? false : requiresCompleteRecord;\n var result = [];\n var val;\n var tmp = {};\n json.forEach(function (data, index) {\n val = typeof (json[index]) === 'object' ? DataUtil.getVal(json, index, fieldName) : json[index];\n if (!(val in tmp)) {\n result.push(!requiresCompleteRecord ? val : json[index]);\n tmp[val] = 1;\n }\n });\n return result;\n };\n /**\n * Process the given records based on the datamanager string.\n *\n * @param {string} datamanager\n * @param dm\n * @param {Object[]} records\n */\n DataUtil.processData = function (dm, records) {\n var query = this.prepareQuery(dm);\n var sampledata = new DataManager(records);\n if (dm.requiresCounts) {\n query.requiresCount();\n }\n /* eslint-disable @typescript-eslint/no-explicit-any */\n // tslint:disable-next-line:no-any\n var result = sampledata.executeLocal(query);\n /* eslint-enable @typescript-eslint/no-explicit-any */\n var returnValue = {\n result: dm.requiresCounts ? result.result : result,\n count: result.count,\n aggregates: JSON.stringify(result.aggregates)\n };\n return dm.requiresCounts ? returnValue : result;\n };\n DataUtil.prepareQuery = function (dm) {\n var _this = this;\n var query = new Query();\n if (dm.select) {\n query.select(dm.select);\n }\n if (dm.where) {\n var where = DataUtil.parse.parseJson(dm.where);\n where.filter(function (pred) {\n if (isNullOrUndefined(pred.condition)) {\n query.where(pred.field, pred.operator, pred.value, pred.ignoreCase, pred.ignoreAccent);\n }\n else {\n var predicateList = [];\n if (pred.field) {\n predicateList.push(new Predicate(pred.field, pred.operator, pred.value, pred.ignoreCase, pred.ignoreAccent));\n }\n else {\n predicateList = predicateList.concat(_this.getPredicate(pred.predicates));\n }\n if (pred.condition === 'or') {\n query.where(Predicate.or(predicateList));\n }\n else if (pred.condition === 'and') {\n query.where(Predicate.and(predicateList));\n }\n }\n });\n }\n if (dm.search) {\n var search = DataUtil.parse.parseJson(dm.search);\n // tslint:disable-next-line:no-string-literal\n search.filter(function (e) { return query.search(e.key, e.fields, e['operator'], \n // tslint:disable-next-line:no-string-literal\n e['ignoreCase'], e['ignoreAccent']); });\n }\n if (dm.aggregates) {\n dm.aggregates.filter(function (e) { return query.aggregate(e.type, e.field); });\n }\n if (dm.sorted) {\n dm.sorted.filter(function (e) { return query.sortBy(e.name, e.direction); });\n }\n if (dm.skip) {\n query.skip(dm.skip);\n }\n if (dm.take) {\n query.take(dm.take);\n }\n if (dm.group) {\n dm.group.filter(function (grp) { return query.group(grp); });\n }\n return query;\n };\n DataUtil.getPredicate = function (pred) {\n var mainPred = [];\n for (var i = 0; i < pred.length; i++) {\n var e = pred[i];\n if (e.field) {\n mainPred.push(new Predicate(e.field, e.operator, e.value, e.ignoreCase, e.ignoreAccent));\n }\n else {\n var childPred = [];\n // tslint:disable-next-line:typedef\n var cpre = this.getPredicate(e.predicates);\n for (var _i = 0, _a = Object.keys(cpre); _i < _a.length; _i++) {\n var prop = _a[_i];\n childPred.push(cpre[prop]);\n }\n mainPred.push(e.condition === 'or' ? Predicate.or(childPred) : Predicate.and(childPred));\n }\n }\n return mainPred;\n };\n /**\n * Specifies the value which will be used to adjust the date value to server timezone.\n *\n * @default null\n */\n DataUtil.serverTimezoneOffset = null;\n /**\n * Species whether are not to be parsed with serverTimezoneOffset value.\n *\n * @hidden\n */\n DataUtil.timeZoneHandling = true;\n /**\n * Throw error with the given string as message.\n *\n * @param {string} er\n * @param error\n */\n DataUtil.throwError = function (error) {\n try {\n throw new Error(error);\n }\n catch (e) {\n // eslint-disable-next-line no-throw-literal\n throw e.message + '\\n' + e.stack;\n }\n };\n DataUtil.aggregates = {\n /**\n * Calculate sum of the given field in the data.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n sum: function (ds, field) {\n var result = 0;\n var val;\n var castRequired = typeof DataUtil.getVal(ds, 0, field) !== 'number';\n for (var i = 0; i < ds.length; i++) {\n val = DataUtil.getVal(ds, i, field);\n if (!isNaN(val) && val !== null) {\n if (castRequired) {\n val = +val;\n }\n result += val;\n }\n }\n return result;\n },\n /**\n * Calculate average value of the given field in the data.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n average: function (ds, field) {\n return DataUtil.aggregates.sum(ds, field) / ds.length;\n },\n /**\n * Returns the min value of the data based on the field.\n *\n * @param {Object[]} ds\n * @param {string|Function} field\n */\n min: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnAscending));\n },\n /**\n * Returns the max value of the data based on the field.\n *\n * @param {Object[]} ds\n * @param {string} field\n * @returns number\n */\n max: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnDescending));\n },\n /**\n * Returns the total number of true value present in the data based on the given boolean field name.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n truecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', true, true)).length;\n },\n /**\n * Returns the total number of false value present in the data based on the given boolean field name.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n falsecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', false, true)).length;\n },\n /**\n * Returns the length of the given data.\n *\n * @param {Object[]} ds\n * @param {string} field?\n * @param field\n * @returns number\n */\n count: function (ds, field) {\n return ds.length;\n }\n };\n /**\n * Specifies the Object with filter operators.\n */\n DataUtil.operatorSymbols = {\n '<': 'lessthan',\n '>': 'greaterthan',\n '<=': 'lessthanorequal',\n '>=': 'greaterthanorequal',\n '==': 'equal',\n '!=': 'notequal',\n '*=': 'contains',\n '$=': 'endswith',\n '^=': 'startswith'\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * * It will be used for date/number type filter query.\n */\n DataUtil.odBiOperator = {\n '<': ' lt ',\n '>': ' gt ',\n '<=': ' le ',\n '>=': ' ge ',\n '==': ' eq ',\n '!=': ' ne ',\n 'lessthan': ' lt ',\n 'lessthanorequal': ' le ',\n 'greaterthan': ' gt ',\n 'greaterthanorequal': ' ge ',\n 'equal': ' eq ',\n 'notequal': ' ne '\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odUniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'substringof',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'substringof',\n 'doesnotendwith': 'not endswith',\n 'doesnotstartwith': 'not startswith',\n 'doesnotcontain': 'not substringof',\n 'wildcard': 'wildcard',\n 'like': 'like'\n };\n /**\n * Specifies the Object with filter operators which will be used for ODataV4 filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odv4UniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'contains',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'contains',\n 'doesnotendwith': 'not endswith',\n 'doesnotstartwith': 'not startswith',\n 'doesnotcontain': 'not contains',\n 'wildcard': 'wildcard',\n 'like': 'like'\n };\n DataUtil.diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03C9': '\\u03C9',\n '\\u03C2': '\\u03C3'\n };\n DataUtil.fnOperators = {\n /**\n * Returns true when the actual input is equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param {boolean} ignoreAccent?\n * @param ignoreCase\n * @param ignoreAccent\n */\n equal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) === DataUtil.toLowerCase(expected);\n }\n return actual === expected;\n },\n /**\n * Returns true when the actual input is not equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n notequal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n return !DataUtil.fnOperators.equal(actual, expected, ignoreCase);\n },\n /**\n * Returns true when the actual input is less than to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n lessthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) < DataUtil.toLowerCase(expected);\n }\n if (isNullOrUndefined(actual)) {\n actual = undefined;\n }\n return actual < expected;\n },\n /**\n * Returns true when the actual input is greater than to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n greaterthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) > DataUtil.toLowerCase(expected);\n }\n return actual > expected;\n },\n /**\n * Returns true when the actual input is less than or equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n lessthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) <= DataUtil.toLowerCase(expected);\n }\n if (isNullOrUndefined(actual)) {\n actual = undefined;\n }\n return actual <= expected;\n },\n /**\n * Returns true when the actual input is greater than or equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n greaterthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) >= DataUtil.toLowerCase(expected);\n }\n return actual >= expected;\n },\n /**\n * Returns true when the actual input contains the given string.\n *\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n contains: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n DataUtil.toLowerCase(actual).indexOf(DataUtil.toLowerCase(expected)) !== -1;\n }\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n actual.toString().indexOf(expected) !== -1;\n },\n /**\n * Returns true when the actual input not contains the given string.\n *\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n */\n doesnotcontain: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n DataUtil.toLowerCase(actual).indexOf(DataUtil.toLowerCase(expected)) === -1;\n }\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n actual.toString().indexOf(expected) === -1;\n },\n /**\n * Returns true when the given input value is not null.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnotnull: function (actual) {\n return actual !== null && actual !== undefined;\n },\n /**\n * Returns true when the given input value is null.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnull: function (actual) {\n return actual === null || actual === undefined;\n },\n /**\n * Returns true when the actual input starts with the given string\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n startswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.startsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.startsWith(actual, expected);\n },\n /**\n * Returns true when the actual input not starts with the given string\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n doesnotstartwith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.notStartsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.notStartsWith(actual, expected);\n },\n /**\n * Returns true when the actual input like with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n like: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.like(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.like(actual, expected);\n },\n /**\n * Returns true when the given input value is empty.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isempty: function (actual) {\n return actual === undefined || actual === '';\n },\n /**\n * Returns true when the given input value is not empty.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnotempty: function (actual) {\n return actual !== undefined && actual !== '';\n },\n /**\n * Returns true when the actual input pattern(wildcard) matches with the given string.\n *\n * @param {string|Date} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n wildcard: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return (actual || typeof actual === 'boolean') && expected && typeof actual !== 'object' &&\n DataUtil.wildCard(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return (actual || typeof actual === 'boolean') && expected && DataUtil.wildCard(actual, expected);\n },\n /**\n * Returns true when the actual input ends with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n endswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.endsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.endsWith(actual, expected);\n },\n /**\n * Returns true when the actual input not ends with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n doesnotendwith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.notEndsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.notEndsWith(actual, expected);\n },\n /**\n * It will return the filter operator based on the filter symbol.\n *\n * @param {string} operator\n * @hidden\n */\n processSymbols: function (operator) {\n var fnName = DataUtil.operatorSymbols[operator];\n if (fnName) {\n var fn = DataUtil.fnOperators[fnName];\n return fn;\n }\n return DataUtil.throwError('Query - Process Operator : Invalid operator');\n },\n /**\n * It will return the valid filter operator based on the specified operators.\n *\n * @param {string} operator\n * @hidden\n */\n processOperator: function (operator) {\n var fn = DataUtil.fnOperators[operator];\n if (fn) {\n return fn;\n }\n return DataUtil.fnOperators.processSymbols(operator);\n }\n };\n /**\n * To perform the parse operation on JSON data, like convert to string from JSON or convert to JSON from string.\n */\n DataUtil.parse = {\n /**\n * Parse the given string to the plain JavaScript object.\n *\n * @param {string|Object|Object[]} jsonText\n */\n parseJson: function (jsonText) {\n if (typeof jsonText === 'string' && (/^[\\s]*\\[|^[\\s]*\\{(.)+:/g.test(jsonText) || jsonText.indexOf('\"') === -1)) {\n jsonText = JSON.parse(jsonText, DataUtil.parse.jsonReviver);\n }\n else if (jsonText instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(jsonText);\n }\n else if (typeof jsonText === 'object' && jsonText !== null) {\n DataUtil.parse.iterateAndReviveJson(jsonText);\n }\n return jsonText;\n },\n /**\n * It will perform on array of values.\n *\n * @param {string[]|Object[]} array\n * @hidden\n */\n iterateAndReviveArray: function (array) {\n for (var i = 0; i < array.length; i++) {\n if (typeof array[i] === 'object' && array[i] !== null) {\n DataUtil.parse.iterateAndReviveJson(array[i]);\n // eslint-disable-next-line no-useless-escape\n }\n else if (typeof array[i] === 'string' && (!/^[\\s]*\\[|^[\\s]*\\{(.)+:|\\\"/g.test(array[i]) ||\n array[i].toString().indexOf('\"') === -1)) {\n array[i] = DataUtil.parse.jsonReviver('', array[i]);\n }\n else {\n array[i] = DataUtil.parse.parseJson(array[i]);\n }\n }\n },\n /**\n * It will perform on JSON values\n *\n * @param {JSON} json\n * @hidden\n */\n iterateAndReviveJson: function (json) {\n var value;\n var keys = Object.keys(json);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var prop = keys_2[_i];\n if (DataUtil.startsWith(prop, '__')) {\n continue;\n }\n value = json[prop];\n if (typeof value === 'object') {\n if (value instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(value);\n }\n else if (value) {\n DataUtil.parse.iterateAndReviveJson(value);\n }\n }\n else {\n json[prop] = DataUtil.parse.jsonReviver(json[prop], value);\n }\n }\n },\n /**\n * It will perform on JSON values\n *\n * @param {string} field\n * @param {string|Date} value\n * @hidden\n */\n jsonReviver: function (field, value) {\n if (typeof value === 'string') {\n // eslint-disable-next-line security/detect-unsafe-regex\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n var offSet = DataUtil.timeZoneHandling ? DataUtil.serverTimezoneOffset : null;\n if (ms) {\n return DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), offSet, true);\n // eslint-disable-next-line no-useless-escape, security/detect-unsafe-regex\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var isUTC = value.indexOf('Z') > -1 || value.indexOf('z') > -1;\n var arr = value.split(/[^0-9.]/);\n if (isUTC) {\n if (arr[5].indexOf('.') > -1) {\n var secondsMs = arr[5].split('.');\n arr[5] = secondsMs[0];\n arr[6] = new Date(value).getUTCMilliseconds().toString();\n }\n else {\n arr[6] = '00';\n }\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5] ? arr[5] : '00', 10), parseInt(arr[6], 10)), DataUtil.serverTimezoneOffset, false);\n }\n else {\n var utcFormat = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5] ? arr[5] : '00', 10));\n var hrs = parseInt(arr[6], 10);\n var mins = parseInt(arr[7], 10);\n if (isNaN(hrs) && isNaN(mins)) {\n return utcFormat;\n }\n if (value.indexOf('+') > -1) {\n utcFormat.setHours(utcFormat.getHours() - hrs, utcFormat.getMinutes() - mins);\n }\n else {\n utcFormat.setHours(utcFormat.getHours() + hrs, utcFormat.getMinutes() + mins);\n }\n value = DataUtil.dateParse\n .toTimeZone(utcFormat, DataUtil.serverTimezoneOffset, false);\n }\n if (DataUtil.serverTimezoneOffset == null) {\n value = DataUtil.dateParse.addSelfOffset(value);\n }\n }\n }\n return value;\n },\n /**\n * Check wheather the given value is JSON or not.\n *\n * @param {Object[]} jsonData\n */\n isJson: function (jsonData) {\n if (typeof jsonData[0] === 'string') {\n return jsonData;\n }\n return DataUtil.parse.parseJson(jsonData);\n },\n /**\n * Checks wheather the given value is GUID or not.\n *\n * @param {string} value\n */\n isGuid: function (value) {\n // eslint-disable-next-line security/detect-unsafe-regex\n var regex = /[A-Fa-f0-9]{8}(?:-[A-Fa-f0-9]{4}){3}-[A-Fa-f0-9]{12}/i;\n var match = regex.exec(value);\n return match != null;\n },\n /**\n * The method used to replace the value based on the type.\n *\n * @param {Object} value\n * @param {boolean} stringify\n * @hidden\n */\n replacer: function (value, stringify) {\n if (DataUtil.isPlainObject(value)) {\n return DataUtil.parse.jsonReplacer(value, stringify);\n }\n if (value instanceof Array) {\n return DataUtil.parse.arrayReplacer(value);\n }\n if (value instanceof Date) {\n return DataUtil.parse.jsonReplacer({ val: value }, stringify).val;\n }\n return value;\n },\n /**\n * It will replace the JSON value.\n *\n * @param {string} key\n * @param {Object} val\n * @param stringify\n * @hidden\n */\n jsonReplacer: function (val, stringify) {\n var value;\n var keys = Object.keys(val);\n for (var _i = 0, keys_3 = keys; _i < keys_3.length; _i++) {\n var prop = keys_3[_i];\n value = val[prop];\n if (!(value instanceof Date)) {\n continue;\n }\n var d = value;\n if (DataUtil.serverTimezoneOffset == null) {\n val[prop] = DataUtil.dateParse.toTimeZone(d, null).toJSON();\n }\n else {\n d = new Date(+d + DataUtil.serverTimezoneOffset * 3600000);\n val[prop] = DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(d), null).toJSON();\n }\n }\n return val;\n },\n /**\n * It will replace the Array of value.\n *\n * @param {string} key\n * @param {Object[]} val\n * @hidden\n */\n arrayReplacer: function (val) {\n for (var i = 0; i < val.length; i++) {\n if (DataUtil.isPlainObject(val[i])) {\n val[i] = DataUtil.parse.jsonReplacer(val[i]);\n }\n else if (val[i] instanceof Date) {\n val[i] = DataUtil.parse.jsonReplacer({ date: val[i] }).date;\n }\n }\n return val;\n },\n /**\n * It will replace the Date object with respective to UTC format value.\n *\n * @param {string} key\n * @param {any} value\n * @hidden\n */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n /* tslint:disable-next-line:no-any */\n jsonDateReplacer: function (key, value) {\n /* eslint-enable @typescript-eslint/no-explicit-any */\n if (key === 'value' && value) {\n if (typeof value === 'string') {\n // eslint-disable-next-line security/detect-unsafe-regex\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n if (ms) {\n value = DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), null, true);\n // eslint-disable-next-line no-useless-escape, security/detect-unsafe-regex\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var arr = value.split(/[^0-9]/);\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10)), null, true);\n }\n }\n if (value instanceof Date) {\n value = DataUtil.dateParse.addSelfOffset(value);\n if (DataUtil.serverTimezoneOffset === null) {\n return DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(value), null).toJSON();\n }\n else {\n value = DataUtil.dateParse.toTimeZone(value, ((value.getTimezoneOffset() / 60)\n - DataUtil.serverTimezoneOffset), false);\n return value.toJSON();\n }\n }\n }\n return value;\n }\n };\n /**\n * @hidden\n */\n DataUtil.dateParse = {\n addSelfOffset: function (input) {\n return new Date(+input - (input.getTimezoneOffset() * 60000));\n },\n toUTC: function (input) {\n return new Date(+input + (input.getTimezoneOffset() * 60000));\n },\n toTimeZone: function (input, offset, utc) {\n if (offset === null) {\n return input;\n }\n var unix = utc ? DataUtil.dateParse.toUTC(input) : input;\n return new Date(+unix - (offset * 3600000));\n },\n toLocalTime: function (input) {\n var datefn = input;\n var timeZone = -datefn.getTimezoneOffset();\n var differenceString = timeZone >= 0 ? '+' : '-';\n var localtimefn = function (num) {\n var norm = Math.floor(Math.abs(num));\n return (norm < 10 ? '0' : '') + norm;\n };\n var val = datefn.getFullYear() + '-' + localtimefn(datefn.getMonth() + 1) + '-' + localtimefn(datefn.getDate()) +\n 'T' + localtimefn(datefn.getHours()) +\n ':' + localtimefn(datefn.getMinutes()) +\n ':' + localtimefn(datefn.getSeconds()) +\n differenceString + localtimefn(timeZone / 60) +\n ':' + localtimefn(timeZone % 60);\n return val;\n }\n };\n return DataUtil;\n}());\nexport { DataUtil };\n","/**\n * IncrementalSearch module file\n */\nvar queryString = '';\nvar prevString = '';\nvar tempQueryString = '';\nvar matches = [];\nvar activeClass = 'e-active';\nvar prevElementId = '';\n/**\n * Search and focus the list item based on key code matches with list text content\n *\n * @param { number } keyCode - Specifies the key code which pressed on keyboard events.\n * @param { HTMLElement[]} items - Specifies an array of HTMLElement, from which matches find has done.\n * @param { number } selectedIndex - Specifies the selected item in list item, so that search will happen\n * after selected item otherwise it will do from initial.\n * @param { boolean } ignoreCase - Specifies the case consideration when search has done.\n * @param {string} elementId - Specifies the list element ID.\n * @returns {Element} Returns list item based on key code matches with list text content.\n */\nexport function incrementalSearch(keyCode, items, selectedIndex, ignoreCase, elementId, queryStringUpdated, currentValue, isVirtual, refresh) {\n if (!queryStringUpdated || queryString === '') {\n if (tempQueryString != '') {\n queryString = tempQueryString + String.fromCharCode(keyCode);\n tempQueryString = '';\n }\n else {\n queryString += String.fromCharCode(keyCode);\n }\n }\n else if (queryString == prevString) {\n tempQueryString = String.fromCharCode(keyCode);\n }\n if (isVirtual) {\n setTimeout(function () {\n tempQueryString = '';\n }, 700);\n setTimeout(function () {\n queryString = '';\n }, 3000);\n }\n else {\n setTimeout(function () {\n queryString = '';\n }, 1000);\n }\n var index;\n queryString = ignoreCase ? queryString.toLowerCase() : queryString;\n if (prevElementId === elementId && prevString === queryString && !refresh) {\n for (var i = 0; i < matches.length; i++) {\n if (matches[i].classList.contains(activeClass)) {\n index = i;\n break;\n }\n if (currentValue && matches[i].textContent.toLowerCase() === currentValue.toLowerCase()) {\n index = i;\n break;\n }\n }\n index = index + 1;\n if (isVirtual) {\n return matches[index] && matches.length - 1 != index ? matches[index] : matches[matches.length];\n }\n return matches[index] ? matches[index] : matches[0];\n }\n else {\n var listItems = items;\n var strLength = queryString.length;\n var text = void 0;\n var item = void 0;\n selectedIndex = selectedIndex ? selectedIndex + 1 : 0;\n var i = selectedIndex;\n matches = [];\n do {\n if (i === listItems.length) {\n i = -1;\n }\n if (i === -1) {\n index = 0;\n }\n else {\n index = i;\n }\n item = listItems[index];\n text = ignoreCase ? item.innerText.toLowerCase() : item.innerText;\n if (text.substr(0, strLength) === queryString) {\n matches.push(listItems[index]);\n }\n i++;\n } while (i !== selectedIndex);\n prevString = queryString;\n prevElementId = elementId;\n if (isVirtual) {\n var indexUpdated = false;\n for (var i_1 = 0; i_1 < matches.length; i_1++) {\n if (currentValue && matches[i_1].textContent.toLowerCase() === currentValue.toLowerCase()) {\n index = i_1;\n indexUpdated = true;\n break;\n }\n }\n if (currentValue && indexUpdated) {\n index = index + 1;\n }\n return matches[index] ? matches[index] : matches[0];\n }\n return matches[0];\n }\n}\n/**\n * Search the list item based on given input value matches with search type.\n *\n * @param {string} inputVal - Specifies the given input value.\n * @param {HTMLElement[]} items - Specifies the list items.\n * @param {SearchType} searchType - Specifies the filter type.\n * @param {boolean} ignoreCase - Specifies the case sensitive option for search operation.\n * @returns {Element | number} Returns the search matched items.\n */\nexport function Search(inputVal, items, searchType, ignoreCase, dataSource, fields, type) {\n var listItems = items;\n ignoreCase = ignoreCase !== undefined && ignoreCase !== null ? ignoreCase : true;\n var itemData = { item: null, index: null };\n if (inputVal && inputVal.length) {\n var strLength = inputVal.length;\n var queryStr = ignoreCase ? inputVal.toLocaleLowerCase() : inputVal;\n queryStr = escapeCharRegExp(queryStr);\n var _loop_1 = function (i, itemsData) {\n var item = itemsData[i];\n var text = void 0;\n var filterValue;\n if (items && dataSource) {\n var checkField_1 = item;\n var fieldValue_1 = fields.text.split('.');\n dataSource.filter(function (data) {\n Array.prototype.slice.call(fieldValue_1).forEach(function (value) {\n /* eslint-disable security/detect-object-injection */\n if (type === 'object' && (!data.isHeader && checkField_1.textContent.toString().indexOf(data[value]) !== -1) && checkField_1.getAttribute('data-value') === data[fields.value].toString() || type === 'string' && checkField_1.textContent.toString().indexOf(data) !== -1) {\n filterValue = type === 'object' ? data[value] : data;\n }\n });\n });\n }\n text = dataSource && filterValue ? (ignoreCase ? filterValue.toString().toLocaleLowerCase() : filterValue).replace(/^\\s+|\\s+$/g, '') : (ignoreCase ? item.textContent.toLocaleLowerCase() : item.textContent).replace(/^\\s+|\\s+$/g, '');\n /* eslint-disable security/detect-non-literal-regexp */\n if ((searchType === 'Equal' && text === queryStr) || (searchType === 'StartsWith' && text.substr(0, strLength) === queryStr) || (searchType === 'EndsWith' && text.substr(text.length - queryStr.length) === queryStr) || (searchType === 'Contains' && new RegExp(queryStr, \"g\").test(text))) {\n itemData.item = item;\n itemData.index = i;\n return { value: { item: item, index: i } };\n }\n };\n for (var i = 0, itemsData = listItems; i < itemsData.length; i++) {\n var state_1 = _loop_1(i, itemsData);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return itemData;\n /* eslint-enable security/detect-non-literal-regexp */\n }\n return itemData;\n}\n/* eslint-enable security/detect-object-injection */\nexport function escapeCharRegExp(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\nexport function resetIncrementalSearchValues(elementId) {\n if (prevElementId === elementId) {\n prevElementId = '';\n prevString = '';\n queryString = '';\n matches = [];\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, getUniqueID, formatUnit, NotifyPropertyChanges, Property, attributes, removeClass, addClass } from '@syncfusion/ej2-base';\nvar cssClassName = {\n TEXTSHAPE: 'e-skeleton-text',\n CIRCLESHAPE: 'e-skeleton-circle',\n SQUARESHAPE: 'e-skeleton-square',\n RECTANGLESHAPE: 'e-skeleton-rectangle',\n WAVEEFFECT: 'e-shimmer-wave',\n PULSEEFFECT: 'e-shimmer-pulse',\n FADEEFFECT: 'e-shimmer-fade',\n VISIBLENONE: 'e-visible-none'\n};\n/**\n * Defines the shape of Skeleton.\n */\nexport var SkeletonType;\n(function (SkeletonType) {\n /**\n * Defines the skeleton shape as text.\n */\n SkeletonType[\"Text\"] = \"Text\";\n /**\n * Defines the skeleton shape as circle.\n */\n SkeletonType[\"Circle\"] = \"Circle\";\n /**\n * Defines the skeleton shape as square.\n */\n SkeletonType[\"Square\"] = \"Square\";\n /**\n * Defines the skeleton shape as rectangle.\n */\n SkeletonType[\"Rectangle\"] = \"Rectangle\";\n})(SkeletonType || (SkeletonType = {}));\n/**\n * Defines the animation effect of Skeleton.\n */\nexport var ShimmerEffect;\n(function (ShimmerEffect) {\n /**\n * Defines the animation as shimmer wave effect.\n */\n ShimmerEffect[\"Wave\"] = \"Wave\";\n /**\n * Defines the animation as fade effect.\n */\n ShimmerEffect[\"Fade\"] = \"Fade\";\n /**\n * Defines the animation as pulse effect.\n */\n ShimmerEffect[\"Pulse\"] = \"Pulse\";\n /**\n * Defines the animation as no effect.\n */\n ShimmerEffect[\"None\"] = \"None\";\n})(ShimmerEffect || (ShimmerEffect = {}));\n/**\n * The Shimmer is a placeholder that animates a shimmer effect to let users know that the page’s content is loading at the moment.\n * In other terms, it simulates the layout of page content while loading the actual content.\n * ```html\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar Skeleton = /** @class */ (function (_super) {\n __extends(Skeleton, _super);\n /**\n * Constructor for creating Skeleton component.\n *\n * @param {SkeletonModel} options - Defines the model of Skeleton class.\n * @param {HTMLElement} element - Defines the target HTML element.\n */\n function Skeleton(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Get component module name.\n *\n * @returns {string} - Module name\n * @private\n */\n Skeleton.prototype.getModuleName = function () {\n return 'skeleton';\n };\n Skeleton.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n Skeleton.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.updateCssClass();\n attributes(this.element, { role: 'alert', 'aria-busy': 'true', 'aria-live': 'polite', 'aria-label': this.label });\n };\n /**\n * Method for initialize the component rendering.\n *\n * @returns {void}\n * @private\n */\n Skeleton.prototype.render = function () {\n this.initialize();\n };\n Skeleton.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n case 'height':\n this.updateDimension();\n break;\n case 'shape':\n this.updateShape();\n break;\n case 'shimmerEffect':\n this.updateEffect();\n break;\n case 'visible':\n this.updateVisibility();\n break;\n case 'label':\n this.element.setAttribute('aria-label', this.label);\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n this.updateCssClass();\n break;\n }\n }\n };\n /**\n * Method to destroys the Skeleton component.\n *\n * @returns {void}\n */\n Skeleton.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n var attrs = ['role', 'aria-live', 'aria-busy', 'aria-label'];\n var cssClass = [];\n if (this.cssClass) {\n cssClass = cssClass.concat(this.cssClass.split(' '));\n }\n for (var i = 0; i < attrs.length; i++) {\n this.element.removeAttribute(attrs[parseInt(i.toString(), 10)]);\n }\n cssClass = cssClass.concat(this.element.classList.value.match(/(e-skeleton-[^\\s]+)/g) || []);\n cssClass = cssClass.concat(this.element.classList.value.match(/(e-shimmer-[^\\s]+)/g) || []);\n removeClass([this.element], cssClass);\n };\n Skeleton.prototype.initialize = function () {\n this.updateShape();\n this.updateEffect();\n this.updateVisibility();\n };\n Skeleton.prototype.updateShape = function () {\n var shapeCss = cssClassName[this.shape.toUpperCase() + 'SHAPE'];\n var removeCss = (this.element.classList.value.match(/(e-skeleton-[^\\s]+)/g) || []);\n this.updateDimension();\n if (removeCss) {\n removeClass([this.element], removeCss);\n }\n addClass([this.element], [shapeCss]);\n };\n Skeleton.prototype.updateDimension = function () {\n var width = (!this.width && (['Text', 'Rectangle'].indexOf(this.shape) > -1)) ? '100%' : formatUnit(this.width);\n var height = ['Circle', 'Square'].indexOf(this.shape) > -1 ? width : formatUnit(this.height);\n this.element.style.width = width;\n this.element.style.height = height;\n };\n Skeleton.prototype.updateEffect = function () {\n var removeCss = (this.element.classList.value.match(/(e-shimmer-[^\\s]+)/g) || []);\n if (removeCss) {\n removeClass([this.element], removeCss);\n }\n addClass([this.element], [cssClassName[this.shimmerEffect.toUpperCase() + 'EFFECT']]);\n };\n Skeleton.prototype.updateVisibility = function () {\n this.element.classList[this.visible ? 'remove' : 'add'](cssClassName.VISIBLENONE);\n };\n Skeleton.prototype.updateCssClass = function () {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n __decorate([\n Property('')\n ], Skeleton.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Skeleton.prototype, \"height\", void 0);\n __decorate([\n Property(true)\n ], Skeleton.prototype, \"visible\", void 0);\n __decorate([\n Property('Text')\n ], Skeleton.prototype, \"shape\", void 0);\n __decorate([\n Property('Wave')\n ], Skeleton.prototype, \"shimmerEffect\", void 0);\n __decorate([\n Property('Loading...')\n ], Skeleton.prototype, \"label\", void 0);\n __decorate([\n Property('')\n ], Skeleton.prototype, \"cssClass\", void 0);\n Skeleton = __decorate([\n NotifyPropertyChanges\n ], Skeleton);\n return Skeleton;\n}(Component));\nexport { Skeleton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, addClass, append, Property, Event, L10n, compile } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, extend, removeClass, prepend, isNullOrUndefined, detach, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, rippleEffect, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { select, selectAll } from '@syncfusion/ej2-base';\nimport { Skeleton } from '@syncfusion/ej2-notifications';\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\nexport var dropDownBaseClasses = {\n root: 'e-dropdownbase',\n rtl: 'e-rtl',\n content: 'e-content',\n selected: 'e-active',\n hover: 'e-hover',\n noData: 'e-nodata',\n fixedHead: 'e-fixed-head',\n focus: 'e-item-focus',\n li: 'e-list-item',\n group: 'e-list-group-item',\n disabled: 'e-disabled',\n grouping: 'e-dd-group',\n virtualList: 'e-list-item e-virtual-list',\n};\nvar ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\nvar DISPLAYTEMPLATE_PROPERTY = 'DisplayTemplate';\nvar SPINNERTEMPLATE_PROPERTY = 'SpinnerTemplate';\nvar VALUETEMPLATE_PROPERTY = 'ValueTemplate';\nvar GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar FOOTERTEMPLATE_PROPERTY = 'FooterTemplate';\nvar NORECORDSTEMPLATE_PROPERTY = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE_PROPERTY = 'ActionFailureTemplate';\nvar HIDE_GROUPLIST = 'e-hide-group-header';\n/**\n * DropDownBase component will generate the list items based on given data and act as base class to drop-down related components\n */\nvar DropDownBase = /** @class */ (function (_super) {\n __extends(DropDownBase, _super);\n /**\n * * Constructor for DropDownBase class\n *\n * @param {DropDownBaseModel} options - Specifies the DropDownBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isPreventChange = false;\n _this.isDynamicDataChange = false;\n _this.addedNewItem = false;\n _this.isAddNewItemTemplate = false;\n _this.isRequesting = false;\n _this.isVirtualizationEnabled = false;\n _this.isCustomDataUpdated = false;\n _this.isAllowFiltering = false;\n _this.virtualizedItemsCount = 0;\n _this.isCheckBoxSelection = false;\n _this.totalItemCount = 0;\n _this.dataCount = 0;\n _this.isRemoteDataUpdated = false;\n _this.isIncrementalRequest = false;\n _this.itemCount = 10;\n _this.virtualListHeight = 0;\n _this.isVirtualScrolling = false;\n _this.isPreventScrollAction = false;\n _this.scrollPreStartIndex = 0;\n _this.isScrollActionTriggered = false;\n _this.previousStartIndex = 0;\n _this.isMouseScrollAction = false;\n _this.isKeyBoardAction = false;\n _this.isScrollChanged = false;\n _this.isUpwardScrolling = false;\n _this.startIndex = 0;\n _this.currentPageNumber = 0;\n _this.pageCount = 0;\n _this.isPreventKeyAction = false;\n _this.generatedDataObject = {};\n _this.skeletonCount = 32;\n _this.isVirtualTrackHeight = false;\n _this.virtualSelectAll = false;\n _this.incrementalQueryString = '';\n _this.incrementalEndIndex = 0;\n _this.incrementalStartIndex = 0;\n _this.incrementalPreQueryString = '';\n _this.isObjectCustomValue = false;\n _this.appendUncheckList = false;\n _this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n _this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n _this.selectedValueInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n return _this;\n }\n DropDownBase.prototype.getPropObject = function (prop, newProp, oldProp) {\n var newProperty = new Object();\n var oldProperty = new Object();\n var propName = function (prop) {\n return prop;\n };\n newProperty[propName(prop)] = newProp[propName(prop)];\n oldProperty[propName(prop)] = oldProp[propName(prop)];\n var data = new Object();\n data.newProperty = newProperty;\n data.oldProperty = oldProperty;\n return data;\n };\n DropDownBase.prototype.getValueByText = function (text, ignoreCase, ignoreAccent) {\n var value = null;\n if (!isNullOrUndefined(this.listData)) {\n if (ignoreCase) {\n value = this.checkValueCase(text, true, ignoreAccent);\n }\n else {\n value = this.checkValueCase(text, false, ignoreAccent);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkValueCase = function (text, ignoreCase, ignoreAccent, isTextByValue) {\n var _this = this;\n var value = null;\n if (isTextByValue) {\n value = text;\n }\n var dataSource = this.listData;\n var fields = this.fields;\n var type = this.typeOfData(dataSource).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n if (!isNullOrUndefined(item)) {\n if (ignoreAccent) {\n value = this.checkingAccent(String(item), text, ignoreCase);\n }\n else {\n if (ignoreCase) {\n if (this.checkIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase, isTextByValue);\n }\n }\n }\n }\n }\n }\n else {\n if (ignoreCase) {\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && _this.checkIgnoreCase(getValue(fields.text, item).toString(), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n else {\n if (isTextByValue) {\n var compareValue_1 = null;\n compareValue_1 = value;\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && !isNullOrUndefined(value) && itemValue.toString() === compareValue_1.toString()) {\n value = getValue(fields.text, item);\n }\n });\n }\n else {\n dataSource.filter(function (item) {\n if (_this.checkNonIgnoreCase(getValue(fields.text, item), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n }\n }\n return value;\n };\n DropDownBase.prototype.checkingAccent = function (item, text, ignoreCase) {\n var dataItem = DataUtil.ignoreDiacritics(String(item));\n var textItem = DataUtil.ignoreDiacritics(text.toString());\n var value = null;\n if (ignoreCase) {\n if (this.checkIgnoreCase(dataItem, textItem)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkIgnoreCase = function (item, text) {\n return String(item).toLowerCase() === text.toString().toLowerCase() ? true : false;\n };\n DropDownBase.prototype.checkNonIgnoreCase = function (item, text) {\n return String(item) === text.toString() ? true : false;\n };\n DropDownBase.prototype.getItemValue = function (dataItem, typedText, ignoreCase, isTextByValue) {\n var value = null;\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n if (isTextByValue) {\n value = dataItem.toString();\n }\n else {\n if (ignoreCase) {\n value = type === 'string' ? String(dataItem) : this.getFormattedValue(String(dataItem));\n }\n else {\n value = type === 'string' ? typedText : this.getFormattedValue(typedText);\n }\n }\n return value;\n };\n DropDownBase.prototype.templateCompiler = function (baseTemplate) {\n var checkTemplate = false;\n if (typeof baseTemplate !== 'function' && baseTemplate) {\n try {\n checkTemplate = (selectAll(baseTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownBase.prototype.l10nUpdate = function (actionFailure) {\n var ele = this.getModuleName() === 'listbox' ? this.ulElement : this.list;\n if (this.noRecordsTemplate !== 'No records found' || this.actionFailureTemplate !== 'Request failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var compiledString = void 0;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n ele.innerHTML = '';\n var tempaltecheck = this.templateCompiler(template);\n if (typeof template !== 'function' && tempaltecheck) {\n compiledString = compile(select(template, document).innerHTML.trim());\n }\n else {\n compiledString = compile(template);\n }\n var templateName = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var noDataElement = void 0;\n if ((this.isReact) && typeof template === 'function') {\n noDataElement = compiledString({}, this, templateName, templateId, this.isStringTemplate, null);\n }\n else {\n noDataElement = compiledString({}, this, templateName, templateId, this.isStringTemplate, null, ele);\n }\n if (noDataElement && noDataElement.length > 0) {\n for (var i = 0; i < noDataElement.length; i++) {\n if (this.getModuleName() === 'listbox' && templateName === 'noRecordsTemplate') {\n if (noDataElement[i].nodeName === '#text') {\n var liElem = this.createElement('li');\n liElem.textContent = noDataElement[i].textContent;\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n ele.appendChild(liElem);\n }\n else {\n noDataElement[i].classList.add('e-list-nr-template');\n ele.appendChild(noDataElement[i]);\n }\n }\n else {\n if (noDataElement[i] instanceof HTMLElement || noDataElement[i] instanceof Text) {\n ele.appendChild(noDataElement[i]);\n }\n }\n }\n }\n this.renderReactTemplates();\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No records found', actionFailureTemplate: 'Request failed' };\n var componentLocale = new L10n(this.getLocaleName(), {}, this.locale);\n if (componentLocale.getConstant('actionFailureTemplate') !== '' || componentLocale.getConstant('noRecordsTemplate') !== '') {\n this.l10n = componentLocale;\n }\n else {\n this.l10n = new L10n(this.getModuleName() === 'listbox' ? 'listbox' :\n this.getModuleName() === 'mention' ? 'mention' : 'dropdowns', l10nLocale, this.locale);\n }\n var content = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n if (this.getModuleName() === 'listbox') {\n var liElem = this.createElement('li');\n liElem.textContent = content;\n ele.appendChild(liElem);\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n }\n else {\n if (!isNullOrUndefined(ele)) {\n ele.innerHTML = content;\n }\n }\n }\n };\n DropDownBase.prototype.checkAndResetCache = function () {\n if (this.isVirtualizationEnabled) {\n this.generatedDataObject = {};\n this.virtualItemStartIndex = this.virtualItemEndIndex = 0;\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\n this.selectedValueInfo = null;\n }\n };\n DropDownBase.prototype.updateIncrementalInfo = function (startIndex, endIndex) {\n this.viewPortInfo.startIndex = startIndex;\n this.viewPortInfo.endIndex = endIndex;\n this.updateVirtualItemIndex();\n this.isIncrementalRequest = true;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isIncrementalRequest = false;\n };\n DropDownBase.prototype.updateIncrementalView = function (startIndex, endIndex) {\n this.viewPortInfo.startIndex = startIndex;\n this.viewPortInfo.endIndex = endIndex;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n };\n DropDownBase.prototype.updateVirtualItemIndex = function () {\n this.virtualItemStartIndex = this.viewPortInfo.startIndex;\n this.virtualItemEndIndex = this.viewPortInfo.endIndex;\n this.virtualListInfo = this.viewPortInfo;\n };\n DropDownBase.prototype.getFilteringSkeletonCount = function () {\n var difference = this.dataCount - this.viewPortInfo.endIndex;\n var currentSkeletonCount = this.skeletonCount;\n this.getSkeletonCount(true);\n this.skeletonCount = this.dataCount > this.itemCount * 2 ? this.skeletonCount : difference > this.skeletonCount ? this.skeletonCount : difference > 0 ? difference : 0;\n var skeletonUpdated = true;\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect') && (this.totalItemCount < (this.itemCount * 2))) {\n this.skeletonCount = 0;\n skeletonUpdated = false;\n }\n if (!this.list.classList.contains(dropDownBaseClasses.noData)) {\n var isSkeletonCountChange = currentSkeletonCount !== this.skeletonCount;\n if (currentSkeletonCount !== this.skeletonCount && skeletonUpdated) {\n this.UpdateSkeleton(true, Math.abs(currentSkeletonCount - this.skeletonCount));\n }\n else {\n this.UpdateSkeleton();\n }\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n if ((this.list.getElementsByClassName('e-virtual-ddl').length > 0)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n else if (!this.list.querySelector('.e-virtual-ddl') && this.skeletonCount > 0 && this.list.querySelector('.e-dropdownbase')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.list.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n if (this.list.getElementsByClassName('e-virtual-ddl-content').length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\n };\n DropDownBase.prototype.getSkeletonCount = function (retainSkeleton) {\n this.virtualListHeight = this.listContainerHeight != null ? parseInt(this.listContainerHeight, 10) : this.virtualListHeight;\n var actualCount = this.virtualListHeight > 0 ? Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n this.skeletonCount = actualCount * 2 < this.itemCount ? this.itemCount : actualCount * 2;\n this.itemCount = retainSkeleton ? this.itemCount : this.skeletonCount;\n this.skeletonCount = Math.floor(this.skeletonCount / 2) + 2;\n };\n DropDownBase.prototype.GetVirtualTrackHeight = function () {\n var height = this.totalItemCount === this.viewPortInfo.endIndex ? this.totalItemCount * this.listItemHeight - this.itemCount * this.listItemHeight : this.totalItemCount * this.listItemHeight;\n height = this.isVirtualTrackHeight ? 0 : height;\n var heightDimension = \"height: \" + (height - this.itemCount * this.listItemHeight) + \"px;\";\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect') && this.skeletonCount === 0) {\n return \"height: 0px;\";\n }\n return heightDimension;\n };\n DropDownBase.prototype.getTransformValues = function () {\n var translateY = this.viewPortInfo.startIndex * this.listItemHeight;\n translateY = translateY - (this.skeletonCount * this.listItemHeight);\n translateY = this.viewPortInfo.startIndex === 0 && this.listData && this.listData.length === 0 ? 0 : translateY;\n var styleText = \"transform: translate(0px, \" + translateY + \"px);\";\n return styleText;\n };\n DropDownBase.prototype.UpdateSkeleton = function (isSkeletonCountChange, skeletonCount) {\n var isContainSkeleton = this.list.querySelector('.e-virtual-ddl-content');\n var isContainVirtualList = this.list.querySelector('.e-virtual-list');\n if (isContainSkeleton && (!isContainVirtualList || isSkeletonCountChange) && this.isVirtualizationEnabled) {\n var totalSkeletonCount = isSkeletonCountChange ? skeletonCount : this.skeletonCount;\n for (var i = 0; i < totalSkeletonCount; i++) {\n var liElement = this.createElement('li', { className: dropDownBaseClasses.virtualList, styles: 'overflow: inherit' });\n if (this.isVirtualizationEnabled && this.itemTemplate) {\n liElement.style.height = this.listItemHeight + 'px';\n }\n var skeleton = new Skeleton({\n shape: \"Text\",\n height: \"10px\",\n width: \"95%\",\n cssClass: \"e-skeleton-text\",\n });\n skeleton.appendTo(this.createElement('div'));\n liElement.appendChild(skeleton.element);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isContainSkeleton.firstChild && isContainSkeleton.firstChild.insertBefore(liElement, isContainSkeleton.firstChild.children[0]);\n }\n }\n };\n DropDownBase.prototype.getLocaleName = function () {\n return 'drop-down-base';\n };\n DropDownBase.prototype.getTextByValue = function (value) {\n var text = this.checkValueCase(value, false, false, true);\n return text;\n };\n DropDownBase.prototype.getFormattedValue = function (value) {\n if (this.listData && this.listData.length) {\n var item = void 0;\n if (this.properties.allowCustomValue && this.properties.value && this.properties.value instanceof Array && this.properties.value.length > 0) {\n item = this.typeOfData(this.properties.value);\n }\n else {\n item = this.typeOfData(this.listData);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'number'\n || item.typeof === 'number') {\n return parseFloat(value);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'boolean'\n || item.typeof === 'boolean') {\n return ((value === 'true') || ('' + value === 'true'));\n }\n }\n return value;\n };\n /**\n * Sets RTL to dropdownbase wrapper\n *\n * @returns {void}\n */\n DropDownBase.prototype.setEnableRtl = function () {\n if (!isNullOrUndefined(this.enableRtlElements)) {\n if (this.list) {\n this.enableRtlElements.push(this.list);\n }\n if (this.enableRtl) {\n addClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n else {\n removeClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n }\n };\n /**\n * Initialize the Component.\n *\n * @returns {void}\n */\n DropDownBase.prototype.initialize = function (e) {\n this.bindEvent = true;\n this.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 && !_this.virtualGroupDataSource) {\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 (!_this.virtualGroupDataSource && _this.isVirtualizationEnabled) {\n _this.isRemoteDataUpdated = true;\n if ((_this.getModuleName() === 'combobox' && !_this.initialRemoteRender && _this.isAllowFiltering && _this.isVirtualizationEnabled && e.result)) {\n e.result = e.result.result;\n }\n if (e.result.length > 0) {\n var dataSource_2 = e.result;\n if (_this.isVirtualizationEnabled && _this.fields.groupBy) {\n var data = new DataManager(dataSource_2).executeLocal(new Query().group(_this.fields.groupBy));\n _this.virtualGroupDataSource = data.records;\n }\n else {\n _this.virtualGroupDataSource = dataSource_2;\n _this.hideSpinner();\n _this.isRequested = false;\n _this.isRequesting = false;\n _this.setListData(dataSource_2, fields, query, event);\n return;\n }\n }\n _this.hideSpinner();\n _this.isRequested = false;\n _this.isRequesting = false;\n _this.updatePopupState();\n return;\n }\n if (!e.cancel) {\n _this.isRequesting = false;\n var listItems = e.result;\n if (_this.isIncrementalRequest) {\n ulElement = _this.renderItems(listItems, fields);\n return;\n }\n if (listItems.length === 0) {\n _this.isDataFetched = true;\n }\n _this.dataCount = e.count;\n _this.totalItemCount = e.count;\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 _this.isRequesting = false;\n var isReOrder = true;\n var listItems = void 0;\n if (_this.isVirtualizationEnabled && !_this.virtualGroupDataSource && _this.fields.groupBy) {\n var data = new DataManager(_this.dataSource).executeLocal(new Query().group(_this.fields.groupBy));\n _this.virtualGroupDataSource = data.records;\n }\n var dataManager = _this.isVirtualizationEnabled && _this.virtualGroupDataSource && !_this.isCustomDataUpdated ? new DataManager(_this.virtualGroupDataSource) : new DataManager(eventArgs.data);\n listItems = (_this.getQuery(eventArgs.query)).executeLocal(dataManager);\n if (!_this.virtualSelectAll) {\n var newQuery = _this.getQuery(eventArgs.query);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (_this.isVirtualizationEnabled && (listItems.count != 0 && listItems.count < (_this.itemCount * 2))) {\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onTake') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newQuery.queries[queryElements].e.nos = listItems.count;\n listItems = (newQuery).executeLocal(dataManager);\n }\n if (_this.getModuleName() === 'multiselect' && (newQuery.queries[queryElements].e.condition == 'or' || newQuery.queries[queryElements].e.operator == 'equal')) {\n isReOrder = false;\n }\n }\n if (isReOrder) {\n listItems = (newQuery).executeLocal(dataManager);\n _this.isVirtualTrackHeight = true;\n }\n }\n }\n else {\n _this.isVirtualTrackHeight = false;\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (_this.getModuleName() === 'multiselect' && ((newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.condition == 'or') || (newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.operator == 'equal'))) {\n isReOrder = false;\n }\n }\n }\n }\n }\n if (isReOrder) {\n // eslint-disable @typescript-eslint/no-explicit-any\n _this.dataCount = _this.totalItemCount = _this.virtualSelectAll ? listItems.length : listItems.count;\n }\n listItems = _this.isVirtualizationEnabled && !_this.virtualSelectAll ? listItems.result : listItems;\n // eslint-enable @typescript-eslint/no-explicit-any\n var localDataArgs = { cancel: false, result: listItems };\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', localDataArgs, function (localDataArgs) {\n if (_this.isIncrementalRequest) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n return;\n }\n if (!localDataArgs.cancel) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n _this.onActionComplete(ulElement, localDataArgs.result, event);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.bindChildItems(localDataArgs.result, ulElement, fields);\n 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.updatePopupState = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.updateRemoteData = function () {\n this.setListData(this.dataSource, this.fields, this.query);\n };\n DropDownBase.prototype.bindChildItems = function (listItems, ulElement, fields, e) {\n var _this = this;\n if (listItems.length >= 100 && this.getModuleName() === 'autocomplete') {\n setTimeout(function () {\n var childNode = _this.remainingItems(_this.sortedData, fields);\n append(childNode, ulElement);\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.updateListValues();\n _this.raiseDataBound(listItems, e);\n }, 0);\n }\n else {\n this.raiseDataBound(listItems, e);\n }\n };\n DropDownBase.prototype.isObjectInArray = function (objectToFind, array) {\n return array.some(function (item) {\n return Object.keys(objectToFind).every(function (key) {\n return item.hasOwnProperty(key) && item[key] === objectToFind[key];\n });\n });\n };\n DropDownBase.prototype.updateListValues = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.findListElement = function (list, findNode, attribute, value) {\n var liElement = null;\n if (list) {\n var listArr = [].slice.call(list.querySelectorAll(findNode));\n for (var index = 0; index < listArr.length; index++) {\n if (listArr[index].getAttribute(attribute) === (value + '')) {\n liElement = listArr[index];\n break;\n }\n }\n }\n return liElement;\n };\n DropDownBase.prototype.raiseDataBound = function (listItems, e) {\n this.hideSpinner();\n var dataBoundEventArgs = {\n items: listItems,\n e: e\n };\n this.trigger('dataBound', dataBoundEventArgs);\n };\n DropDownBase.prototype.remainingItems = function (dataSource, fields) {\n var spliceData = new DataManager(dataSource).executeLocal(new Query().skip(100));\n if (this.itemTemplate) {\n var listElements = this.templateListItem(spliceData, fields);\n return [].slice.call(listElements.childNodes);\n }\n var type = this.typeOfData(spliceData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return ListBase.createListItemFromArray(this.createElement, spliceData, true, this.listOption(spliceData, fields), this);\n }\n return ListBase.createListItemFromJson(this.createElement, spliceData, this.listOption(spliceData, fields), 1, true, this);\n };\n DropDownBase.prototype.emptyDataRequest = function (fields) {\n var listItems = [];\n this.onActionComplete(this.renderItems(listItems, fields), listItems);\n this.isRequested = false;\n this.isRequesting = false;\n this.hideSpinner();\n };\n DropDownBase.prototype.showSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.hideSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.onActionFailure = function (e) {\n this.liCollections = [];\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n if (!isNullOrUndefined(this.list)) {\n addClass([this.list], dropDownBaseClasses.noData);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.onActionComplete = function (ulElement, list, e) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n this.listData = list;\n if (this.isVirtualizationEnabled && !this.isCustomDataUpdated) {\n this.notify(\"setGeneratedData\", {\n module: \"VirtualScroll\",\n });\n }\n if (this.getModuleName() !== 'listbox') {\n ulElement.setAttribute('tabindex', '0');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['itemTemplate', 'groupTemplate', 'actionFailureTemplate', 'noRecordsTemplate']);\n }\n if (!this.isVirtualizationEnabled) {\n this.fixedHeaderElement = isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement : null;\n }\n if (this.getModuleName() === 'multiselect' && this.properties.allowCustomValue && this.fields.groupBy) {\n for (var i = 0; i < ulElement.childElementCount; i++) {\n if (ulElement.children[i].classList.contains('e-list-group-item')) {\n if (isNullOrUndefined(ulElement.children[i].innerHTML) || ulElement.children[i].innerHTML == \"\") {\n addClass([ulElement.children[i]], HIDE_GROUPLIST);\n }\n }\n }\n }\n if (!isNullOrUndefined(this.list)) {\n if (!this.isVirtualizationEnabled) {\n this.list.innerHTML = '';\n this.list.appendChild(ulElement);\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.postRender(this.list, list, this.bindEvent);\n }\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.postRender = function (listElement, list, bindEvent) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var focusItem = listElement.querySelector('.' + dropDownBaseClasses.li);\n var selectedItem = listElement.querySelector('.' + dropDownBaseClasses.selected);\n if (focusItem && !selectedItem) {\n focusItem.classList.add(dropDownBaseClasses.focus);\n }\n if (list.length <= 0) {\n this.l10nUpdate();\n addClass([listElement], dropDownBaseClasses.noData);\n }\n else {\n listElement.classList.remove(dropDownBaseClasses.noData);\n }\n };\n /**\n * Get the query to do the data operation before list item generation.\n *\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {Query} Returns the query to do the data query operation.\n */\n DropDownBase.prototype.getQuery = function (query) {\n return query ? query : this.query ? this.query : new Query();\n };\n DropDownBase.prototype.updateVirtualizationProperties = function (itemCount, filtering, isCheckbox) {\n this.isVirtualizationEnabled = true;\n this.virtualizedItemsCount = itemCount;\n this.isAllowFiltering = filtering;\n this.isCheckBoxSelection = isCheckbox;\n };\n /**\n * To render the template content for group header element.\n *\n * @param {HTMLElement} listEle - Specifies the group list elements.\n * @returns {void}\n */\n DropDownBase.prototype.renderGroupTemplate = function (listEle) {\n if (this.fields.groupBy !== null && this.dataSource || this.element.querySelector('.' + dropDownBaseClasses.group)) {\n var dataSource = this.dataSource;\n var option = { groupTemplateID: this.groupTemplateId, isStringTemplate: this.isStringTemplate };\n var headerItems = listEle.querySelectorAll('.' + dropDownBaseClasses.group);\n var groupcheck = this.templateCompiler(this.groupTemplate);\n if (typeof this.groupTemplate !== 'function' && groupcheck) {\n var groupValue = select(this.groupTemplate, document).innerHTML.trim();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(groupValue, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(this.groupTemplate, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n this.renderReactTemplates();\n }\n };\n /**\n * To create the ul li list items\n *\n * @param {object []} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the ul li list items.\n */\n DropDownBase.prototype.createListItems = function (dataSource, fields) {\n if (dataSource) {\n if (fields.groupBy || this.element.querySelector('optgroup')) {\n if (fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n addClass([this.list], dropDownBaseClasses.grouping);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n var options = this.listOption(dataSource, fields);\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n this.sortedData = dataSource;\n return ListBase.createList(this.createElement, (this.getModuleName() === 'autocomplete') ? spliceData : dataSource, options, true, this);\n }\n return null;\n };\n DropDownBase.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldValues = !isNullOrUndefined(fields.properties) ?\n fields.properties : fields;\n var options = (fields.text !== null || fields.value !== null) ? {\n fields: fieldValues,\n showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n return extend({}, options, fields, true);\n };\n DropDownBase.prototype.setFloatingHeader = function (e) {\n if (!isNullOrUndefined(this.list) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (isNullOrUndefined(this.fixedHeaderElement)) {\n this.fixedHeaderElement = this.createElement('div', { className: dropDownBaseClasses.fixedHead });\n if (!isNullOrUndefined(this.list) && !this.list.querySelector('li').classList.contains(dropDownBaseClasses.group)) {\n this.fixedHeaderElement.style.display = 'none';\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && !isNullOrUndefined(this.list)) {\n prepend([this.fixedHeaderElement], this.list);\n }\n this.setFixedHeader();\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && this.fixedHeaderElement.style.zIndex === '0') {\n this.setFixedHeader();\n }\n this.scrollStop(e);\n }\n };\n DropDownBase.prototype.scrollStop = function (e, isDownkey) {\n var target = !isNullOrUndefined(e) ? e.target : this.list;\n var liHeight = parseInt(getComputedStyle(this.getValidLi(), null).getPropertyValue('height'), 10);\n var topIndex = Math.round(target.scrollTop / liHeight);\n var liCollections = this.list.querySelectorAll('li' + ':not(.e-hide-listitem)');\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var count = 0;\n var isCount = false;\n for (var i = topIndex; i > -1; i--) {\n var index = this.isVirtualizationEnabled ? i + virtualListCount : i;\n if (this.isVirtualizationEnabled) {\n var groupListLength = this.list.querySelectorAll('.e-list-group-item').length;\n var loadedGroupList = 0;\n if (isCount) {\n count++;\n }\n if (this.fixedHeaderElement && this.updateGroupHeader(index, liCollections, target)) {\n loadedGroupList++;\n if (count >= this.getPageCount()) {\n break;\n }\n if (groupListLength <= loadedGroupList) {\n break;\n }\n }\n if (isDownkey) {\n if ((!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.selected) && this.getModuleName() !== 'autocomplete') || (!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.focus) && this.getModuleName() === 'autocomplete')) {\n count++;\n isCount = true;\n }\n }\n }\n else {\n if (this.updateGroupHeader(index, liCollections, target)) {\n break;\n }\n }\n }\n };\n DropDownBase.prototype.getPageCount = function (returnExactCount) {\n var liHeight = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n var pageCount = Math.round(this.list.getBoundingClientRect().height / parseInt(liHeight, 10));\n return returnExactCount ? pageCount : Math.round(pageCount);\n };\n DropDownBase.prototype.updateGroupHeader = function (index, liCollections, target) {\n if (!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.group)) {\n this.updateGroupFixedHeader(liCollections[index], target);\n return true;\n }\n else {\n this.fixedHeaderElement.style.display = 'none';\n this.fixedHeaderElement.style.top = 'none';\n return false;\n }\n };\n DropDownBase.prototype.updateGroupFixedHeader = function (element, target) {\n this.fixedHeaderElement.innerHTML = element.innerHTML;\n this.fixedHeaderElement.style.position = 'fixed';\n this.fixedHeaderElement.style.top = this.list.parentElement.offsetTop + this.list.offsetTop + 'px';\n this.fixedHeaderElement.style.display = 'block';\n };\n DropDownBase.prototype.getValidLi = function () {\n return this.liCollections[0];\n };\n /**\n * To render the list items\n *\n * @param {object[]} listData - Specifies the list of array of data.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the list items.\n */\n DropDownBase.prototype.renderItems = function (listData, fields, isCheckBoxUpdate) {\n var ulElement;\n if (this.itemTemplate && listData) {\n var dataSource = listData;\n if (dataSource && fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n this.sortedData = dataSource;\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n ulElement = this.templateListItem((this.getModuleName() === 'autocomplete') ? spliceData : dataSource, fields);\n if (this.isVirtualizationEnabled) {\n var oldUlElement = this.list.querySelector('.e-list-parent');\n var virtualUlElement = this.list.querySelector('.e-virtual-ddl-content');\n if ((listData.length >= this.virtualizedItemsCount && oldUlElement && virtualUlElement) || (oldUlElement && virtualUlElement && this.isAllowFiltering) || (oldUlElement && virtualUlElement && this.getModuleName() === 'autocomplete')) {\n virtualUlElement.replaceChild(ulElement, oldUlElement);\n var reOrderList = this.list.querySelectorAll('.e-reorder');\n if (this.list.querySelector('.e-virtual-ddl-content') && reOrderList && reOrderList.length > 0 && !isCheckBoxUpdate) {\n this.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList[0]);\n }\n this.updateListElements(listData);\n }\n else if ((!virtualUlElement)) {\n this.list.innerHTML = '';\n this.createVirtualContent();\n this.list.querySelector('.e-virtual-ddl-content').appendChild(ulElement);\n this.updateListElements(listData);\n }\n }\n }\n else {\n if (this.getModuleName() === 'multiselect' && this.virtualSelectAll) {\n this.virtualSelectAllData = listData;\n listData = listData.slice(this.virtualItemStartIndex, this.virtualItemEndIndex);\n }\n ulElement = this.createListItems(listData, fields);\n if (this.isIncrementalRequest) {\n this.incrementalLiCollections = ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n this.incrementalUlElement = ulElement;\n this.incrementalListData = listData;\n return ulElement;\n }\n if (this.isVirtualizationEnabled) {\n var oldUlElement = this.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n var virtualUlElement = this.list.querySelector('.e-virtual-ddl-content');\n var isRemovedUlelement = false;\n if (!oldUlElement && this.list.querySelector('.e-list-parent' + '.e-reorder')) {\n oldUlElement = this.list.querySelector('.e-list-parent' + '.e-reorder');\n }\n if ((listData.length >= this.virtualizedItemsCount && oldUlElement && virtualUlElement) || (oldUlElement && virtualUlElement && this.isAllowFiltering) || (oldUlElement && virtualUlElement && (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect')) || isRemovedUlelement) {\n if (!this.appendUncheckList) {\n virtualUlElement.replaceChild(ulElement, oldUlElement);\n }\n else {\n virtualUlElement.appendChild(ulElement);\n }\n this.updateListElements(listData);\n }\n else if ((!virtualUlElement)) {\n this.list.innerHTML = '';\n this.createVirtualContent();\n this.list.querySelector('.e-virtual-ddl-content').appendChild(ulElement);\n this.updateListElements(listData);\n }\n }\n }\n return ulElement;\n };\n DropDownBase.prototype.createVirtualContent = function () {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n }));\n }\n };\n DropDownBase.prototype.updateListElements = function (listData) {\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.listData = listData;\n this.postRender(this.list, listData, this.bindEvent);\n };\n DropDownBase.prototype.templateListItem = function (dataSource, fields) {\n var option = this.listOption(dataSource, fields);\n option.templateID = this.itemTemplateId;\n option.isStringTemplate = this.isStringTemplate;\n var itemcheck = this.templateCompiler(this.itemTemplate);\n if (typeof this.itemTemplate !== 'function' && itemcheck) {\n var itemValue = select(this.itemTemplate, document).innerHTML.trim();\n return ListBase.renderContentTemplate(this.createElement, itemValue, dataSource, fields.properties, option, this);\n }\n else {\n return ListBase.renderContentTemplate(this.createElement, this.itemTemplate, dataSource, fields.properties, option, this);\n }\n };\n DropDownBase.prototype.typeOfData = function (items) {\n var item = { typeof: null, item: null };\n for (var i = 0; (!isNullOrUndefined(items) && i < items.length); i++) {\n if (!isNullOrUndefined(items[i])) {\n var listDataType = typeof (items[i]) === 'string' ||\n typeof (items[i]) === 'number' || typeof (items[i]) === 'boolean';\n var isNullData = listDataType ? isNullOrUndefined(items[i]) :\n isNullOrUndefined(getValue((this.fields.value ? this.fields.value : 'value'), items[i]));\n if (!isNullData) {\n return item = { typeof: typeof items[i], item: items[i] };\n }\n }\n }\n return item;\n };\n DropDownBase.prototype.setFixedHeader = function () {\n if (!isNullOrUndefined(this.list)) {\n this.list.parentElement.style.display = 'block';\n }\n var borderWidth = 0;\n if (this.list && this.list.parentElement) {\n borderWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-width'), 10);\n /*Shorthand property not working in Firefox for getComputedStyle method.\n Refer bug report https://bugzilla.mozilla.org/show_bug.cgi?id=137688\n Refer alternate solution https://stackoverflow.com/a/41696234/9133493*/\n if (isNaN(borderWidth)) {\n var borderTopWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-top-width'), 10);\n var borderBottomWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-bottom-width'), 10);\n var borderLeftWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-left-width'), 10);\n var borderRightWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-right-width'), 10);\n borderWidth = (borderTopWidth + borderBottomWidth + borderLeftWidth + borderRightWidth);\n }\n }\n if (!isNullOrUndefined(this.liCollections)) {\n var liWidth = this.getValidLi().offsetWidth - borderWidth;\n this.fixedHeaderElement.style.width = liWidth.toString() + 'px';\n }\n setStyleAttribute(this.fixedHeaderElement, { zIndex: 10 });\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group + ':not(.e-hide-listitem)');\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n };\n DropDownBase.prototype.getSortedDataSource = function (dataSource) {\n if (dataSource && this.sortOrder !== 'None') {\n var textField = this.fields.text ? this.fields.text : 'text';\n if (this.typeOfData(dataSource).typeof === 'string' || this.typeOfData(dataSource).typeof === 'number'\n || this.typeOfData(dataSource).typeof === 'boolean') {\n textField = '';\n }\n dataSource = ListBase.getDataSource(dataSource, ListBase.addSorting(this.sortOrder, textField));\n }\n return dataSource;\n };\n /**\n * Return the index of item which matched with given value in data source\n *\n * @param {string | number | boolean} value - Specifies given value.\n * @returns {number} Returns the index of the item.\n */\n DropDownBase.prototype.getIndexByValue = function (value) {\n var index;\n var listItems = this.getItems();\n for (var i = 0; i < listItems.length; i++) {\n if (!isNullOrUndefined(value) && listItems[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n return index;\n };\n /**\n * Return the index of item which matched with given value in data source\n *\n * @param {string | number | boolean} value - Specifies given value.\n * @returns {number} Returns the index of the item.\n */\n DropDownBase.prototype.getIndexByValueFilter = function (value) {\n var index;\n var listItems = this.renderItems(this.selectData, this.fields);\n if (listItems && listItems.children) {\n for (var i = 0; i < listItems.children.length; i++) {\n if (!isNullOrUndefined(value) && listItems.children[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n }\n return index;\n };\n /**\n * To dispatch the event manually\n *\n * @param {HTMLElement} element - Specifies the element to dispatch the event.\n * @param {string} type - Specifies the name of the event.\n * @returns {void}\n */\n DropDownBase.prototype.dispatchEvent = function (element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n if (element) {\n element.dispatchEvent(evt);\n }\n };\n /**\n * To set the current fields\n *\n * @returns {void}\n */\n DropDownBase.prototype.setFields = function () {\n if (this.fields.value && !this.fields.text) {\n this.updateFields(this.fields.value, this.fields.value);\n }\n else if (!this.fields.value && this.fields.text) {\n this.updateFields(this.fields.text, this.fields.text);\n }\n else if (!this.fields.value && !this.fields.text) {\n this.updateFields('text', 'text');\n }\n };\n /**\n * reset the items list.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\n */\n DropDownBase.prototype.resetList = function (dataSource, fields, query, e) {\n if (this.list) {\n if ((this.element.tagName === 'SELECT' && this.element.options.length > 0)\n || (this.element.tagName === 'UL' && this.element.childNodes.length > 0)) {\n var data = dataSource instanceof Array ? (dataSource.length > 0)\n : !isNullOrUndefined(dataSource);\n if (!data && this.selectData && this.selectData.length > 0) {\n dataSource = this.selectData;\n }\n }\n dataSource = this.getModuleName() === 'combobox' && this.selectData && dataSource instanceof Array && dataSource.length < this.selectData.length && this.addedNewItem ? this.selectData : dataSource;\n this.addedNewItem = false;\n this.setListData(dataSource, fields, query, e);\n }\n };\n DropDownBase.prototype.updateSelectElementData = function (isFiltering) {\n if ((isFiltering || this.isVirtualizationEnabled) && isNullOrUndefined(this.selectData) && this.listData && this.listData.length > 0) {\n this.selectData = this.listData;\n }\n };\n DropDownBase.prototype.updateSelection = function () {\n // This is for after added the item, need to update the selected index values.\n };\n DropDownBase.prototype.renderList = function () {\n // This is for render the list items.\n this.render();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateDataSource = function (props, oldProps) {\n this.resetList(this.dataSource);\n this.totalItemCount = this.dataSource instanceof DataManager ? this.dataSource.dataSource.json.length : 0;\n };\n DropDownBase.prototype.setUpdateInitial = function (props, newProp, oldProp) {\n this.isDataFetched = false;\n var updateData = {};\n for (var j = 0; props.length > j; j++) {\n if (newProp[props[j]] && props[j] === 'fields') {\n this.setFields();\n updateData[props[j]] = newProp[props[j]];\n }\n else if (newProp[props[j]]) {\n updateData[props[j]] = newProp[props[j]];\n }\n }\n if (Object.keys(updateData).length > 0) {\n if (Object.keys(updateData).indexOf('dataSource') === -1) {\n updateData.dataSource = this.dataSource;\n }\n this.updateDataSource(updateData, oldProp);\n }\n };\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n *\n * @param {DropDownBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownBaseModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'dropdownbase') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n this.setUpdateInitial(['sortOrder', 'itemTemplate'], newProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'sortOrder':\n case 'dataSource':\n case 'itemTemplate':\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'groupTemplate':\n this.renderGroupTemplate(this.list);\n if (this.ulElement && this.fixedHeaderElement) {\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group);\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n }\n break;\n case 'locale':\n if (this.list && (!isNullOrUndefined(this.liCollections) && this.liCollections.length === 0)) {\n this.l10nUpdate();\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n }\n }\n };\n /**\n * Build and render the component\n *\n * @param {boolean} isEmptyData - Specifies the component to initialize with list data or not.\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.render = function (e, isEmptyData) {\n if (this.getModuleName() === 'listbox') {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content, attrs: { 'tabindex': '0' } });\n }\n else {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content });\n }\n this.list.classList.add(dropDownBaseClasses.root);\n this.setFields();\n var rippleModel = { duration: 300, selector: '.' + dropDownBaseClasses.li };\n this.rippleFun = rippleEffect(this.list, rippleModel);\n var group = this.element.querySelector('select>optgroup');\n if ((this.fields.groupBy || !isNullOrUndefined(group)) && !this.isGroupChecking) {\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (this.getModuleName() === 'dropdownbase') {\n if (this.element.getAttribute('tabindex')) {\n this.list.setAttribute('tabindex', this.element.getAttribute('tabindex'));\n }\n removeClass([this.element], dropDownBaseClasses.root);\n this.element.style.display = 'none';\n var wrapperElement = this.createElement('div');\n this.element.parentElement.insertBefore(wrapperElement, this.element);\n wrapperElement.appendChild(this.element);\n wrapperElement.appendChild(this.list);\n }\n this.setEnableRtl();\n if (!isEmptyData) {\n this.initialize(e);\n }\n };\n DropDownBase.prototype.removeScrollEvent = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownBase.prototype.getModuleName = function () {\n return 'dropdownbase';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownBase.prototype.getItems = function () {\n return this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n\n */\n DropDownBase.prototype.addItem = function (items, itemIndex) {\n if (!this.list || (this.list.textContent === this.noRecordsTemplate && this.getModuleName() !== 'listbox')) {\n this.renderList();\n }\n if (this.sortOrder !== 'None' && isNullOrUndefined(itemIndex)) {\n var newList = [].slice.call(this.listData);\n newList.push(items);\n newList = this.getSortedDataSource(newList);\n if (this.fields.groupBy) {\n newList = ListBase.groupDataSource(newList, this.fields.properties, this.sortOrder);\n itemIndex = newList.indexOf(items);\n }\n else {\n itemIndex = newList.indexOf(items);\n }\n }\n var itemsCount = this.getItems().length;\n var 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[];\n// don't use space in classnames\nexport var dropDownListClasses = {\n root: 'e-dropdownlist',\n hover: dropDownBaseClasses.hover,\n selected: dropDownBaseClasses.selected,\n rtl: dropDownBaseClasses.rtl,\n li: dropDownBaseClasses.li,\n disable: dropDownBaseClasses.disabled,\n base: dropDownBaseClasses.root,\n focus: dropDownBaseClasses.focus,\n content: dropDownBaseClasses.content,\n input: 'e-input-group',\n inputFocus: 'e-input-focus',\n icon: 'e-input-group-icon e-ddl-icon',\n iconAnimation: 'e-icon-anim',\n value: 'e-input-value',\n device: 'e-ddl-device',\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n mobileFilter: 'e-ddl-device-filter',\n footer: 'e-ddl-footer',\n header: 'e-ddl-header',\n clearIcon: 'e-clear-icon',\n clearIconHide: 'e-clear-icon-hide',\n popupFullScreen: 'e-popup-full-page',\n disableIcon: 'e-ddl-disable-icon',\n hiddenElement: 'e-ddl-hidden',\n virtualList: 'e-list-item e-virtual-list',\n};\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The DropDownList component contains a list of predefined values from which you can\n * choose a single value.\n * ```html\n * \n * ```\n * ```typescript\n * let dropDownListObj:DropDownList = new DropDownList();\n * dropDownListObj.appendTo(\"#list\");\n * ```\n */\nvar DropDownList = /** @class */ (function (_super) {\n __extends(DropDownList, _super);\n /**\n * * Constructor for creating the DropDownList component.\n *\n * @param {DropDownListModel} options - Specifies the DropDownList model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownList(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isListSearched = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isTouched = false;\n _this.IsScrollerAtEnd = function () {\n return this.list && this.list.scrollTop + this.list.clientHeight >= this.list.scrollHeight;\n };\n return _this;\n }\n /**\n * Initialize the event handler.\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.preRender = function () {\n this.valueTempElement = null;\n this.element.style.opacity = '0';\n this.initializeData();\n _super.prototype.preRender.call(this);\n this.activeIndex = this.index;\n this.queryString = '';\n };\n DropDownList.prototype.initializeData = function () {\n this.isPopupOpen = false;\n this.isDocumentClick = false;\n this.isInteracted = false;\n this.isFilterFocus = false;\n this.beforePopupOpen = false;\n this.initial = true;\n this.initialRemoteRender = false;\n this.isNotSearchList = false;\n this.isTyped = false;\n this.isSelected = false;\n this.preventFocus = false;\n this.preventAutoFill = false;\n this.isValidKey = false;\n this.typedString = '';\n this.isEscapeKey = false;\n this.isPreventBlur = false;\n this.isTabKey = false;\n this.actionCompleteData = { isUpdated: false };\n this.actionData = { isUpdated: false };\n this.prevSelectPoints = {};\n this.isSelectCustom = false;\n this.isDropDownClick = false;\n this.preventAltUp = false;\n this.isCustomFilter = false;\n this.isSecondClick = false;\n this.previousValue = null;\n this.keyConfigure = {\n tab: 'tab',\n enter: '13',\n escape: '27',\n end: '35',\n home: '36',\n down: '40',\n up: '38',\n pageUp: '33',\n pageDown: '34',\n open: 'alt+40',\n close: 'shift+tab',\n hide: 'alt+38',\n space: '32'\n };\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\n };\n DropDownList.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n DropDownList.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'VirtualScroll' });\n }\n return modules;\n };\n DropDownList.prototype.renderList = function (e, isEmptyData) {\n _super.prototype.render.call(this, e, isEmptyData);\n if (!(this.dataSource instanceof DataManager)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.enableVirtualization && this.isFiltering() && this.getModuleName() === 'combobox') {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\n this.unWireListEvents();\n this.wireListEvents();\n };\n DropDownList.prototype.floatLabelChange = function () {\n if (this.getModuleName() === 'dropdownlist' && this.floatLabelType === 'Auto') {\n var floatElement = this.inputWrapper.container.querySelector('.e-float-text');\n if (this.inputElement.value !== '' || this.isInteracted) {\n classList(floatElement, ['e-label-top'], ['e-label-bottom']);\n }\n else {\n classList(floatElement, ['e-label-bottom'], ['e-label-top']);\n }\n }\n };\n DropDownList.prototype.resetHandler = function (e) {\n e.preventDefault();\n this.clearAll(e);\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n this.virtualListInfo = null;\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n }\n };\n DropDownList.prototype.resetFocusElement = function () {\n this.removeHover();\n this.removeSelection();\n this.removeFocus();\n this.list.scrollTop = 0;\n if (this.getModuleName() !== 'autocomplete' && !isNullOrUndefined(this.ulElement)) {\n var li = this.ulElement.querySelector('.' + dropDownListClasses.li);\n if (this.enableVirtualization) {\n li = this.liCollections[this.skeletonCount];\n }\n if (li) {\n li.classList.add(dropDownListClasses.focus);\n }\n }\n };\n DropDownList.prototype.clearAll = function (e, properties) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (isNullOrUndefined(properties) || (!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.isActive = true;\n this.resetSelection(properties);\n }\n var dataItem = this.getItemData();\n if ((!this.allowObjectBinding && (this.previousValue === dataItem.value)) || (this.allowObjectBinding && this.previousValue && this.isObjectInArray(this.previousValue, [this.allowCustom ? this.value ? this.value : dataItem : dataItem.value ? this.getDataByValue(dataItem.value) : dataItem]))) {\n return;\n }\n this.onChangeEvent(e);\n this.checkAndResetCache();\n if (this.enableVirtualization) {\n this.updateInitialData();\n }\n };\n DropDownList.prototype.resetSelection = function (properties) {\n if (this.list) {\n if ((!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.selectedLI = null;\n this.actionCompleteData.isUpdated = false;\n this.actionCompleteData.ulElement = null;\n this.actionCompleteData.list = null;\n this.resetList(properties.dataSource);\n }\n else {\n if (this.allowFiltering && this.getModuleName() !== 'autocomplete'\n && !isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list) &&\n this.actionCompleteData.list.length > 0) {\n this.onActionComplete(this.actionCompleteData.ulElement.cloneNode(true), this.actionCompleteData.list);\n }\n this.resetFocusElement();\n }\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.inputElement)) {\n this.inputElement.value = '';\n }\n this.value = null;\n this.itemData = null;\n this.text = null;\n this.index = null;\n this.activeIndex = null;\n this.item = null;\n this.queryString = '';\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n this.setSelection(null, null);\n this.isSelectCustom = false;\n this.updateIconState();\n this.cloneElements();\n };\n DropDownList.prototype.setHTMLAttributes = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n var updatedClassValue = (this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.inputWrapper.container], updatedClassValue.split(' '));\n }\n }\n else if (htmlAttr === 'disabled' && this.htmlAttributes[\"\" + htmlAttr] === 'disabled') {\n this.enabled = false;\n this.setEnable();\n }\n else if (htmlAttr === 'readonly' && !isNullOrUndefined(this.htmlAttributes[\"\" + htmlAttr])) {\n this.readonly = true;\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.container.setAttribute('style', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'aria-label') {\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') && !this.readonly) {\n this.inputElement.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (this.getModuleName() === 'dropdownlist') {\n this.inputWrapper.container.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder',\n 'role', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n defaultAttr.push('tabindex');\n }\n if (validateAttr.indexOf(htmlAttr) > -1 || htmlAttr.indexOf('data') === 0) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(this.htmlAttributes[\"\" + htmlAttr], this.inputElement);\n }\n else {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n this.inputWrapper.container.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n }\n }\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputWrapper.container.removeAttribute('tabindex');\n }\n };\n DropDownList.prototype.getAriaAttributes = function () {\n return {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'aria-expanded': 'false',\n 'aria-live': 'polite',\n 'aria-labelledby': this.hiddenElement.id\n };\n };\n DropDownList.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputElement.parentElement]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n DropDownList.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hidePopup();\n addClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.targetElement().tabIndex = -1;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownList.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n DropDownList.prototype.getLocaleName = function () {\n return 'drop-down-list';\n };\n DropDownList.prototype.preventTabIndex = function (element) {\n if (this.getModuleName() === 'dropdownlist') {\n element.tabIndex = -1;\n }\n };\n DropDownList.prototype.targetElement = function () {\n return !isNullOrUndefined(this.inputWrapper) ? this.inputWrapper.container : null;\n };\n DropDownList.prototype.getNgDirective = function () {\n return 'EJS-DROPDOWNLIST';\n };\n DropDownList.prototype.getElementByText = function (text) {\n return this.getElementByValue(this.getValueByText(text));\n };\n DropDownList.prototype.getElementByValue = function (value) {\n var item;\n var listItems = this.getItems();\n for (var _i = 0, listItems_1 = listItems; _i < listItems_1.length; _i++) {\n var liItem = listItems_1[_i];\n if (this.getFormattedValue(liItem.getAttribute('data-value')) === value) {\n item = liItem;\n break;\n }\n }\n return item;\n };\n DropDownList.prototype.initValue = function () {\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initialRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n DropDownList.prototype.updateValues = function () {\n this.selectedValueInfo = this.viewPortInfo;\n if (!isNullOrUndefined(this.value)) {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue(((this.fields.value) ? this.fields.value : ''), this.value) : this.value;\n this.setSelection(this.getElementByValue(value), null);\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var element = this.getElementByText(this.text);\n if (isNullOrUndefined(element)) {\n this.setProperties({ text: null });\n return;\n }\n else {\n this.setSelection(element, null);\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DropDownList.prototype.onBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n var target = e.relatedTarget;\n var currentTarget = e.target;\n var isPreventBlur = this.isPreventBlur;\n this.isPreventBlur = false;\n //IE 11 - issue\n if (isPreventBlur && !this.isDocumentClick && this.isPopupOpen && (!isNullOrUndefined(currentTarget) ||\n !this.isFilterLayout() && isNullOrUndefined(target))) {\n if (this.getModuleName() === 'dropdownlist' && this.allowFiltering && this.isPopupOpen) {\n this.filterInput.focus();\n }\n else {\n this.targetElement().focus();\n }\n return;\n }\n if (this.isDocumentClick || (!isNullOrUndefined(this.popupObj)\n && document.body.contains(this.popupObj.element) &&\n this.popupObj.element.classList.contains(dropDownListClasses.mobileFilter))) {\n if (!this.beforePopupOpen) {\n this.isDocumentClick = false;\n }\n return;\n }\n if (((this.getModuleName() === 'dropdownlist' && !this.isFilterFocus && target !== this.inputElement)\n && (document.activeElement !== target || (document.activeElement === target &&\n currentTarget.classList.contains(dropDownListClasses.inputFocus)))) ||\n (isNullOrUndefined(target) && this.getModuleName() === 'dropdownlist' && this.allowFiltering &&\n currentTarget !== this.inputWrapper.container) || this.getModuleName() !== 'dropdownlist' &&\n !this.inputWrapper.container.contains(target) || this.isTabKey) {\n this.isDocumentClick = this.isPopupOpen ? true : false;\n this.focusOutAction(e);\n this.isTabKey = false;\n }\n if (this.isRequested && !this.isPopupOpen && !this.isPreventBlur) {\n this.isActive = false;\n this.beforePopupOpen = false;\n }\n };\n DropDownList.prototype.focusOutAction = function (e) {\n this.isInteracted = false;\n this.focusOut(e);\n this.onFocusOut(e);\n };\n DropDownList.prototype.onFocusOut = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.floatLabelChange();\n this.dispatchEvent(this.hiddenElement, 'change');\n if (this.getModuleName() === 'dropdownlist' && this.element.tagName !== 'INPUT') {\n this.dispatchEvent(this.inputElement, 'blur');\n }\n if (this.inputWrapper.clearButton) {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n this.trigger('blur');\n };\n DropDownList.prototype.onFocus = function (e) {\n if (!this.isInteracted) {\n this.isInteracted = true;\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n }\n this.updateIconState();\n };\n DropDownList.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var val = (this.element.tagName === this.getNgDirective()) ? null : this.inputElement.getAttribute('value');\n this.text = val;\n }\n };\n DropDownList.prototype.wireEvent = function () {\n EventHandler.add(this.inputWrapper.container, 'mousedown', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper.container, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper.container, 'keypress', this.onSearch, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n this.bindCommonEvent();\n };\n DropDownList.prototype.bindCommonEvent = function () {\n EventHandler.add(this.targetElement(), 'blur', this.onBlurHandler, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.keyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.mobileKeyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n this.bindClearEvent();\n };\n DropDownList.prototype.windowResize = function () {\n if (this.isPopupOpen) {\n this.popupObj.refreshPosition(this.inputWrapper.container);\n }\n };\n DropDownList.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n };\n DropDownList.prototype.unBindCommonEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper) && this.targetElement()) {\n EventHandler.remove(this.targetElement(), 'blur', this.onBlurHandler);\n }\n var formElement = this.inputElement && closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n if (!Browser.isDevice) {\n this.keyboardModule.destroy();\n }\n if (this.showClearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown', this.resetHandler);\n }\n };\n DropDownList.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n /**\n * Event binding for list\n *\n * @returns {void}\n */\n DropDownList.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(this.list, 'click', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n DropDownList.prototype.onSearch = function (e) {\n if (e.charCode !== 32 && e.charCode !== 13) {\n if (this.list === undefined) {\n this.renderList();\n }\n this.searchKeyEvent = e;\n this.onServerIncrementalSearch(e);\n }\n };\n DropDownList.prototype.onServerIncrementalSearch = function (e) {\n if (!this.isRequested && !isNullOrUndefined(this.list) &&\n !isNullOrUndefined(this.list.querySelector('li')) && this.enabled && !this.readonly) {\n this.incrementalSearch(e);\n }\n };\n DropDownList.prototype.onMouseClick = function (e) {\n var target = e.target;\n this.keyboardEvent = null;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li)) {\n return;\n }\n this.setSelection(li, e);\n if (Browser.isDevice && this.isFilterLayout()) {\n history.back();\n }\n else {\n var delay = 100;\n this.closePopup(delay, e);\n }\n };\n DropDownList.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n DropDownList.prototype.setHover = function (li) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n DropDownList.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n DropDownList.prototype.removeHover = function () {\n if (this.list) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n };\n DropDownList.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n };\n DropDownList.prototype.updateIncrementalItemIndex = function (startIndex, endIndex) {\n this.incrementalStartIndex = startIndex;\n this.incrementalEndIndex = endIndex;\n };\n DropDownList.prototype.incrementalSearch = function (e) {\n if (this.liCollections.length > 0) {\n if (this.enableVirtualization) {\n var updatingincrementalindex = false;\n var queryStringUpdated = false;\n var activeElement = this.ulElement.getElementsByClassName('e-active')[0];\n var currentValue = activeElement ? activeElement.textContent : null;\n if (this.incrementalQueryString == '') {\n this.incrementalQueryString = String.fromCharCode(e.charCode);\n this.incrementalPreQueryString = this.incrementalQueryString;\n }\n else if (String.fromCharCode(e.charCode).toLocaleLowerCase() == this.incrementalPreQueryString.toLocaleLowerCase()) {\n queryStringUpdated = true;\n }\n else {\n this.incrementalQueryString = String.fromCharCode(e.charCode);\n }\n if ((this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount) || this.incrementalEndIndex == 0) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = this.incrementalEndIndex;\n if (this.incrementalEndIndex == 0) {\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n }\n else {\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n }\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n var li = incrementalSearch(e.charCode, this.incrementalLiCollections, this.activeIndex, true, this.element.id, queryStringUpdated, currentValue, true);\n while (isNullOrUndefined(li) && this.incrementalEndIndex < this.totalItemCount) {\n this.updateIncrementalItemIndex(this.incrementalEndIndex, this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100);\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n li = incrementalSearch(e.charCode, this.incrementalLiCollections, 0, true, this.element.id, queryStringUpdated, currentValue, true, true);\n if (!isNullOrUndefined(li)) {\n break;\n }\n if (isNullOrUndefined(li) && this.incrementalEndIndex >= this.totalItemCount) {\n this.updateIncrementalItemIndex(0, 100 > this.totalItemCount ? this.totalItemCount : 100);\n break;\n }\n }\n if (isNullOrUndefined(li) && this.incrementalEndIndex >= this.totalItemCount) {\n this.updateIncrementalItemIndex(0, 100 > this.totalItemCount ? this.totalItemCount : 100);\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n li = incrementalSearch(e.charCode, this.incrementalLiCollections, 0, true, this.element.id, queryStringUpdated, currentValue, true, true);\n }\n var index = li && this.getIndexByValue(li.getAttribute('data-value'));\n if (!index) {\n for (var i = 0; i < this.incrementalLiCollections.length; i++) {\n if (!isNullOrUndefined(li) && !isNullOrUndefined(li.getAttribute('data-value')) && this.incrementalLiCollections[i].getAttribute('data-value') === li.getAttribute('data-value').toString()) {\n index = i;\n index = this.incrementalStartIndex + index;\n break;\n }\n }\n }\n else {\n index = index - this.skeletonCount;\n }\n if (index) {\n if ((!(this.viewPortInfo.startIndex >= index)) || (!(index >= this.viewPortInfo.endIndex))) {\n var startIndex = index - ((this.itemCount / 2) - 2) > 0 ? index - ((this.itemCount / 2) - 2) : 0;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n }\n if (!isNullOrUndefined(li)) {\n var index_1 = this.getIndexByValue(li.getAttribute('data-value')) - this.skeletonCount;\n if (index_1 > this.itemCount / 2) {\n var startIndex = this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) < this.totalItemCount ? this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) : this.totalItemCount;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n li = this.getElementByValue(li.getAttribute('data-value'));\n this.setSelection(li, e);\n this.setScrollPosition();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n if (this.enableVirtualization && !this.fields.groupBy) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n this.incrementalPreQueryString = this.incrementalQueryString;\n }\n else {\n this.updateIncrementalView(0, this.itemCount);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n this.list.scrollTop = 0;\n }\n }\n else {\n var li = incrementalSearch(e.charCode, this.liCollections, this.activeIndex, true, this.element.id);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, e);\n this.setScrollPosition();\n }\n }\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n this.spinnerElement.innerHTML = '';\n this.spinnerElement = null;\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = Browser.isDevice && !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[1] ||\n !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[0] || this.inputWrapper.buttons[0];\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n DropDownList.prototype.keyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.keyboardEvent = e;\n if (this.isPreventKeyAction && this.enableVirtualization) {\n e.preventDefault();\n }\n var preventAction = e.action === 'pageUp' || e.action === 'pageDown';\n var preventHomeEnd = this.getModuleName() !== 'dropdownlist' && (e.action === 'home' || e.action === 'end');\n this.isEscapeKey = e.action === 'escape';\n this.isTabKey = !this.isPopupOpen && e.action === 'tab';\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n if ((this.isEditTextBox() || preventAction || preventHomeEnd) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (isNullOrUndefined(this.list) && !this.isRequested && !isTabAction && e.action !== 'escape') {\n this.searchKeyEvent = e;\n if (!this.enableVirtualization || (this.enableVirtualization && this.getModuleName() !== 'autocomplete' && e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38))) {\n this.renderList(e);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n isNavigation && this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if ((isTabAction && this.getModuleName() !== 'autocomplete') && this.isPopupOpen\n || e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n this.isTyped = (isNavigation || e.action === 'escape') ? false : this.isTyped;\n switch (e.action) {\n case 'down':\n case 'up':\n this.updateUpDownAction(e);\n break;\n case 'pageUp':\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'pageDown':\n this.pageDownSelection(this.activeIndex + this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'home':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e);\n break;\n case 'end':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e);\n break;\n case 'space':\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.beforePopupOpen) {\n this.showPopup();\n e.preventDefault();\n }\n }\n break;\n case 'open':\n this.showPopup(e);\n break;\n case 'hide':\n this.preventAltUp = this.isPopupOpen;\n this.hidePopup(e);\n this.focusDropDown(e);\n break;\n case 'enter':\n this.selectCurrentItem(e);\n break;\n case 'tab':\n this.selectCurrentValueOnTab(e);\n break;\n case 'escape':\n case 'close':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n break;\n }\n }\n };\n DropDownList.prototype.updateUpDownAction = function (e, isVirtualKeyAction) {\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var value_1 = this.getItemData().value;\n if (isNullOrUndefined(value_1)) {\n value_1 = 'null';\n }\n var filterIndex = this.getIndexByValue(value_1);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n }\n var focusEle = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isSelectFocusItem(focusEle) && !isVirtualKeyAction) {\n this.setSelection(focusEle, e);\n if (this.enableVirtualization && !this.fields.groupBy && this.getModuleName() !== 'combobox') {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var virtualIndex = this.activeIndex;\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n index = isVirtualKeyAction ? virtualIndex : index;\n var startIndex = 0;\n if (this.getModuleName() === 'autocomplete') {\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n }\n var nextItem = void 0;\n if (this.getModuleName() !== 'autocomplete' || this.getModuleName() === 'autocomplete' && this.isPopupOpen) {\n if (!this.enableVirtualization) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex]\n : this.liCollections[index];\n }\n else {\n if (!isVirtualKeyAction) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[this.skeletonCount]\n : this.liCollections[index];\n nextItem = !isNullOrUndefined(nextItem) && !nextItem.classList.contains('e-virtual-list') ? nextItem : null;\n }\n else {\n if (this.getModuleName() === 'autocomplete') {\n var value = this.getFormattedValue(this.selectedLI.getAttribute('data-value'));\n nextItem = this.getElementByValue(value);\n }\n else {\n nextItem = this.getElementByValue(this.getItemData().value);\n }\n }\n }\n }\n if (!isNullOrUndefined(nextItem)) {\n this.setSelection(nextItem, e);\n }\n else if (this.enableVirtualization && !this.isPopupOpen && this.getModuleName() !== 'autocomplete' && ((this.viewPortInfo.endIndex !== this.totalItemCount && e.action === 'down') || (this.viewPortInfo.startIndex !== 0 && e.action === 'up'))) {\n if (e.action === 'down') {\n this.viewPortInfo.startIndex = (this.viewPortInfo.startIndex + this.itemCount) < (this.totalItemCount - this.itemCount) ? this.viewPortInfo.startIndex + this.itemCount : this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.viewPortInfo.startIndex + this.itemCount;\n this.updateVirtualItemIndex();\n this.isCustomFilter = this.getModuleName() === 'combobox' ? true : this.isCustomFilter;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isCustomFilter = this.getModuleName() === 'combobox' ? false : this.isCustomFilter;\n var value_2 = this.liCollections[0].getAttribute('data-value') !== \"null\" ? this.getFormattedValue(this.liCollections[0].getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value_2);\n if (selectedData) {\n this.itemData = selectedData;\n }\n }\n else if (e.action === 'up') {\n this.viewPortInfo.startIndex = (this.viewPortInfo.startIndex - this.itemCount) > 0 ? this.viewPortInfo.startIndex - this.itemCount : 0;\n this.viewPortInfo.endIndex = this.viewPortInfo.startIndex + this.itemCount;\n this.updateVirtualItemIndex();\n this.isCustomFilter = this.getModuleName() === 'combobox' ? true : this.isCustomFilter;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isCustomFilter = this.getModuleName() === 'combobox' ? false : this.isCustomFilter;\n var value_3 = this.liCollections[this.liCollections.length - 1].getAttribute('data-value') !== \"null\" ? this.getFormattedValue(this.liCollections[this.liCollections.length - 1].getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value_3);\n if (selectedData) {\n this.itemData = selectedData;\n }\n }\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.handleVirtualKeyboardActions(e, this.pageCount);\n }\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var value_4 = this.getItemData().value;\n var filterIndex = this.getIndexByValueFilter(value_4);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n }\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist' && this.filterInput) {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n e.preventDefault();\n };\n DropDownList.prototype.updateHomeEndAction = function (e, isVirtualKeyAction) {\n if (this.getModuleName() === 'dropdownlist') {\n var findLi = 0;\n if (e.action === 'home') {\n findLi = 0;\n if (this.enableVirtualization && this.isPopupOpen) {\n findLi = this.skeletonCount;\n }\n else if (this.enableVirtualization && !this.isPopupOpen && this.viewPortInfo.startIndex !== 0) {\n this.viewPortInfo.startIndex = 0;\n this.viewPortInfo.endIndex = this.itemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n }\n else {\n if (this.enableVirtualization && !this.isPopupOpen && this.viewPortInfo.endIndex !== this.totalItemCount) {\n this.viewPortInfo.startIndex = this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.totalItemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n findLi = this.getItems().length - 1;\n }\n e.preventDefault();\n if (this.activeIndex === findLi) {\n if (isVirtualKeyAction) {\n this.setSelection(this.liCollections[findLi], e);\n }\n return;\n }\n this.setSelection(this.liCollections[findLi], e);\n }\n };\n DropDownList.prototype.selectCurrentValueOnTab = function (e) {\n if (this.getModuleName() === 'autocomplete') {\n this.selectCurrentItem(e);\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n }\n };\n DropDownList.prototype.mobileKeyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if ((this.isEditTextBox()) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n if (this.list === undefined && !this.isRequested) {\n this.searchKeyEvent = e;\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'enter') {\n this.selectCurrentItem(e);\n }\n }\n };\n DropDownList.prototype.handleVirtualKeyboardActions = function (e, pageCount) {\n switch (e.action) {\n case 'down':\n case 'up':\n if (this.itemData != null || this.getModuleName() === 'autocomplete') {\n this.updateUpDownAction(e, true);\n }\n break;\n case 'pageUp':\n var count = (pageCount * 2) - 4;\n this.activeIndex = Math.round(count);\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e, true);\n e.preventDefault();\n break;\n case 'pageDown':\n this.activeIndex = 1;\n this.pageDownSelection(this.activeIndex + this.getPageCount(), e, true);\n e.preventDefault();\n break;\n case 'home':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e, true);\n break;\n case 'end':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e, true);\n break;\n }\n this.keyboardEvent = null;\n };\n DropDownList.prototype.selectCurrentItem = function (e) {\n if (this.isPopupOpen) {\n var li = this.list.querySelector('.' + dropDownListClasses.focus);\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n else {\n this.showPopup();\n }\n };\n DropDownList.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n DropDownList.prototype.pageUpSelection = function (steps, event, isVirtualKeyAction) {\n var previousItem = steps >= 0 ? this.liCollections[steps + 1] : this.liCollections[0];\n if ((this.enableVirtualization && this.activeIndex == null) || isVirtualKeyAction) {\n previousItem = steps >= 0 ? this.liCollections[steps + this.skeletonCount + 1] : this.liCollections[0];\n }\n if (!isNullOrUndefined(previousItem) && previousItem.classList.contains('e-virtual-list')) {\n previousItem = this.liCollections[this.skeletonCount];\n }\n this.PageUpDownSelection(previousItem, event);\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n };\n DropDownList.prototype.PageUpDownSelection = function (previousItem, event) {\n if (this.enableVirtualization) {\n if (!isNullOrUndefined(previousItem) && ((this.getModuleName() !== 'autocomplete' && !previousItem.classList.contains('e-active')) || (this.getModuleName() === 'autocomplete' && !previousItem.classList.contains('e-item-focus')))) {\n this.setSelection(previousItem, event);\n }\n }\n else {\n this.setSelection(previousItem, event);\n }\n };\n DropDownList.prototype.pageDownSelection = function (steps, event, isVirtualKeyAction) {\n var list = this.getItems();\n var previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];\n if (this.enableVirtualization && this.skeletonCount > 0) {\n steps = this.getModuleName() === 'dropdownlist' && this.allowFiltering ? steps + 1 : steps;\n previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n }\n if ((this.enableVirtualization && this.activeIndex == null) || isVirtualKeyAction) {\n previousItem = steps <= list.length ? this.liCollections[steps + this.skeletonCount - 1] : this.liCollections[list.length - 1];\n }\n this.PageUpDownSelection(previousItem, event);\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n };\n DropDownList.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.container, 'mousedown', this.dropDownClick);\n EventHandler.remove(this.inputWrapper.container, 'keypress', this.onSearch);\n EventHandler.remove(this.inputWrapper.container, 'focus', this.focusIn);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n this.unBindCommonEvent();\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n DropDownList.prototype.unWireListEvents = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'click', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n DropDownList.prototype.checkSelector = function (id) {\n return '[id=\"' + id.replace(/(:|\\.|\\[|\\]|,|=|@|\\\\|\\/|#)/g, '\\\\$1') + '\"]';\n };\n DropDownList.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, this.checkSelector(this.popupObj.element.id))) &&\n !isNullOrUndefined(this.inputWrapper) && !this.inputWrapper.container.contains(e.target)) {\n if (this.inputWrapper.container.classList.contains(dropDownListClasses.inputFocus) || this.isPopupOpen) {\n this.isDocumentClick = true;\n var isActive = this.isRequested;\n if (this.getModuleName() === 'combobox' && this.isTyped) {\n this.isInteracted = false;\n }\n this.hidePopup(e);\n this.isInteracted = false;\n if (!isActive) {\n this.onFocusOut(e);\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n }\n }\n else if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput)\n && !(this.getModuleName() === 'combobox' &&\n !this.allowFiltering && Browser.isDevice && target === this.inputWrapper.buttons[0])) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.targetElement() ||\n document.activeElement === this.filterInput);\n e.preventDefault();\n }\n };\n DropDownList.prototype.activeStateChange = function () {\n if (this.isDocumentClick) {\n this.hidePopup();\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n };\n DropDownList.prototype.focusDropDown = function (e) {\n if (!this.initial && this.isFilterLayout()) {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.dropDownClick = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n this.keyboardEvent = null;\n if (this.targetElement().classList.contains(dropDownListClasses.disable) || this.inputWrapper.clearButton === e.target) {\n return;\n }\n var target = e.target;\n if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput) && this.getModuleName() !== 'combobox') {\n e.preventDefault();\n }\n if (!this.readonly) {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n if (this.isFilterLayout()) {\n this.focusDropDown(e);\n }\n }\n else {\n this.focusIn(e);\n this.floatLabelChange();\n this.queryString = this.inputElement.value.trim() === '' ? null : this.inputElement.value;\n this.isDropDownClick = true;\n this.showPopup(e);\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n // eslint-disable-next-line max-len\n var duration = (this.element.tagName === this.getNgDirective() && this.itemTemplate) ? 500 : 100;\n if (!this.isSecondClick) {\n setTimeout(function () {\n proxy_1.cloneElements();\n proxy_1.isSecondClick = true;\n }, duration);\n }\n }\n else {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.cloneElements = function () {\n if (this.list) {\n var ulElement = this.list.querySelector('ul');\n if (ulElement) {\n ulElement = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.actionCompleteData.ulElement = ulElement;\n }\n }\n };\n DropDownList.prototype.updateSelectedItem = function (li, e, preventSelect, isSelection) {\n var _this = this;\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n var value = li.getAttribute('data-value') !== \"null\" ? this.getFormattedValue(li.getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value);\n if (!this.initial && !preventSelect && !isNullOrUndefined(e)) {\n var items = this.detachChanges(selectedData);\n this.isSelected = true;\n var eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n }\n else {\n _this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n }\n else {\n this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n DropDownList.prototype.selectEventCallback = function (li, e, preventSelect, selectedData, value) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (this.itemData != selectedData) {\n this.previousValue = (!isNullOrUndefined(this.itemData)) ? typeof this.itemData == \"object\" && !this.allowObjectBinding ? this.checkFieldValue(this.itemData, this.fields.value.split('.')) : this.itemData : null;\n }\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n li.setAttribute('aria-selected', 'true');\n if (isNullOrUndefined(value)) {\n value = 'null';\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var filterIndex = this.getIndexByValueFilter(value);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n else {\n this.activeIndex = this.getIndexByValue(value);\n }\n }\n else {\n this.activeIndex = this.getIndexByValue(value);\n }\n };\n DropDownList.prototype.activeItem = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.selected)) {\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n li.setAttribute('aria-selected', 'true');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.setValue = function (e) {\n var dataItem = this.getItemData();\n if (dataItem.value === null) {\n Input.setValue(null, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dataItem.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n else if (!isNullOrUndefined(this.valueTempElement) && this.inputElement.previousSibling === this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n }\n if (!isNullOrUndefined(dataItem.value) && !this.enableVirtualization && this.allowFiltering) {\n this.activeIndex = this.getIndexByValueFilter(dataItem.value);\n }\n var clearIcon = dropDownListClasses.clearIcon;\n var isFilterElement = this.isFiltering() && this.filterInput && (this.getModuleName() === 'combobox');\n var clearElement = isFilterElement && this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (this.isFiltering() && clearElement) {\n clearElement.style.removeProperty('visibility');\n }\n if ((!this.allowObjectBinding && (this.previousValue === dataItem.value)) || (this.allowObjectBinding && (this.previousValue != null && this.isObjectInArray(this.previousValue, [this.allowCustom && this.isObjectCustomValue ? this.value ? this.value : dataItem : dataItem.value ? this.getDataByValue(dataItem.value) : dataItem])))) {\n this.isSelected = false;\n return true;\n }\n else {\n this.isSelected = !this.initial ? true : false;\n this.isSelectCustom = false;\n if (this.getModuleName() === 'dropdownlist') {\n this.updateIconState();\n }\n return false;\n }\n };\n DropDownList.prototype.setSelection = function (li, e) {\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || (this.isPopupOpen && this.isSelected\n && li.classList.contains(dropDownBaseClasses.selected)))) {\n this.updateSelectedItem(li, e, false, true);\n }\n else {\n this.setSelectOptions(li, e);\n if (this.enableVirtualization && this.value) {\n var fields = (this.fields.value) ? this.fields.value : '';\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.dataSource instanceof DataManager && this.virtualGroupDataSource) {\n var getItem = new DataManager(this.virtualGroupDataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': value });\n }\n }\n }\n else {\n var getItem = new DataManager(this.dataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': value });\n }\n }\n }\n }\n }\n };\n DropDownList.prototype.setSelectOptions = function (li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = (!isNullOrUndefined(this.selectedLI)) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.setValue(e)) {\n return;\n }\n if ((!this.isPopupOpen && !isNullOrUndefined(li)) || (this.isPopupOpen && !isNullOrUndefined(e) &&\n (e.type !== 'keydown' || e.type === 'keydown' && e.action === 'enter'))) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.selectedLI) && this.itemData !== null && (!e || e.type !== 'click')) {\n this.setScrollPosition(e);\n }\n if (Browser.info.name !== 'mozilla') {\n if (this.targetElement()) {\n attributes(this.targetElement(), { 'aria-describedby': this.inputElement.id !== '' ? this.inputElement.id : this.element.id });\n this.targetElement().removeAttribute('aria-live');\n }\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (this.isPopupOpen && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n };\n DropDownList.prototype.dropdownCompiler = function (dropdownTemplate) {\n var checkTemplate = false;\n if (typeof dropdownTemplate !== 'function' && dropdownTemplate) {\n try {\n checkTemplate = (document.querySelectorAll(dropdownTemplate).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownList.prototype.setValueTemplate = function () {\n var compiledString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['valueTemplate']);\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n }\n if (!this.valueTempElement) {\n this.valueTempElement = this.createElement('span', { className: dropDownListClasses.value });\n this.inputElement.parentElement.insertBefore(this.valueTempElement, this.inputElement);\n this.inputElement.style.display = 'none';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.valueTempElement.innerHTML = '';\n }\n var valuecheck = this.dropdownCompiler(this.valueTemplate);\n if (typeof this.valueTemplate !== 'function' && valuecheck) {\n compiledString = compile(document.querySelector(this.valueTemplate).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var valueCompTemp = compiledString(this.itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, this.valueTempElement);\n if (valueCompTemp && valueCompTemp.length > 0) {\n append(valueCompTemp, this.valueTempElement);\n }\n this.renderReactTemplates();\n };\n DropDownList.prototype.removeSelection = function () {\n if (this.list) {\n var selectedItems = this.list.querySelectorAll('.' + dropDownBaseClasses.selected);\n if (selectedItems.length) {\n removeClass(selectedItems, dropDownBaseClasses.selected);\n selectedItems[0].removeAttribute('aria-selected');\n }\n }\n };\n DropDownList.prototype.getItemData = function () {\n var fields = this.fields;\n var dataItem = null;\n dataItem = this.itemData;\n var dataValue;\n var dataText;\n if (!isNullOrUndefined(dataItem)) {\n dataValue = getValue(fields.value, dataItem);\n dataText = getValue(fields.text, dataItem);\n }\n var value = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataValue : dataItem);\n var text = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataText : dataItem);\n return { value: value, text: text };\n };\n /**\n * To trigger the change event for list.\n *\n * @param {MouseEvent | KeyboardEvent | TouchEvent} eve - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onChangeEvent = function (eve, isCustomValue) {\n var _this = this;\n var dataItem = this.getItemData();\n var index = this.isSelectCustom ? null : this.activeIndex;\n if (this.enableVirtualization) {\n var datas = this.dataSource instanceof DataManager ? this.virtualGroupDataSource : this.dataSource;\n if (dataItem.value && datas && datas.length > 0) {\n var foundIndex = datas.findIndex(function (data) {\n return !isNullOrUndefined(dataItem.value) && getValue(_this.fields.value, data) === dataItem.value;\n });\n if (foundIndex !== -1) {\n index = foundIndex;\n }\n }\n }\n var value = this.allowObjectBinding ? isCustomValue ? this.value : this.getDataByValue(dataItem.value) : dataItem.value;\n this.setProperties({ 'index': index, 'text': dataItem.text, 'value': value }, true);\n this.detachChangeEvent(eve);\n };\n DropDownList.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n DropDownList.prototype.detachChangeEvent = function (eve) {\n this.isSelected = false;\n this.previousValue = this.value;\n this.activeIndex = this.enableVirtualization ? this.getIndexByValue(this.value) : this.index;\n this.typedString = !isNullOrUndefined(this.text) ? this.text : '';\n if (!this.initial) {\n var items = this.detachChanges(this.itemData);\n var preItems = void 0;\n if (typeof this.previousItemData === 'string' ||\n typeof this.previousItemData === 'boolean' ||\n typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n }\n else {\n preItems = this.previousItemData;\n }\n this.setHiddenValue();\n var eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.value,\n element: this.element,\n event: eve\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n }\n if ((isNullOrUndefined(this.value) || this.value === '') && this.floatLabelType !== 'Always') {\n removeClass([this.inputWrapper.container], 'e-valid-input');\n }\n };\n DropDownList.prototype.setHiddenValue = function () {\n if (!isNullOrUndefined(this.value)) {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.hiddenElement.querySelector('option')) {\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.textContent = this.text;\n selectedElement.setAttribute('value', value.toString());\n }\n else {\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.setAttribute('value', value.toString());\n }\n }\n }\n else {\n this.hiddenElement.innerHTML = '';\n }\n };\n /**\n * Filter bar implementation\n *\n * @param {KeyboardEventArgs} e - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onFilterUp = function (e) {\n if (!(e.ctrlKey && e.keyCode === 86) && (this.isValidKey || e.keyCode === 40 || e.keyCode === 38)) {\n this.isValidKey = false;\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n switch (e.keyCode) {\n case 38: //up arrow\n case 40: //down arrow\n if (this.getModuleName() === 'autocomplete' && !this.isPopupOpen && !this.preventAltUp && !this.isRequested) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else {\n this.preventAutoFill = false;\n }\n this.preventAltUp = false;\n if (this.getModuleName() === 'autocomplete' && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n e.preventDefault();\n break;\n case 46: //delete\n case 8: //backspace\n this.typedString = this.filterInput.value;\n if (!this.isPopupOpen && this.typedString !== '' || this.isPopupOpen && this.queryString.length > 0) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '' && this.queryString === '' && this.getModuleName() !== 'autocomplete') {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '') {\n if (this.list) {\n this.resetFocusElement();\n }\n this.activeIndex = null;\n if (this.getModuleName() !== 'dropdownlist') {\n this.preventAutoFill = true;\n this.searchLists(e);\n if (this.getModuleName() === 'autocomplete') {\n this.hidePopup();\n }\n }\n }\n e.preventDefault();\n break;\n default:\n this.typedString = this.filterInput.value;\n this.preventAutoFill = false;\n this.searchLists(e);\n if ((this.enableVirtualization && this.getModuleName() !== 'autocomplete') || (this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount != 0)) {\n this.getFilteringSkeletonCount();\n }\n break;\n }\n }\n else {\n this.isValidKey = false;\n }\n };\n DropDownList.prototype.onFilterDown = function (e) {\n switch (e.keyCode) {\n case 13: //enter\n break;\n case 40: //down arrow\n case 38: //up arrow\n this.queryString = this.filterInput.value;\n e.preventDefault();\n break;\n case 9: //tab\n if (this.isPopupOpen && this.getModuleName() !== 'autocomplete') {\n e.preventDefault();\n }\n break;\n default:\n this.prevSelectPoints = this.getSelectionPoints();\n this.queryString = this.filterInput.value;\n break;\n }\n };\n DropDownList.prototype.removeFillSelection = function () {\n if (this.isInteracted) {\n var selection = this.getSelectionPoints();\n this.inputElement.setSelectionRange(selection.end, selection.end);\n }\n };\n DropDownList.prototype.getQuery = function (query) {\n var filterQuery;\n if (!this.isCustomFilter && this.allowFiltering && this.filterInput) {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = this.typedString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n else {\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 if (this.enableVirtualization && (this.viewPortInfo.endIndex != 0) && (!(this.dataSource instanceof DataManager) || (this.dataSource instanceof DataManager && this.virtualGroupDataSource))) {\n var takeValue = this.getTakeValue();\n var alreadySkipAdded = false;\n if (filterQuery) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n alreadySkipAdded = true;\n break;\n }\n }\n }\n var queryTakeValue = 0;\n var querySkipValue = 0;\n if (this.query && this.query.queries.length > 0) {\n for (var queryElements_1 = 0; queryElements_1 < this.query.queries.length; queryElements_1++) {\n if (this.query.queries[queryElements_1].fn === 'onSkip') {\n querySkipValue = this.query.queries[queryElements_1].e.nos;\n }\n if (this.query.queries[queryElements_1].fn === 'onTake') {\n queryTakeValue = takeValue <= this.query.queries[queryElements_1].e.nos ? this.query.queries[queryElements_1].e.nos : takeValue;\n }\n }\n }\n var skipExists = false;\n var takeExists = false;\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements_2 = 0; queryElements_2 < filterQuery.queries.length; queryElements_2++) {\n if (filterQuery.queries[queryElements_2].fn === 'onSkip') {\n skipExists = true;\n }\n if (filterQuery.queries[queryElements_2].fn === 'onTake') {\n takeExists = true;\n filterQuery.queries[queryElements_2].e.nos = filterQuery.queries[queryElements_2].e.nos <= queryTakeValue ? queryTakeValue : filterQuery.queries[queryElements_2].e.nos;\n }\n }\n }\n if (!skipExists && (this.allowFiltering || !this.isPopupOpen || !alreadySkipAdded)) {\n if (querySkipValue > 0) {\n filterQuery.skip(querySkipValue);\n }\n else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n }\n if (this.isIncrementalRequest) {\n filterQuery.take(this.incrementalEndIndex);\n }\n else {\n if (!takeExists) {\n if (queryTakeValue > 0) {\n filterQuery.take(queryTakeValue);\n }\n else {\n filterQuery.take(takeValue);\n }\n }\n }\n filterQuery.requiresCount();\n }\n return filterQuery;\n };\n DropDownList.prototype.getSelectionPoints = function () {\n var input = this.inputElement;\n return { start: Math.abs(input.selectionStart), end: Math.abs(input.selectionEnd) };\n };\n DropDownList.prototype.searchLists = function (e) {\n var _this = this;\n this.isTyped = true;\n this.activeIndex = null;\n this.isListSearched = true;\n if (this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n this.isDataFetched = false;\n if (this.isFiltering()) {\n this.checkAndResetCache();\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isCustomFilter = true;\n _this.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 var isNoData = this.list.classList.contains(dropDownBaseClasses.noData);\n if (this.filterInput.value.trim() === '' && !this.itemTemplate) {\n this.actionCompleteData.isUpdated = false;\n this.isTyped = false;\n if (!isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list)) {\n if (this.enableVirtualization) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n this.resetList(dataSource, fields, query);\n if (isNoData && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n }\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list);\n }\n this.isTyped = true;\n if (!isNullOrUndefined(this.itemData) && this.getModuleName() === 'dropdownlist') {\n this.focusIndexItem();\n this.setScrollPosition();\n }\n this.isNotSearchList = true;\n }\n else {\n this.isNotSearchList = false;\n query = (this.filterInput.value.trim() === '') ? null : query;\n if (this.enableVirtualization && this.isFiltering() && this.isTyped) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n this.resetList(dataSource, fields, query);\n if (this.getModuleName() === 'dropdownlist' && this.list.classList.contains(dropDownBaseClasses.noData)) {\n this.popupContentElement.setAttribute('role', 'status');\n this.popupContentElement.setAttribute('id', 'no-record');\n attributes(this.filterInputObj.container, { 'aria-activedescendant': 'no-record' });\n }\n if (this.enableVirtualization && isNoData && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n }\n if (this.enableVirtualization) {\n this.getFilteringSkeletonCount();\n }\n this.renderReactTemplates();\n }\n };\n DropDownList.prototype.setSearchBox = function (popupElement) {\n if (this.isFiltering()) {\n var parentElement = popupElement.querySelector('.' + dropDownListClasses.filterParent) ?\n popupElement.querySelector('.' + dropDownListClasses.filterParent) : this.createElement('span', {\n className: dropDownListClasses.filterParent\n });\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: dropDownListClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ?\n [dropDownListClasses.backIcon, dropDownListClasses.filterBarClearIcon] : [dropDownListClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n if (!isNullOrUndefined(this.cssClass)) {\n if (this.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], parentElement);\n prepend([parentElement], popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n if (!Browser.isDevice) {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n else {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.mobileKeyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.filterInput, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.pasteHandler, this);\n return this.filterInputObj;\n }\n else {\n return inputObject;\n }\n };\n DropDownList.prototype.onInput = function (e) {\n this.isValidKey = true;\n if (this.getModuleName() === 'combobox') {\n this.updateIconState();\n }\n // For filtering works in mobile firefox.\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.typedString = this.filterInput.value;\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n };\n DropDownList.prototype.pasteHandler = function (e) {\n var _this = this;\n setTimeout(function () {\n _this.typedString = _this.filterInput.value;\n _this.searchLists(e);\n });\n };\n DropDownList.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n if (this.beforePopupOpen) {\n this.renderPopup();\n }\n };\n DropDownList.prototype.getTakeValue = function () {\n return this.allowFiltering && this.getModuleName() === 'dropdownlist' && Browser.isDevice ? Math.round(window.outerHeight / this.listItemHeight) : this.itemCount;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n if (this.dataSource instanceof DataManager && !isNullOrUndefined(e) && !this.virtualGroupDataSource) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = e.count;\n }\n if (this.isNotSearchList && !this.enableVirtualization) {\n this.isNotSearchList = false;\n return;\n }\n var tempItemCount = this.itemCount;\n if (this.isActive || !isNullOrUndefined(ulElement)) {\n var selectedItem = this.selectedLI ? this.selectedLI.cloneNode(true) : null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.skeletonCount = this.totalItemCount != 0 && this.totalItemCount < (this.itemCount * 2) ? 0 : this.skeletonCount;\n this.updateSelectElementData(this.allowFiltering);\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent) && this.searchKeyEvent.type === 'keydown') {\n this.isRequested = false;\n this.keyActionHandler(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent)) {\n this.incrementalSearch(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false', 'aria-label': 'listbox' });\n }\n if (this.initialRemoteRender) {\n this.initial = true;\n this.activeIndex = this.index;\n this.initialRemoteRender = false;\n if (this.value && this.dataSource instanceof DataManager) {\n var checkField_1 = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n var value_5 = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue(checkField_1, this.value) : this.value;\n var fieldValue_1 = this.fields.value.split('.');\n var checkVal = list.some(function (x) {\n return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ?\n _this.checkFieldValue(x, fieldValue_1) === value_5 : x[checkField_1] === value_5;\n });\n if (this.enableVirtualization && this.virtualGroupDataSource) {\n checkVal = this.virtualGroupDataSource.some(function (x) {\n return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ?\n _this.checkFieldValue(x, fieldValue_1) === value_5 : x[checkField_1] === value_5;\n });\n }\n if (!checkVal) {\n this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField_1, 'equal', value_5)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n _this.updateValues();\n }\n else {\n _this.updateValues();\n }\n });\n }\n else {\n this.updateValues();\n }\n }\n else {\n this.updateValues();\n }\n this.initial = false;\n }\n else if (this.getModuleName() === 'autocomplete' && this.value) {\n this.setInputValue();\n }\n if (this.getModuleName() !== 'autocomplete' && this.isFiltering() && !this.isTyped) {\n if (!this.actionCompleteData.isUpdated || ((!this.isCustomFilter\n && !this.isFilterFocus) || (isNullOrUndefined(this.itemData) && this.allowFiltering)\n && ((this.dataSource instanceof DataManager)\n || (!isNullOrUndefined(this.dataSource) && !isNullOrUndefined(this.dataSource.length) &&\n this.dataSource.length !== 0)))) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.updateActionCompleteDataValues(ulElement, list);\n }, 0);\n }\n else {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((this.allowCustom || (this.allowFiltering && !this.isValueInList(list, this.value) && this.dataSource instanceof DataManager)) && !this.enableVirtualization) {\n this.addNewItem(list, selectedItem);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n else if ((this.allowCustom || (this.allowFiltering && this.isValueInList(list, this.value))) && !this.enableVirtualization) {\n this.addNewItem(list, selectedItem);\n }\n if (!isNullOrUndefined(this.itemData) || (isNullOrUndefined(this.itemData) && this.enableVirtualization)) {\n this.focusIndexItem();\n }\n if (this.enableVirtualization) {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n else if (this.enableVirtualization && this.getModuleName() !== 'autocomplete' && !this.isFiltering()) {\n var value = this.getItemData().value;\n this.activeIndex = this.getIndexByValue(value);\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n }\n else if (this.enableVirtualization && this.getModuleName() === 'autocomplete') {\n this.activeIndex = this.skeletonCount;\n }\n if (this.beforePopupOpen) {\n this.renderPopup(e);\n if (this.enableVirtualization) {\n if (!this.list.querySelector('.e-virtual-list')) {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n }\n }\n if (this.enableVirtualization && tempItemCount != this.itemCount) {\n this.resetList(this.dataSource, this.fields);\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.isValueInList = function (list, valueToFind) {\n if (Array.isArray(list)) {\n for (var i = 0; i < list.length; i++) {\n if (list[i] === valueToFind) {\n return true;\n }\n }\n }\n else if (typeof list === 'object' && list !== null) {\n for (var key in list) {\n if (Object.prototype.hasOwnProperty.call(list, key) && list[key] === valueToFind) {\n return true;\n }\n }\n }\n return false;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.checkFieldValue = function (list, fieldValue) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var checkField = list;\n fieldValue.forEach(function (value) {\n checkField = checkField[value];\n });\n return checkField;\n };\n DropDownList.prototype.updateActionCompleteDataValues = function (ulElement, list) {\n this.actionCompleteData = { ulElement: ulElement.cloneNode(true), list: list, isUpdated: true };\n if (this.actionData.list !== this.actionCompleteData.list && this.actionCompleteData.ulElement && this.actionCompleteData.list) {\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.addNewItem = function (listData, newElement) {\n var _this = this;\n if (!isNullOrUndefined(this.itemData) && !isNullOrUndefined(newElement)) {\n var value_6 = this.getItemData().value;\n var isExist = listData.some(function (data) {\n return (((typeof data === 'string' || typeof data === 'number') && data === value_6) ||\n (getValue(_this.fields.value, data) === value_6));\n });\n if (!isExist) {\n this.addItem(this.itemData);\n }\n }\n };\n DropDownList.prototype.updateActionCompleteData = function (li, item, index) {\n var _this = this;\n if (this.getModuleName() !== 'autocomplete' && this.actionCompleteData.ulElement) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.actionCompleteDataUpdate(li, item, index);\n }, 0);\n }\n else {\n this.actionCompleteDataUpdate(li, item, index);\n }\n }\n };\n DropDownList.prototype.actionCompleteDataUpdate = function (li, item, index) {\n if (index !== null) {\n this.actionCompleteData.ulElement.\n insertBefore(li.cloneNode(true), this.actionCompleteData.ulElement.childNodes[index]);\n }\n else {\n this.actionCompleteData.ulElement.appendChild(li.cloneNode(true));\n }\n if (this.isFiltering() && this.actionCompleteData.list.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 if (!(this.enableVirtualization && isNullOrUndefined(element))) {\n this.removeFocus();\n }\n };\n DropDownList.prototype.updateSelection = function () {\n var selectedItem = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (selectedItem) {\n this.setProperties({ 'index': this.getIndexByValue(selectedItem.getAttribute('data-value')) });\n this.activeIndex = this.index;\n }\n else {\n this.removeFocus();\n this.list.querySelector('.' + dropDownBaseClasses.li).classList.add(dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.updateSelectionList = function () {\n var selectedItem = this.list && this.list.querySelector('.' + 'e-active');\n if (!selectedItem && !isNullOrUndefined(this.value)) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var findEle = this.findListElement(this.list, 'li', 'data-value', value);\n if (findEle) {\n findEle.classList.add('e-active');\n }\n }\n };\n DropDownList.prototype.removeFocus = function () {\n var highlightedItem = this.list.querySelectorAll('.' + dropDownListClasses.focus);\n if (highlightedItem && highlightedItem.length) {\n removeClass(highlightedItem, dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.renderPopup = function (e) {\n var _this = this;\n if (this.popupObj && document.body.contains(this.popupObj.element)) {\n this.refreshPopup();\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n var popupEle = _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-ddl e-popup ' + (_this.cssClass !== null ? _this.cssClass : '')\n });\n popupEle.setAttribute('aria-label', _this.element.id);\n popupEle.setAttribute('role', 'dialog');\n var searchBox = _this.setSearchBox(popupEle);\n _this.listContainerHeight = formatUnit(_this.popupHeight);\n if (_this.headerTemplate) {\n _this.setHeaderTemplate(popupEle);\n }\n append([_this.list], popupEle);\n if (_this.footerTemplate) {\n _this.setFooterTemplate(popupEle);\n }\n document.body.appendChild(popupEle);\n popupEle.style.top = '0px';\n if (_this.enableVirtualization && _this.itemTemplate) {\n var listitems = popupEle.querySelectorAll('li.e-list-item:not(.e-virtual-list)');\n _this.listItemHeight = listitems.length > 0 ? Math.ceil(listitems[0].getBoundingClientRect().height) : 0;\n }\n if (_this.enableVirtualization && !_this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!_this.list.querySelector('.e-virtual-ddl-content')) {\n _this.list.appendChild(_this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: _this.getTransformValues()\n })).appendChild(_this.list.querySelector('.e-list-parent'));\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = _this.getTransformValues();\n }\n _this.UpdateSkeleton();\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.virtualItemCount = _this.itemCount;\n if (!_this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-virtual-ddl', styles: _this.GetVirtualTrackHeight()\n });\n popupEle.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl')[0].style = _this.GetVirtualTrackHeight();\n }\n }\n popupEle.style.visibility = 'hidden';\n if (_this.popupHeight !== 'auto') {\n _this.searchBoxHeight = 0;\n if (!isNullOrUndefined(searchBox.container) && _this.getModuleName() !== 'combobox' && _this.getModuleName() !== 'autocomplete') {\n _this.searchBoxHeight = (searchBox.container.parentElement).getBoundingClientRect().height;\n _this.listContainerHeight = (parseInt(_this.listContainerHeight, 10) - (_this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.headerTemplate) {\n _this.header = _this.header ? _this.header : popupEle.querySelector('.e-ddl-header');\n var height = Math.round(_this.header.getBoundingClientRect().height);\n _this.listContainerHeight = (parseInt(_this.listContainerHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.footerTemplate) {\n _this.footer = _this.footer ? _this.footer : popupEle.querySelector('.e-ddl-footer');\n var height = Math.round(_this.footer.getBoundingClientRect().height);\n _this.listContainerHeight = (parseInt(_this.listContainerHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n _this.list.style.maxHeight = (parseInt(_this.listContainerHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(_this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n var offsetValue = 0;\n var left = void 0;\n _this.isPreventScrollAction = true;\n if (!isNullOrUndefined(_this.selectedLI) && (!isNullOrUndefined(_this.activeIndex) && _this.activeIndex >= 0)) {\n _this.setScrollPosition();\n }\n else if (_this.enableVirtualization) {\n _this.setScrollPosition();\n }\n else {\n _this.list.scrollTop = 0;\n }\n if (Browser.isDevice && (!_this.allowFiltering && (_this.getModuleName() === 'dropdownlist' ||\n (_this.isDropDownClick && _this.getModuleName() === 'combobox')))) {\n offsetValue = _this.getOffsetValue(popupEle);\n var firstItem = _this.isEmptyList() ? _this.list : _this.liCollections[0];\n if (!isNullOrUndefined(_this.inputElement)) {\n left = -(parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(_this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(_this.inputElement.parentElement).borderLeftWidth, 10));\n }\n }\n _this.createPopup(popupEle, offsetValue, left);\n _this.popupContentElement = _this.popupObj.element.querySelector('.e-content');\n _this.getFocusElement();\n _this.checkCollision(popupEle);\n if (Browser.isDevice) {\n if ((parseInt(_this.popupWidth.toString(), 10) > window.outerWidth) && !(_this.getModuleName() === 'dropdownlist' && _this.allowFiltering)) {\n _this.popupObj.element.classList.add('e-wide-popup');\n }\n _this.popupObj.element.classList.add(dropDownListClasses.device);\n if (_this.getModuleName() === 'dropdownlist' || (_this.getModuleName() === 'combobox'\n && !_this.allowFiltering && _this.isDropDownClick)) {\n _this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n if (_this.isFilterLayout()) {\n _this.popupObj.element.classList.add(dropDownListClasses.mobileFilter);\n _this.popupObj.position = { X: 0, Y: 0 };\n _this.popupObj.dataBind();\n attributes(_this.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, _this.popupObj.element], dropDownListClasses.popupFullScreen);\n _this.setSearchBoxPosition();\n _this.backIconElement = searchBox.container.querySelector('.e-back-icon');\n _this.clearIconElement = searchBox.container.querySelector('.' + dropDownListClasses.clearIcon);\n EventHandler.add(_this.backIconElement, 'click', _this.clickOnBackIcon, _this);\n EventHandler.add(_this.clearIconElement, 'click', _this.clearText, _this);\n }\n }\n popupEle.style.visibility = 'visible';\n addClass([popupEle], 'e-popup-close');\n var scrollParentElements = _this.popupObj.getScrollableParent(_this.inputWrapper.container);\n for (var _i = 0, scrollParentElements_1 = scrollParentElements; _i < scrollParentElements_1.length; _i++) {\n var element = scrollParentElements_1[_i];\n EventHandler.add(element, 'scroll', _this.scrollHandler, _this);\n }\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n _this.selectedElementID = _this.selectedLI ? _this.selectedLI.id : null;\n if (_this.enableVirtualization) {\n _this.notify(\"bindScrollEvent\", {\n module: \"VirtualScroll\",\n component: _this.getModuleName(),\n enable: _this.enableVirtualization,\n });\n setTimeout(function () {\n if (_this.value || _this.list.querySelector('.e-active')) {\n _this.updateSelectionList();\n if (_this.selectedValueInfo && _this.viewPortInfo && _this.viewPortInfo.offsets.top) {\n _this.list.scrollTop = _this.viewPortInfo.offsets.top;\n }\n else {\n _this.scrollBottom(true, true);\n }\n }\n }, 5);\n }\n attributes(_this.targetElement(), { 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_popup', 'aria-controls': _this.element.id });\n if (_this.getModuleName() !== 'dropdownlist' && _this.list.classList.contains('e-nodata')) {\n attributes(_this.targetElement(), { 'aria-activedescendant': 'no-record' });\n _this.popupContentElement.setAttribute('role', 'status');\n _this.popupContentElement.setAttribute('id', 'no-record');\n }\n _this.inputElement.setAttribute('aria-expanded', 'true');\n _this.inputElement.setAttribute('aria-controls', _this.element.id);\n var inputParent = _this.isFiltering() ? _this.filterInput.parentElement : _this.inputWrapper.container;\n addClass([inputParent], [dropDownListClasses.inputFocus]);\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = _this.popupObj;\n var eventArgs = { popup: popupInstance, event: e, cancel: false, animation: animModel };\n _this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!isNullOrUndefined(_this.inputWrapper)) {\n addClass([_this.inputWrapper.container], [dropDownListClasses.iconAnimation]);\n }\n _this.renderReactTemplates();\n if (!isNullOrUndefined(_this.popupObj)) {\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.element : null);\n }\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n }\n else {\n _this.beforePopupOpen = false;\n }\n });\n };\n DropDownList.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || (Browser.isDevice && !(this.getModuleName() === 'dropdownlist' || this.isDropDownClick))) {\n var collision = isCollide(popupEle);\n if (collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n }\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.getOffsetValue = function (popupEle) {\n var popupStyles = getComputedStyle(popupEle);\n var borderTop = parseInt(popupStyles.borderTopWidth, 10);\n var borderBottom = parseInt(popupStyles.borderBottomWidth, 10);\n return this.setPopupPosition(borderTop + borderBottom);\n };\n DropDownList.prototype.createPopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputWrapper.container,\n collision: this.enableRtl ? { X: 'fit', Y: 'flip' } : { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left,\n position: this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' },\n zIndex: this.zIndex,\n close: function () {\n if (!_this.isDocumentClick) {\n _this.focusDropDown();\n }\n // eslint-disable-next-line\n if (_this.isReact) {\n _this.clearTemplate(['headerTemplate', 'footerTemplate']);\n }\n _this.isNotSearchList = false;\n _this.isDocumentClick = false;\n _this.destroyPopup();\n if (_this.isFiltering() && _this.actionCompleteData.list && _this.actionCompleteData.list[0]) {\n _this.isActive = true;\n if (_this.enableVirtualization) {\n _this.onActionComplete(_this.ulElement, _this.listData, null, true);\n }\n else {\n _this.onActionComplete(_this.actionCompleteData.ulElement, _this.actionCompleteData.list, null, true);\n }\n }\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n var actionList = _this.actionCompleteData && _this.actionCompleteData.ulElement &&\n _this.actionCompleteData.ulElement.querySelector('li');\n var ulElement = _this.list.querySelector('ul li');\n if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n if (_this.isFiltering() && _this.itemTemplate && (_this.element.tagName === _this.getNgDirective()) &&\n (actionList && ulElement && actionList.textContent !== ulElement.textContent) &&\n _this.element.tagName !== 'EJS-COMBOBOX') {\n _this.cloneElements();\n }\n if (_this.isFilterLayout()) {\n removeClass([_this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n _this.isFilterFocus = true;\n _this.filterInput.focus();\n if (_this.inputWrapper.clearButton) {\n addClass([_this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n _this.activeStateChange();\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n };\n DropDownList.prototype.isEmptyList = function () {\n return !isNullOrUndefined(this.liCollections) && this.liCollections.length === 0;\n };\n DropDownList.prototype.getFocusElement = function () {\n // combo-box used this method\n };\n DropDownList.prototype.isFilterLayout = function () {\n return this.getModuleName() === 'dropdownlist' && this.allowFiltering;\n };\n DropDownList.prototype.scrollHandler = function () {\n if (Browser.isDevice && ((this.getModuleName() === 'dropdownlist' &&\n !this.isFilterLayout()) || (this.getModuleName() === 'combobox' && !this.allowFiltering && this.isDropDownClick))) {\n if (this.element && !(this.isElementInViewport(this.element))) {\n this.hidePopup();\n }\n }\n };\n DropDownList.prototype.isElementInViewport = function (element) {\n var elementRect = element.getBoundingClientRect();\n return (elementRect.top >= 0 && elementRect.left >= 0 && elementRect.bottom <= window.innerHeight && elementRect.right <= window.innerWidth);\n };\n ;\n DropDownList.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n this.popupObj.element.style.maxHeight = '100%';\n this.popupObj.element.style.width = '100%';\n this.list.style.maxHeight = (window.innerHeight - searchBoxHeight) + 'px';\n this.list.style.height = (window.innerHeight - searchBoxHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n DropDownList.prototype.setPopupPosition = function (border) {\n var offsetValue;\n var popupOffset = border;\n var selectedLI = this.list.querySelector('.' + dropDownListClasses.focus) || this.selectedLI;\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n var lastItem = this.isEmptyList() ? this.list : this.liCollections[this.getItems().length - 1];\n var liHeight = firstItem.getBoundingClientRect().height;\n this.listItemHeight = liHeight;\n var listHeight = this.list.offsetHeight / 2;\n var height = isNullOrUndefined(selectedLI) ? firstItem.offsetTop : selectedLI.offsetTop;\n var lastItemOffsetValue = lastItem.offsetTop;\n if (lastItemOffsetValue - listHeight < height && !isNullOrUndefined(this.liCollections) &&\n this.liCollections.length > 0 && !isNullOrUndefined(selectedLI)) {\n var count = this.list.offsetHeight / liHeight;\n var paddingBottom = parseInt(getComputedStyle(this.list).paddingBottom, 10);\n offsetValue = (count - (this.liCollections.length - this.activeIndex)) * liHeight - popupOffset + paddingBottom;\n this.list.scrollTop = selectedLI.offsetTop;\n }\n else if (height > listHeight && !this.enableVirtualization) {\n offsetValue = listHeight - liHeight / 2;\n this.list.scrollTop = height - listHeight + liHeight / 2;\n }\n else {\n offsetValue = height;\n }\n var inputHeight = this.inputWrapper.container.offsetHeight;\n offsetValue = offsetValue + liHeight + popupOffset - ((liHeight - inputHeight) / 2);\n return -offsetValue;\n };\n DropDownList.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputWrapper.container.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n if (Browser.isDevice && (!this.allowFiltering && (this.getModuleName() === 'dropdownlist' ||\n (this.isDropDownClick && this.getModuleName() === 'combobox')))) {\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n width = (parseInt(width, 10) + (parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(this.inputElement.parentElement).borderLeftWidth, 10)) * 2) + 'px';\n }\n return width;\n };\n DropDownList.prototype.scrollBottom = function (isInitial, isInitialSelection, keyAction) {\n var _this = this;\n if (isInitialSelection === void 0) { isInitialSelection = false; }\n if (keyAction === void 0) { keyAction = null; }\n if (isNullOrUndefined(this.selectedLI) && this.enableVirtualization) {\n this.selectedLI = this.list.querySelector('.' + dropDownBaseClasses.li);\n if (!isNullOrUndefined(this.selectedLI) && this.selectedLI.classList.contains('e-virtual-list')) {\n this.selectedLI = this.liCollections[this.skeletonCount];\n }\n }\n if (!isNullOrUndefined(this.selectedLI)) {\n this.isUpwardScrolling = false;\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var lastElementValue = this.list.querySelector('li:last-of-type') ? this.list.querySelector('li:last-of-type').getAttribute('data-value') : null;\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var isScrollerCHanged = false;\n var isScrollTopChanged = false;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10);\n var boxRange = selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) + this.selectedLI.offsetHeight - this.list.scrollTop;\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (this.activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n isScrollerCHanged = this.isKeyBoardAction;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n var currentElementValue = this.selectedLI ? this.selectedLI.getAttribute('data-value') : null;\n var liCount = keyAction == \"pageDown\" ? this.getPageCount() - 2 : 1;\n if (!this.enableVirtualization || this.isKeyBoardAction || isInitialSelection) {\n if (this.isKeyBoardAction && this.enableVirtualization && lastElementValue && currentElementValue === lastElementValue && keyAction != \"end\" && !this.isVirtualScrolling) {\n this.isPreventKeyAction = true;\n if (this.enableVirtualization && this.itemTemplate) {\n this.list.scrollTop += nextOffset;\n }\n else {\n if (this.enableVirtualization) {\n liCount = keyAction == \"pageDown\" ? this.getPageCount() : liCount;\n }\n this.list.scrollTop += this.selectedLI.offsetHeight * liCount;\n }\n this.isPreventKeyAction = this.IsScrollerAtEnd() ? false : this.isPreventKeyAction;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyAction == \"end\") {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n this.list.scrollTop = this.list.scrollHeight;\n }\n else {\n if (keyAction == \"pageDown\" && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n nextOffset = nextOffset + (this.selectedLI.offsetHeight * liCount);\n }\n this.list.scrollTop = nextOffset;\n }\n }\n else {\n this.list.scrollTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight : 0;\n }\n isScrollerCHanged = this.isKeyBoardAction;\n isScrollTopChanged = true;\n }\n this.isKeyBoardAction = isScrollerCHanged;\n if (this.enableVirtualization && this.fields.groupBy && this.fixedHeaderElement && (keyAction == \"down\")) {\n setTimeout(function () {\n _this.scrollStop(null, true);\n }, 100);\n }\n }\n };\n DropDownList.prototype.scrollTop = function (keyAction) {\n if (keyAction === void 0) { keyAction = null; }\n if (!isNullOrUndefined(this.selectedLI)) {\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var selectedLiOffsetTop = (this.virtualListInfo && this.virtualListInfo.startIndex) ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n var nextOffset = selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) - this.list.scrollTop;\n var firstElementValue = this.list.querySelector('li.e-list-item:not(.e-virtual-list)') ? this.list.querySelector('li.e-list-item:not(.e-virtual-list)').getAttribute('data-value') : null;\n nextOffset = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) + this.selectedLI.offsetHeight - this.list.scrollTop);\n var isPageUpKeyAction = this.enableVirtualization && this.getModuleName() === 'autocomplete' && nextOffset <= 0;\n if (this.activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0 || isPageUpKeyAction) {\n var currentElementValue = this.selectedLI ? this.selectedLI.getAttribute('data-value') : null;\n var liCount = keyAction == \"pageUp\" ? this.getPageCount() - 2 : 1;\n if (this.enableVirtualization) {\n liCount = keyAction == \"pageUp\" ? this.getPageCount() : liCount;\n }\n if (this.enableVirtualization && this.isKeyBoardAction && firstElementValue && currentElementValue === firstElementValue && keyAction != \"home\" && !this.isVirtualScrolling) {\n this.isUpwardScrolling = true;\n this.isPreventKeyAction = true;\n this.list.scrollTop -= this.selectedLI.offsetHeight * liCount;\n this.isPreventKeyAction = this.list.scrollTop != 0 ? this.isPreventKeyAction : false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyAction == \"home\") {\n this.isPreventScrollAction = false;\n this.isPreventKeyAction = true;\n this.isKeyBoardAction = false;\n this.list.scrollTo(0, 0);\n }\n else {\n if (keyAction == \"pageUp\" && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n nextOffset = nextOffset - (this.selectedLI.offsetHeight * liCount);\n }\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = this.selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n }\n };\n DropDownList.prototype.isEditTextBox = function () {\n return false;\n };\n DropDownList.prototype.isFiltering = function () {\n return this.allowFiltering;\n };\n DropDownList.prototype.isPopupButton = function () {\n return true;\n };\n DropDownList.prototype.setScrollPosition = function (e) {\n this.isPreventScrollAction = true;\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.isKeyBoardAction = true;\n this.scrollBottom(false, false, e.action);\n break;\n default:\n this.isKeyBoardAction = e.action == 'up' || e.action == 'pageUp' || e.action == 'open';\n this.scrollTop(e.action);\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n this.isKeyBoardAction = false;\n };\n DropDownList.prototype.clearText = function () {\n this.filterInput.value = this.typedString = '';\n this.searchLists(null);\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n this.getSkeletonCount();\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\n };\n DropDownList.prototype.setEleWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n DropDownList.prototype.closePopup = function (delay, e) {\n var _this = this;\n var isFilterValue = !isNullOrUndefined(this.filterInput) && !isNullOrUndefined(this.filterInput.value) && this.filterInput.value !== '';\n var typedString = this.getModuleName() === 'combobox' ? this.typedString : null;\n this.isTyped = false;\n this.isVirtualTrackHeight = false;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n this.keyboardEvent = null;\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.isActive = false;\n this.filterInputObj = null;\n this.isDropDownClick = false;\n this.preventAutoFill = false;\n var scrollableParentElements = this.popupObj.getScrollableParent(this.inputWrapper.container);\n for (var _i = 0, scrollableParentElements_1 = scrollableParentElements; _i < scrollableParentElements_1.length; _i++) {\n var element = scrollableParentElements_1[_i];\n EventHandler.remove(element, 'scroll', this.scrollHandler);\n }\n if (Browser.isDevice && this.isFilterLayout()) {\n removeClass([document.body, this.popupObj.element], dropDownListClasses.popupFullScreen);\n }\n if (this.isFilterLayout()) {\n if (!Browser.isDevice) {\n this.searchKeyModule.destroy();\n if (this.clearIconElement) {\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n }\n if (this.backIconElement) {\n EventHandler.remove(this.backIconElement, 'click', this.clickOnBackIcon);\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n if (!isNullOrUndefined(this.filterInput)) {\n EventHandler.remove(this.filterInput, 'input', this.onInput);\n EventHandler.remove(this.filterInput, 'keyup', this.onFilterUp);\n EventHandler.remove(this.filterInput, 'keydown', this.onFilterDown);\n EventHandler.remove(this.filterInput, 'blur', this.onBlurHandler);\n EventHandler.remove(this.filterInput, 'paste', this.pasteHandler);\n }\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n this.filterInput.removeAttribute('aria-activedescendant');\n }\n this.filterInput = null;\n }\n attributes(this.targetElement(), { 'aria-expanded': 'false' });\n this.inputElement.setAttribute('aria-expanded', 'false');\n this.targetElement().removeAttribute('aria-owns');\n this.targetElement().removeAttribute('aria-activedescendant');\n this.inputWrapper.container.classList.remove(dropDownListClasses.iconAnimation);\n if (this.isFiltering()) {\n this.actionCompleteData.isUpdated = false;\n }\n if (this.enableVirtualization) {\n if ((this.value == null || this.isTyped)) {\n this.viewPortInfo.endIndex = this.viewPortInfo && this.viewPortInfo.endIndex > 0 ? this.viewPortInfo.endIndex : this.itemCount;\n if (this.getModuleName() === 'autocomplete' || (this.getModuleName() === 'dropdownlist' && !isNullOrUndefined(this.typedString) && this.typedString != \"\") || (this.getModuleName() === 'combobox' && this.allowFiltering && !isNullOrUndefined(this.typedString) && this.typedString != \"\")) {\n this.checkAndResetCache();\n }\n }\n else if (this.getModuleName() === 'autocomplete') {\n this.checkAndResetCache();\n }\n if ((this.getModuleName() === 'dropdownlist' || this.getModuleName() === 'combobox') && !(this.skeletonCount == 0)) {\n this.getSkeletonCount(true);\n }\n }\n this.beforePopupOpen = false;\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var popupInstance = this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!isNullOrUndefined(_this.popupObj) &&\n !isNullOrUndefined(_this.popupObj.element.querySelector('.e-fixed-head'))) {\n var fixedHeader = _this.popupObj.element.querySelector('.e-fixed-head');\n fixedHeader.parentNode.removeChild(fixedHeader);\n _this.fixedHeaderElement = null;\n }\n if (!eventArgs.cancel) {\n if (_this.getModuleName() === 'autocomplete') {\n _this.rippleFun();\n }\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n }\n else {\n _this.destroyPopup();\n }\n }\n });\n if (Browser.isDevice && !eventArgs.cancel && this.popupObj.element.classList.contains('e-wide-popup')) {\n this.popupObj.element.classList.remove('e-wide-popup');\n }\n var dataSourceCount;\n if (this.dataSource instanceof DataManager) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.virtualGroupDataSource && this.virtualGroupDataSource.length ? this.virtualGroupDataSource.length : 0;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.enableVirtualization && this.isFiltering() && this.value != null && isFilterValue && this.totalItemCount !== dataSourceCount) {\n this.updateInitialData();\n this.checkAndResetCache();\n }\n };\n DropDownList.prototype.updateInitialData = function () {\n var currentData = this.selectData;\n var ulElement = this.renderItems(currentData, this.fields);\n this.list.scrollTop = 0;\n this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n if (this.getModuleName() === 'combobox') {\n this.typedString = \"\";\n }\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n if (this.dataSource instanceof DataManager) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.virtualGroupDataSource && this.virtualGroupDataSource.length ? this.virtualGroupDataSource.length : 0;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n if (this.getModuleName() !== 'autocomplete' && this.totalItemCount != 0 && this.totalItemCount > (this.itemCount * 2)) {\n this.getSkeletonCount();\n }\n this.UpdateSkeleton();\n this.listData = currentData;\n this.updateActionCompleteDataValues(ulElement, currentData);\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n };\n DropDownList.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.isFilterFocus = false;\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n };\n DropDownList.prototype.clickOnBackIcon = function () {\n this.hidePopup();\n this.focusIn();\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.render = function () {\n this.preselectedIndex = !isNullOrUndefined(this.index) ? this.index : null;\n if (this.element.tagName === 'INPUT') {\n this.inputElement = this.element;\n if (isNullOrUndefined(this.inputElement.getAttribute('role'))) {\n this.inputElement.setAttribute('role', 'combobox');\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('type'))) {\n this.inputElement.setAttribute('type', 'text');\n }\n this.inputElement.setAttribute('aria-expanded', 'false');\n }\n else {\n this.inputElement = this.createElement('input', { attrs: { role: 'combobox', type: 'text' } });\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n this.element.parentElement.insertBefore(this.inputElement, this.element);\n this.preventTabIndex(this.inputElement);\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n buttons: this.isPopupButton() ? [dropDownListClasses.icon] : null,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.getModuleName() === 'dropdownlist' ? true : this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n }\n }, this.createElement);\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.inputWrapper.container);\n }\n else {\n this.inputElement.parentElement.insertBefore(this.element, this.inputElement);\n }\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'aria-label': this.getModuleName(), 'tabindex': '-1', 'class': dropDownListClasses.hiddenElement }\n });\n prepend([this.hiddenElement], this.inputWrapper.container);\n this.validationAttribute(this.element, this.hiddenElement);\n this.setReadOnly();\n this.setFields();\n this.inputWrapper.container.style.width = formatUnit(this.width);\n this.inputWrapper.container.classList.add('e-ddl');\n if (this.floatLabelType === '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') && !this.readonly) {\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n }\n else if (this.getModuleName() === 'dropdownlist') {\n attributes(this.targetElement(), { 'aria-label': this.getModuleName() });\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n this.inputElement.setAttribute('aria-expanded', 'false');\n this.inputElement.setAttribute('aria-controls', this.element.id + '_popups');\n }\n attributes(this.targetElement(), this.getAriaAttributes());\n this.updateDataAttribute(this.htmlAttributes);\n this.setHTMLAttributes();\n if (this.targetElement() === this.inputElement) {\n this.inputElement.removeAttribute('aria-labelledby');\n }\n if (this.value !== null || this.activeIndex !== null || this.text !== null) {\n if (this.enableVirtualization) {\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering);\n if (this.index !== null) {\n this.activeIndex = this.index + this.skeletonCount;\n }\n }\n this.initValue();\n this.selectedValueInfo = this.viewPortInfo;\n if (this.enableVirtualization) {\n this.activeIndex = this.activeIndex + this.skeletonCount;\n }\n }\n else if (this.element.tagName === 'SELECT' && this.element.options[0]) {\n var selectElement = this.element;\n this.value = this.allowObjectBinding ? this.getDataByValue(selectElement.options[selectElement.selectedIndex].value) : selectElement.options[selectElement.selectedIndex].value;\n this.text = isNullOrUndefined(this.value) ? null : selectElement.options[selectElement.selectedIndex].textContent;\n this.initValue();\n }\n this.setEnabled();\n this.preventTabIndex(this.element);\n if (!this.enabled) {\n this.targetElement().tabIndex = -1;\n }\n this.initial = false;\n this.element.style.opacity = '';\n this.inputElement.onselect = function (e) {\n e.stopImmediatePropagation();\n };\n this.inputElement.onchange = function (e) {\n e.stopImmediatePropagation();\n };\n if (this.element.hasAttribute('autofocus')) {\n this.focusIn();\n }\n if (!isNullOrUndefined(this.text)) {\n this.inputElement.setAttribute('value', this.text);\n }\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n var floatLabelElement = this.inputWrapper.container.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(this.element.id) && this.element.id !== '' && !isNullOrUndefined(floatLabelElement)) {\n floatLabelElement.id = 'label_' + this.element.id.replace(/ /g, '_');\n attributes(this.inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n this.renderComplete();\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n if (this.enableVirtualization) {\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering);\n }\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.viewPortInfo.startIndex > 0 ? this.viewPortInfo.endIndex : this.itemCount;\n };\n DropDownList.prototype.getListHeight = function () {\n var listParent = this.createElement('div', {\n className: 'e-dropdownbase'\n });\n var item = this.createElement('li', {\n className: 'e-list-item'\n });\n var listParentHeight = formatUnit(this.popupHeight);\n listParent.style.height = (parseInt(listParentHeight, 10)).toString() + 'px';\n listParent.appendChild(item);\n document.body.appendChild(listParent);\n this.virtualListHeight = listParent.getBoundingClientRect().height;\n var listItemHeight = Math.ceil(item.getBoundingClientRect().height);\n listParent.remove();\n return listItemHeight;\n };\n DropDownList.prototype.setFooterTemplate = function (popupEle) {\n var compiledString;\n if (this.footer) {\n if (this.isReact && typeof this.footerTemplate === 'function') {\n this.clearTemplate(['footerTemplate']);\n }\n else {\n this.footer.innerHTML = '';\n }\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], dropDownListClasses.footer);\n }\n var footercheck = this.dropdownCompiler(this.footerTemplate);\n if (typeof this.footerTemplate !== 'function' && footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var footerCompTemp = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (footerCompTemp && footerCompTemp.length > 0) {\n append(footerCompTemp, this.footer);\n }\n append([this.footer], popupEle);\n };\n DropDownList.prototype.setHeaderTemplate = function (popupEle) {\n var compiledString;\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], dropDownListClasses.header);\n }\n var headercheck = this.dropdownCompiler(this.headerTemplate);\n if (typeof this.headerTemplate !== 'function' && headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var headerCompTemp = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (headerCompTemp && headerCompTemp.length) {\n append(headerCompTemp, this.header);\n }\n var contentEle = popupEle.querySelector('div.e-content');\n popupEle.insertBefore(this.header, contentEle);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @returns {void}\n */\n DropDownList.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\n };\n DropDownList.prototype.setOldText = function (text) {\n this.text = text;\n };\n DropDownList.prototype.setOldValue = function (value) {\n this.value = value;\n };\n DropDownList.prototype.refreshPopup = function () {\n if (!isNullOrUndefined(this.popupObj) && document.body.contains(this.popupObj.element) &&\n ((this.allowFiltering && !(Browser.isDevice && this.isFilterLayout())) || this.getModuleName() === 'autocomplete')) {\n removeClass([this.popupObj.element], 'e-popup-close');\n this.popupObj.refreshPosition(this.inputWrapper.container);\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.checkData = function (newProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource)) && this.itemTemplate && this.allowFiltering &&\n !(this.isListSearched && (newProp.dataSource instanceof DataManager))) {\n this.list = null;\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n }\n this.isListSearched = false;\n var isChangeValue = Object.keys(newProp).indexOf('value') !== -1 && isNullOrUndefined(newProp.value);\n var isChangeText = Object.keys(newProp).indexOf('text') !== -1 && isNullOrUndefined(newProp.text);\n if (this.getModuleName() !== 'autocomplete' && this.allowFiltering && (isChangeValue || isChangeText)) {\n this.itemData = null;\n }\n if (this.allowFiltering && newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))) {\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n this.actionData = this.actionCompleteData;\n }\n else if (this.allowFiltering && newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n this.actionCompleteData = this.getModuleName() === 'combobox' ?\n { ulElement: null, list: null, isUpdated: false } : this.actionCompleteData;\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.updateDataSource = function (props, oldProps) {\n if (this.inputElement.value !== '' || (!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0)))) {\n this.clearAll(null, props);\n }\n if ((this.fields.groupBy && props.fields) && !this.isGroupChecking && this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (!(!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0))) || ((props.dataSource instanceof DataManager) || (!isNullOrUndefined(props) && Array.isArray(props.dataSource) && !isNullOrUndefined(oldProps) && Array.isArray(oldProps.dataSource) && props.dataSource.length !== oldProps.dataSource.length))) {\n this.typedString = '';\n this.resetList(this.dataSource);\n }\n if (!this.isCustomFilter && !this.isFilterFocus && document.activeElement !== this.filterInput) {\n this.checkCustomValue();\n }\n };\n DropDownList.prototype.checkCustomValue = function () {\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n this.itemData = this.getDataByValue(currentValue);\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.itemData : dataItem.value;\n this.setProperties({ 'text': dataItem.text, 'value': value });\n };\n DropDownList.prototype.updateInputFields = function () {\n if (this.getModuleName() === 'dropdownlist') {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @private\n * @param {DropDownListModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownListModel} oldProp - Returns the previous previous value of the component.\n * @returns {void}\n */\n DropDownList.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!isNullOrUndefined(newProp.dataSource) && !this.isTouched && (isNullOrUndefined(newProp.value) && isNullOrUndefined(newProp.index)) && !isNullOrUndefined(this.preselectedIndex)) {\n newProp.index = this.preselectedIndex;\n }\n if (!isNullOrUndefined(newProp.value) || !isNullOrUndefined(newProp.index)) {\n this.isTouched = true;\n }\n if (this.getModuleName() === 'dropdownlist') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n var _loop_1 = function (prop) {\n switch (prop) {\n case 'query':\n case 'dataSource':\n this_1.getSkeletonCount();\n this_1.checkAndResetCache();\n break;\n case 'htmlAttributes':\n this_1.setHTMLAttributes();\n break;\n case 'width':\n this_1.setEleWidth(newProp.width);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this_1.inputElement);\n break;\n case 'filterBarPlaceholder':\n if (this_1.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this_1.filterInput);\n }\n break;\n case 'readonly':\n if (this_1.getModuleName() !== 'dropdownlist') {\n Input.setReadonly(newProp.readonly, this_1.inputElement);\n }\n this_1.setReadOnly();\n break;\n case 'cssClass':\n this_1.setCssClass(newProp.cssClass, oldProp.cssClass);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'enableRtl':\n this_1.setEnableRtl();\n break;\n case 'enabled':\n this_1.setEnable();\n break;\n case 'text':\n if (newProp.text === null) {\n this_1.clearAll();\n break;\n }\n if (this_1.enableVirtualization) {\n this_1.updateValues();\n this_1.updateInputFields();\n this_1.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender) {\n var li = this_1.getElementByText(newProp.text);\n if (!this_1.checkValidLi(li)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.text, oldProp.text, 'text');\n }\n else if (newProp.text && this_1.dataSource instanceof DataManager) {\n var listLength_1 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.text) ? this_1.fields.value : this_1.fields.text;\n this_1.typedString = '';\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', newProp.text)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_1);\n _this.updateValues();\n }\n else {\n _this.setOldText(oldProp.text);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldText(oldProp.text);\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'value':\n if (newProp.value === null) {\n this_1.clearAll();\n break;\n }\n if (this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) && !isNullOrUndefined(oldProp.value) && this_1.isObjectInArray(newProp.value, [oldProp.value])) {\n return { value: void 0 };\n }\n if (this_1.enableVirtualization) {\n this_1.updateValues();\n this_1.updateInputFields();\n this_1.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n this_1.preventChange = this_1.isAngular && this_1.preventChange ? !this_1.preventChange : this_1.preventChange;\n break;\n }\n this_1.notify('beforeValueChange', { newProp: newProp }); // gird component value type change\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender) {\n var value = this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) ? getValue((this_1.fields.value) ? this_1.fields.value : '', newProp.value) : newProp.value;\n var item = this_1.getElementByValue(value);\n if (!this_1.checkValidLi(item)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.value, oldProp.value, 'value');\n }\n else if (newProp.value && this_1.dataSource instanceof DataManager) {\n var listLength_2 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.value) ? this_1.fields.text : this_1.fields.value;\n this_1.typedString = '';\n var value_7 = this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) ? getValue(checkField, newProp.value) : newProp.value;\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', value_7)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_2);\n _this.updateValues();\n }\n else {\n _this.setOldValue(oldProp.value);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldValue(oldProp.value);\n }\n }\n this_1.updateInputFields();\n this_1.preventChange = this_1.isAngular && this_1.preventChange ? !this_1.preventChange : this_1.preventChange;\n }\n break;\n case 'index':\n if (newProp.index === null) {\n this_1.clearAll();\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender && this_1.liCollections) {\n var element = this_1.liCollections[newProp.index];\n if (!this_1.checkValidLi(element)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.index, oldProp.index, 'index');\n }\n else {\n this_1.index = oldProp.index;\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'footerTemplate':\n if (this_1.popupObj) {\n this_1.setFooterTemplate(this_1.popupObj.element);\n }\n break;\n case 'headerTemplate':\n if (this_1.popupObj) {\n this_1.setHeaderTemplate(this_1.popupObj.element);\n }\n break;\n case 'valueTemplate':\n if (!isNullOrUndefined(this_1.itemData) && this_1.valueTemplate !== null) {\n this_1.setValueTemplate();\n }\n break;\n case 'allowFiltering':\n if (this_1.allowFiltering) {\n this_1.actionCompleteData = {\n ulElement: this_1.ulElement,\n list: this_1.listData, isUpdated: true\n };\n this_1.actionData = this_1.actionCompleteData;\n this_1.updateSelectElementData(this_1.allowFiltering);\n }\n break;\n case 'floatLabelType':\n Input.removeFloating(this_1.inputWrapper);\n Input.addFloating(this_1.inputElement, newProp.floatLabelType, this_1.placeholder, this_1.createElement);\n if (!isNullOrUndefined(this_1.inputWrapper.buttons[0]) && this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0] && this_1.floatLabelType !== 'Never') {\n this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'showClearButton':\n if (!this_1.inputWrapper.clearButton) {\n Input.setClearButton(newProp.showClearButton, this_1.inputElement, this_1.inputWrapper, null, this_1.createElement);\n this_1.bindClearEvent();\n }\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var ddlProps = this_1.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this_1, ddlProps.newProperty, ddlProps.oldProperty);\n }\n break;\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var state_1 = _loop_1(prop);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n };\n DropDownList.prototype.checkValidLi = function (element) {\n if (this.isValidLI(element)) {\n this.setSelection(element, null);\n return true;\n }\n return false;\n };\n DropDownList.prototype.setSelectionData = function (newProp, oldProp, prop) {\n var _this = this;\n var li;\n this.updateListValues = function () {\n if (prop === 'text') {\n li = _this.getElementByText(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldText(oldProp);\n }\n }\n else if (prop === 'value') {\n var fields = (_this.fields.value) ? _this.fields.value : '';\n var value = _this.allowObjectBinding && !isNullOrUndefined(newProp) ? getValue(fields, newProp) : newProp;\n li = _this.getElementByValue(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldValue(oldProp);\n }\n }\n else if (prop === 'index') {\n li = _this.liCollections[newProp];\n if (!_this.checkValidLi(li)) {\n _this.index = oldProp;\n }\n }\n };\n };\n DropDownList.prototype.updatePopupState = function () {\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.showPopup();\n }\n };\n DropDownList.prototype.setReadOnly = function () {\n if (this.readonly) {\n addClass([this.inputWrapper.container], ['e-readonly']);\n }\n else {\n removeClass([this.inputWrapper.container], ['e-readonly']);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.setInputValue = function (newProp, oldProp) {\n };\n DropDownList.prototype.setCssClass = function (newClass, oldClass) {\n if (!isNullOrUndefined(oldClass)) {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newClass)) {\n newClass = (newClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newClass, [this.inputWrapper.container], oldClass);\n if (this.popupObj) {\n Input.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownList.prototype.getModuleName = function () {\n return 'dropdownlist';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n */\n DropDownList.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n if (this.isReact && this.getModuleName() === 'combobox' && this.itemTemplate && this.isCustomFilter && this.isAddNewItemTemplate) {\n this.renderList();\n this.isAddNewItemTemplate = false;\n }\n if (this.isFiltering() && this.dataSource instanceof DataManager && (this.actionData.list !== this.actionCompleteData.list) &&\n this.actionData.list && this.actionData.ulElement) {\n this.actionCompleteData = this.actionData;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n if (this.isFiltering() && !this.isActive && this.actionCompleteData.list && this.actionCompleteData.list[0]) {\n this.isActive = true;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n else if (isNullOrUndefined(this.list) || !isUndefined(this.list) && (this.list.classList.contains(dropDownBaseClasses.noData) ||\n this.list.querySelectorAll('.' + dropDownBaseClasses.li).length <= 0)) {\n if (this.isReact && this.isFiltering() && this.itemTemplate != null) {\n this.isSecondClick = false;\n }\n this.renderList(e);\n }\n if (this.enableVirtualization && this.listData && this.listData.length) {\n if (!isNullOrUndefined(this.value) && (this.getModuleName() === 'dropdownlist' || this.getModuleName() === 'combobox')) {\n this.removeHover();\n }\n if (!this.beforePopupOpen) {\n this.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n }\n }\n if (this.beforePopupOpen) {\n this.invokeRenderPopup(e);\n }\n if (this.enableVirtualization && !this.allowFiltering && this.selectedValueInfo != null && this.selectedValueInfo.startIndex > 0 && this.value != null) {\n this.notify(\"dataProcessAsync\", {\n module: \"VirtualScroll\",\n isOpen: true,\n });\n }\n };\n DropDownList.prototype.invokeRenderPopup = function (e) {\n if (Browser.isDevice && this.isFilterLayout()) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_2 = this;\n window.onpopstate = function () {\n proxy_2.hidePopup();\n };\n history.pushState({}, '');\n }\n if (!isNullOrUndefined(this.list) && (!isNullOrUndefined(this.list.children[0]) ||\n this.list.classList.contains(dropDownBaseClasses.noData))) {\n this.renderPopup(e);\n }\n };\n DropDownList.prototype.renderHightSearch = function () {\n // update high light search\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in an open state.\n *\n * @returns {void}\n */\n DropDownList.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (this.isEscapeKey && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.inputElement)) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.isEscapeKey = false;\n if (!isNullOrUndefined(this.index)) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n this.selectedLI = this.liCollections[this.index] || element;\n if (this.selectedLI) {\n this.updateSelectedItem(this.selectedLI, null, true);\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n }\n }\n else {\n this.resetSelection();\n }\n }\n this.isVirtualTrackHeight = false;\n this.closePopup(0, e);\n var dataItem = this.getItemData();\n var isSelectVal = !isNullOrUndefined(this.selectedLI);\n if (isSelectVal && this.enableVirtualization && this.selectedLI.classList) {\n isSelectVal = this.selectedLI.classList.contains('e-active');\n }\n if (this.inputElement && this.inputElement.value.trim() === '' && !this.isInteracted && (this.isSelectCustom ||\n isSelectVal && this.inputElement.value !== dataItem.text)) {\n this.isSelectCustom = false;\n this.clearAll(e);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Sets the focus on the component for interaction.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusIn = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable)) {\n return;\n }\n var isFocused = false;\n if (this.preventFocus && Browser.isDevice) {\n this.inputWrapper.container.tabIndex = 1;\n this.inputWrapper.container.focus();\n this.preventFocus = false;\n isFocused = true;\n }\n if (!isFocused) {\n this.targetElement().focus();\n }\n addClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n this.onFocus(e);\n if (this.floatLabelType === '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 if (!this.enableVirtualization && (this.getModuleName() === 'combobox' || this.getModuleName() === 'autocomplete')) {\n this.isTyped = true;\n }\n this.hidePopup(e);\n if (this.targetElement()) {\n this.targetElement().blur();\n }\n removeClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n if (this.floatLabelType === '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 if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n resetIncrementalSearchValues(this.element.id);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n this.hidePopup();\n if (this.popupObj) {\n this.popupObj.hide();\n }\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n }\n if (this.element && !this.element.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n if (this.inputElement) {\n var attrArray = ['readonly', 'aria-disabled', 'placeholder', 'aria-labelledby',\n 'aria-expanded', 'autocomplete', 'aria-readonly', 'autocapitalize',\n 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-describedby', 'aria-label'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputElement.removeAttribute(attrArray[i]);\n }\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n this.inputElement.classList.remove('e-input');\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.element.style.display = 'block';\n if (this.inputWrapper.container.parentElement.tagName === this.getNgDirective()) {\n detach(this.inputWrapper.container);\n }\n else {\n this.inputWrapper.container.parentElement.insertBefore(this.element, this.inputWrapper.container);\n detach(this.inputWrapper.container);\n }\n this.hiddenElement = null;\n this.inputWrapper = null;\n this.keyboardModule = null;\n this.ulElement = null;\n this.list = null;\n this.popupObj = null;\n this.popupContentElement = null;\n this.rippleFun = null;\n this.selectedLI = null;\n this.liCollections = null;\n this.item = null;\n this.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.inputElement && !isNullOrUndefined(this.inputElement.onselect)) {\n this.inputElement.onselect = null;\n }\n Input.destroy({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n 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.initialRemoteRender = true;\n }\n this.renderList();\n }\n return this.ulElement ? _super.prototype.getItems.call(this) : [];\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownList.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n */\n DropDownList.prototype.clear = function () {\n this.value = null;\n };\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"width\", void 0);\n __decorate([\n Property(true)\n ], DropDownList.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('300px')\n ], DropDownList.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], DropDownList.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"readonly\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"allowObjectBinding\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], DropDownList.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"showClearButton\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"focus\", void 0);\n DropDownList = __decorate([\n NotifyPropertyChanges\n ], DropDownList);\n return DropDownList;\n}(DropDownBase));\nexport { DropDownList };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { selectAll, select, createElement, Base, detach } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined, EventHandler } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, Event, onIntlChange } from '@syncfusion/ej2-base';\nimport { Internationalization, L10n } from '@syncfusion/ej2-base';\n/**\n * global declarations\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport var regex = {\n /* eslint-disable no-useless-escape */\n EMAIL: new RegExp('^[A-Za-z0-9._%+-]{1,}@[A-Za-z0-9._%+-]{1,}([.]{1}[a-zA-Z0-9]{2,}' +\n '|[.]{1}[a-zA-Z0-9]{2,4}[.]{1}[a-zA-Z0-9]{2,4})$'),\n /* eslint-disable-next-line security/detect-unsafe-regex */\n URL: /^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/m,\n DATE_ISO: new RegExp('^([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$'),\n DIGITS: new RegExp('^[0-9]*$'),\n PHONE: new RegExp('^[+]?[0-9]{9,13}$'),\n CREDITCARD: new RegExp('^\\\\d{13,16}$')\n /* eslint-enable no-useless-escape */\n};\n/**\n * ErrorOption values\n *\n * @private\n */\nexport var ErrorOption;\n(function (ErrorOption) {\n /**\n * Defines the error message.\n */\n ErrorOption[ErrorOption[\"Message\"] = 0] = \"Message\";\n /**\n * Defines the error element type.\n */\n ErrorOption[ErrorOption[\"Label\"] = 1] = \"Label\";\n})(ErrorOption || (ErrorOption = {}));\n/**\n * FormValidator class enables you to validate the form fields based on your defined rules\n * ```html\n * \n * \n * \n * \n * \n * ```\n */\nvar FormValidator = /** @class */ (function (_super) {\n __extends(FormValidator, _super);\n /**\n * Initializes the FormValidator.\n *\n * @param {string | HTMLFormElement} element - Specifies the element to render as component.\n * @param {FormValidatorModel} options - Specifies the FormValidator model.\n * @private\n */\n function FormValidator(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.validated = [];\n _this.errorRules = [];\n _this.allowSubmit = false;\n _this.required = 'required';\n _this.infoElement = null;\n _this.inputElement = null;\n _this.selectQuery = 'input:not([type=reset]):not([type=button]), select, textarea';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.localyMessage = {};\n /**\n * Specifies the default messages for validation rules.\n *\n * @default { List of validation message }\n */\n _this.defaultMessages = {\n required: 'This field is required.',\n email: 'Please enter a valid email address.',\n url: 'Please enter a valid URL.',\n date: 'Please enter a valid date.',\n dateIso: 'Please enter a valid date ( ISO ).',\n creditcard: 'Please enter valid card number',\n number: 'Please enter a valid number.',\n digits: 'Please enter only digits.',\n maxLength: 'Please enter no more than {0} characters.',\n minLength: 'Please enter at least {0} characters.',\n rangeLength: 'Please enter a value between {0} and {1} characters long.',\n range: 'Please enter a value between {0} and {1}.',\n max: 'Please enter a value less than or equal to {0}.',\n min: 'Please enter a value greater than or equal to {0}.',\n regex: 'Please enter a correct value.',\n tel: 'Please enter a valid phone number.',\n pattern: 'Please enter a correct pattern value.',\n equalTo: 'Please enter the valid match text'\n };\n if (typeof _this.rules === 'undefined') {\n _this.rules = {};\n }\n _this.l10n = new L10n('formValidator', _this.defaultMessages, _this.locale);\n if (_this.locale) {\n _this.localeFunc();\n }\n onIntlChange.on('notifyExternalChange', _this.afterLocalization, _this);\n element = typeof element === 'string' ? select(element, document) : element;\n // Set novalidate to prevent default HTML5 form validation\n if (_this.element != null) {\n _this.element.setAttribute('novalidate', '');\n _this.inputElements = selectAll(_this.selectQuery, _this.element);\n _this.createHTML5Rules();\n _this.wireEvents();\n }\n else {\n return undefined;\n }\n return _this;\n }\n FormValidator_1 = FormValidator;\n /* eslint-enable @typescript-eslint/no-explicit-any */\n /**\n * Add validation rules to the corresponding input element based on `name` attribute.\n *\n * @param {string} name `name` of form field.\n * @param {Object} rules Validation rules for the corresponding element.\n * @returns {void}\n */\n FormValidator.prototype.addRules = function (name, rules) {\n if (name) {\n // eslint-disable-next-line no-prototype-builtins\n if (this.rules.hasOwnProperty(name)) {\n extend(this.rules[\"\" + name], rules, {});\n }\n else {\n this.rules[\"\" + name] = rules;\n }\n }\n };\n /**\n * Remove validation to the corresponding field based on name attribute.\n * When no parameter is passed, remove all the validations in the form.\n *\n * @param {string} name Input name attribute value.\n * @param {string[]} rules List of validation rules need to be remove from the corresponding element.\n * @returns {void}\n */\n FormValidator.prototype.removeRules = function (name, rules) {\n if (!name && !rules) {\n this.rules = {};\n }\n else if (this.rules[\"\" + name] && !rules) {\n delete this.rules[\"\" + name];\n }\n else if (!isNullOrUndefined(this.rules[\"\" + name] && rules)) {\n for (var i = 0; i < rules.length; i++) {\n delete this.rules[\"\" + name][rules[parseInt(i.toString())]];\n }\n }\n else {\n return;\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Validate the current form values using defined rules.\n * Returns `true` when the form is valid otherwise `false`\n *\n * @param {string} selected - Optional parameter to validate specified element.\n * @returns {boolean}\n */\n FormValidator.prototype.validate = function (selected) {\n var rules = Object.keys(this.rules);\n if (selected && rules.length) {\n this.validateRules(selected);\n //filter the selected element it don't have any valid input element\n return rules.indexOf(selected) !== -1 && this.errorRules.filter(function (data) {\n return data.name === selected;\n }).length === 0;\n }\n else {\n this.errorRules = [];\n for (var _i = 0, rules_1 = rules; _i < rules_1.length; _i++) {\n var name_1 = rules_1[_i];\n this.validateRules(name_1);\n }\n return this.errorRules.length === 0;\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Reset the value of all the fields in form.\n *\n * @returns {void}\n */\n FormValidator.prototype.reset = function () {\n this.element.reset();\n this.clearForm();\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Get input element by name.\n *\n * @param {string} name - Input element name attribute value.\n * @returns {HTMLInputElement}\n */\n FormValidator.prototype.getInputElement = function (name) {\n this.inputElement = (select('[name=\"' + name + '\"]', this.element));\n return this.inputElement;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Destroy the form validator object and error elements.\n *\n * @returns {void}\n */\n FormValidator.prototype.destroy = function () {\n this.reset();\n this.unwireEvents();\n this.rules = {};\n var elements = selectAll('.' + this.errorClass + ', .' + this.validClass, this.element);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element = elements_1[_i];\n detach(element);\n }\n _super.prototype.destroy.call(this);\n this.infoElement = null;\n onIntlChange.off('notifyExternalChange', this.afterLocalization);\n };\n /**\n * @param {FormValidatorModel} newProp - Returns the dynamic property value of the component.\n * @param {FormValidatorModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FormValidator.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'locale':\n this.localeFunc();\n break;\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n FormValidator.prototype.localeFunc = function () {\n for (var _i = 0, _a = Object.keys(this.defaultMessages); _i < _a.length; _i++) {\n var key = _a[_i];\n this.l10n.setLocale(this.locale);\n var value = this.l10n.getConstant(key);\n this.localyMessage[\"\" + key] = value;\n }\n };\n /**\n * @private\n * @returns {string} - Returns the component name.\n */\n FormValidator.prototype.getModuleName = function () {\n return 'formvalidator';\n };\n /**\n * @param {any} args - Specifies the culture name.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n FormValidator.prototype.afterLocalization = function (args) {\n this.locale = args.locale;\n this.localeFunc();\n };\n /**\n * Allows you to refresh the form validator base events to the elements inside the form.\n *\n * @returns {void}\n */\n FormValidator.prototype.refresh = function () {\n this.unwireEvents();\n this.inputElements = selectAll(this.selectQuery, this.element);\n this.wireEvents();\n };\n FormValidator.prototype.clearForm = function () {\n this.errorRules = [];\n this.validated = [];\n var elements = selectAll(this.selectQuery, this.element);\n for (var _i = 0, elements_2 = elements; _i < elements_2.length; _i++) {\n var element = elements_2[_i];\n var input = element;\n input.removeAttribute('aria-invalid');\n var inputParent = input.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (input.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.remove(this.errorClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.remove(this.errorClass);\n }\n else {\n input.classList.remove(this.errorClass);\n }\n if (input.name.length > 0) {\n this.getInputElement(input.name);\n this.getErrorElement(input.name);\n this.hideMessage(input.name);\n }\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (input.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.remove(this.validClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.remove(this.validClass);\n }\n else {\n input.classList.remove(this.validClass);\n }\n }\n };\n FormValidator.prototype.createHTML5Rules = function () {\n var defRules = ['required', 'validateHidden', 'regex', 'rangeLength', 'maxLength', 'minLength', 'dateIso', 'digits',\n 'pattern', 'data-val-required', 'type', 'data-validation', 'min', 'max', 'range', 'equalTo', 'data-val-minlength-min',\n 'data-val-equalto-other', 'data-val-maxlength-max', 'data-val-range-min', 'data-val-regex-pattern', 'data-val-length-max',\n 'data-val-creditcard', 'data-val-phone'];\n var acceptedTypes = ['hidden', 'email', 'url', 'date', 'number', 'tel'];\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n // Default attribute rules\n var allRule = {};\n for (var _b = 0, defRules_1 = defRules; _b < defRules_1.length; _b++) {\n var rule = defRules_1[_b];\n if (input.getAttribute(rule) !== null) {\n switch (rule) {\n case 'required':\n this.defRule(input, allRule, rule, input.required);\n break;\n case 'data-validation':\n rule = input.getAttribute(rule);\n this.defRule(input, allRule, rule, true);\n break;\n case 'type':\n if (acceptedTypes.indexOf(input.type) !== -1) {\n this.defRule(input, allRule, input.type, true);\n }\n break;\n case 'rangeLength':\n case 'range':\n this.defRule(input, allRule, rule, JSON.parse(input.getAttribute(rule)));\n break;\n case 'equalTo':\n {\n var id = input.getAttribute(rule);\n this.defRule(input, allRule, rule, id);\n }\n break;\n default:\n if (input.getAttribute('data-val') === 'true') {\n this.annotationRule(input, allRule, rule, input.getAttribute(rule));\n }\n else {\n this.defRule(input, allRule, rule, input.getAttribute(rule));\n }\n }\n }\n }\n //adding pattern type validation\n if (Object.keys(allRule).length !== 0) {\n this.addRules(input.name, allRule);\n }\n }\n };\n FormValidator.prototype.annotationRule = function (input, ruleCon, ruleName, value) {\n var annotationRule = ruleName.split('-');\n var rulesList = ['required', 'creditcard', 'phone', 'maxlength', 'minlength', 'range', 'regex', 'equalto'];\n var ruleFirstName = annotationRule[annotationRule.length - 1];\n var ruleSecondName = annotationRule[annotationRule.length - 2];\n if (rulesList.indexOf(ruleFirstName) !== -1) {\n switch (ruleFirstName) {\n case 'required':\n this.defRule(input, ruleCon, 'required', value);\n break;\n case 'creditcard':\n this.defRule(input, ruleCon, 'creditcard', value);\n break;\n case 'phone':\n this.defRule(input, ruleCon, 'tel', value);\n break;\n }\n }\n else if (rulesList.indexOf(ruleSecondName) !== -1) {\n switch (ruleSecondName) {\n case 'maxlength':\n this.defRule(input, ruleCon, 'maxLength', value);\n break;\n case 'minlength':\n this.defRule(input, ruleCon, 'minLength', value);\n break;\n case 'range':\n {\n var minvalue = input.getAttribute('data-val-range-min');\n var maxvalue = input.getAttribute('data-val-range-max');\n this.defRule(input, ruleCon, 'range', [minvalue, maxvalue]);\n }\n break;\n case 'equalto':\n {\n var id = input.getAttribute(ruleName).split('.');\n this.defRule(input, ruleCon, 'equalTo', id[id.length - 1]);\n }\n break;\n case 'regex':\n this.defRule(input, ruleCon, 'regex', value);\n break;\n }\n }\n };\n FormValidator.prototype.defRule = function (input, ruleCon, ruleName, value) {\n var message = input.getAttribute('data-' + ruleName + '-message');\n var annotationMessage = input.getAttribute('data-val-' + ruleName);\n var customMessage;\n if (this.rules[input.name] && ruleName !== 'validateHidden' && ruleName !== 'hidden') {\n this.getInputElement(input.name);\n customMessage = this.getErrorMessage(this.rules[input.name][\"\" + ruleName], ruleName);\n }\n if (message) {\n value = [value, message];\n }\n else if (annotationMessage) {\n value = [value, annotationMessage];\n }\n else if (customMessage) {\n value = [value, customMessage];\n }\n ruleCon[\"\" + ruleName] = value;\n };\n // Wire events to the form elements\n FormValidator.prototype.wireEvents = function () {\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n if (FormValidator_1.isCheckable(input)) {\n EventHandler.add(input, 'click', this.clickHandler, this);\n }\n else if (input.tagName === 'SELECT') {\n EventHandler.add(input, 'change', this.changeHandler, this);\n }\n else {\n EventHandler.add(input, 'focusout', this.focusOutHandler, this);\n EventHandler.add(input, 'keyup', this.keyUpHandler, this);\n }\n }\n EventHandler.add(this.element, 'submit', this.submitHandler, this);\n EventHandler.add(this.element, 'reset', this.resetHandler, this);\n };\n // UnWire events to the form elements\n FormValidator.prototype.unwireEvents = function () {\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n EventHandler.clearEvents(input);\n }\n EventHandler.remove(this.element, 'submit', this.submitHandler);\n EventHandler.remove(this.element, 'reset', this.resetHandler);\n };\n // Handle input element focusout event\n FormValidator.prototype.focusOutHandler = function (e) {\n this.trigger('focusout', e);\n //FormValidator.triggerCallback(this.focusout, e);\n var element = e.target;\n if (this.rules[element.name]) {\n if (this.rules[element.name][this.required] || element.value.length > 0) {\n this.validate(element.name);\n }\n else if (this.validated.indexOf(element.name) === -1) {\n this.validated.push(element.name);\n }\n }\n };\n // Handle input element keyup event\n FormValidator.prototype.keyUpHandler = function (e) {\n this.trigger('keyup', e);\n var element = e.target;\n // List of keys need to prevent while validation\n var excludeKeys = [16, 17, 18, 20, 35, 36, 37, 38, 39, 40, 45, 144, 225];\n if (e.which === 9 && (!this.rules[element.name] || (this.rules[element.name] && !this.rules[element.name][this.required]))) {\n return;\n }\n if (this.validated.indexOf(element.name) !== -1 && this.rules[element.name] && excludeKeys.indexOf(e.which) === -1) {\n this.validate(element.name);\n }\n };\n // Handle input click event\n FormValidator.prototype.clickHandler = function (e) {\n this.trigger('click', e);\n var element = e.target;\n // If element type is not submit allow validation\n if (element.type !== 'submit') {\n this.validate(element.name);\n }\n else if (element.getAttribute('formnovalidate') !== null) {\n // Prevent form validation, if submit button has formnovalidate attribute\n this.allowSubmit = true;\n }\n };\n // Handle input change event\n FormValidator.prototype.changeHandler = function (e) {\n this.trigger('change', e);\n var element = e.target;\n this.validate(element.name);\n };\n // Handle form submit event\n FormValidator.prototype.submitHandler = function (e) {\n this.trigger('submit', e);\n //FormValidator.triggerCallback(this.submit, e);\n // Prevent form submit if validation failed\n if (!this.allowSubmit && !this.validate()) {\n e.preventDefault();\n }\n else {\n this.allowSubmit = false;\n }\n };\n // Handle form reset\n FormValidator.prototype.resetHandler = function () {\n this.clearForm();\n };\n // Validate each rule based on input element name\n FormValidator.prototype.validateRules = function (name) {\n if (!this.rules[\"\" + name]) {\n return;\n }\n var rules = Object.keys(this.rules[\"\" + name]);\n var hiddenType = false;\n var validateHiddenType = false;\n var vhPos = rules.indexOf('validateHidden');\n var hPos = rules.indexOf('hidden');\n this.getInputElement(name);\n if (hPos !== -1) {\n hiddenType = true;\n }\n if (vhPos !== -1) {\n validateHiddenType = true;\n }\n if (!hiddenType || (hiddenType && validateHiddenType)) {\n if (vhPos !== -1) {\n rules.splice(vhPos, 1);\n }\n if (hPos !== -1) {\n rules.splice((hPos - 1), 1);\n }\n this.getErrorElement(name);\n for (var _i = 0, rules_2 = rules; _i < rules_2.length; _i++) {\n var rule = rules_2[_i];\n var errorMessage = this.getErrorMessage(this.rules[\"\" + name][\"\" + rule], rule);\n var errorRule = { name: name, message: errorMessage };\n var eventArgs = {\n inputName: name,\n element: this.inputElement,\n message: errorMessage\n };\n if (!this.isValid(name, rule) && !this.inputElement.classList.contains(this.ignore)) {\n this.removeErrorRules(name);\n this.errorRules.push(errorRule);\n // Set aria attributes to invalid elements\n this.inputElement.setAttribute('aria-invalid', 'true');\n this.inputElement.setAttribute('aria-describedby', this.inputElement.id + '-info');\n var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (this.inputElement.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.add(this.errorClass);\n inputParent.classList.remove(this.validClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.add(this.errorClass);\n grandParent.classList.remove(this.validClass);\n }\n else {\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n }\n if (!this.infoElement) {\n this.createErrorElement(name, errorRule.message, this.inputElement);\n }\n else {\n this.showMessage(errorRule);\n }\n eventArgs.errorElement = this.infoElement;\n eventArgs.status = 'failure';\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (this.inputElement.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.add(this.errorClass);\n inputParent.classList.remove(this.validClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.add(this.errorClass);\n grandParent.classList.remove(this.validClass);\n }\n else {\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n }\n this.optionalValidationStatus(name, eventArgs);\n this.trigger('validationComplete', eventArgs);\n // Set aria-required to required rule elements\n if (rule === 'required') {\n this.inputElement.setAttribute('aria-required', 'true');\n }\n break;\n }\n else {\n this.hideMessage(name);\n eventArgs.status = 'success';\n this.trigger('validationComplete', eventArgs);\n }\n }\n }\n else {\n return;\n }\n };\n // Update the optional validation status\n FormValidator.prototype.optionalValidationStatus = function (name, refer) {\n if (!this.rules[\"\" + name][this.required] && !this.inputElement.value.length && !isNullOrUndefined(this.infoElement)) {\n this.infoElement.innerHTML = this.inputElement.value;\n this.infoElement.setAttribute('aria-invalid', 'false');\n refer.status = '';\n this.hideMessage(name);\n }\n };\n // Check the input element whether it's value satisfy the validation rule or not\n FormValidator.prototype.isValid = function (name, rule) {\n var params = this.rules[\"\" + name][\"\" + rule];\n var param = (params instanceof Array && typeof params[1] === 'string') ? params[0] : params;\n var currentRule = this.rules[\"\" + name][\"\" + rule];\n var args = { value: this.inputElement.value, param: param, element: this.inputElement, formElement: this.element };\n this.trigger('validationBegin', args);\n if (!args.param && rule === 'required') {\n return true;\n }\n if (currentRule && typeof currentRule[0] === 'function') {\n var fn = currentRule[0];\n return fn.call(this, { element: this.inputElement, value: this.inputElement.value });\n }\n else if (FormValidator_1.isCheckable(this.inputElement)) {\n if (rule !== 'required') {\n return true;\n }\n return selectAll('input[name=\"' + name + '\"]:checked', this.element).length > 0;\n }\n else {\n return FormValidator_1.checkValidator[\"\" + rule](args);\n }\n };\n // Return default error message or custom error message\n FormValidator.prototype.getErrorMessage = function (ruleValue, rule) {\n var message = this.inputElement.getAttribute('data-' + rule + '-message') ?\n this.inputElement.getAttribute('data-' + rule + '-message') :\n (ruleValue instanceof Array && typeof ruleValue[1] === 'string') ? ruleValue[1] :\n (Object.keys(this.localyMessage).length !== 0) ? this.localyMessage[\"\" + rule] : this.defaultMessages[\"\" + rule];\n var formats = message.match(/{(\\d)}/g);\n if (!isNullOrUndefined(formats)) {\n for (var i = 0; i < formats.length; i++) {\n var value = ruleValue instanceof Array ? ruleValue[parseInt(i.toString())] : ruleValue;\n message = message.replace(formats[parseInt(i.toString())], value);\n }\n }\n return message;\n };\n // Create error element based on name and error message\n FormValidator.prototype.createErrorElement = function (name, message, input) {\n var errorElement = createElement(this.errorElement, {\n className: this.errorClass,\n innerHTML: message,\n attrs: { for: name }\n });\n // Create message design if errorOption is message\n if (this.errorOption === ErrorOption.Message) {\n errorElement.classList.remove(this.errorClass);\n errorElement.classList.add('e-message');\n errorElement = createElement(this.errorContainer, { className: this.errorClass, innerHTML: errorElement.outerHTML });\n }\n errorElement.id = this.inputElement.name + '-info';\n // Append error message into MVC error message element\n if (this.element.querySelector('[data-valmsg-for=\"' + input.id + '\"]')) {\n this.element.querySelector('[data-valmsg-for=\"' + input.id + '\"]').appendChild(errorElement);\n }\n else if (input.hasAttribute('data-msg-containerid') === true) {\n // Append error message into custom div element\n var containerId = input.getAttribute('data-msg-containerid');\n var divElement = select('#' + containerId, this.element);\n divElement.appendChild(errorElement);\n }\n else if (this.customPlacement != null) {\n // Call custom placement function if customPlacement is not null\n this.customPlacement.call(this, this.inputElement, errorElement);\n }\n else {\n var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper')) {\n grandParent.insertBefore(errorElement, inputParent.nextSibling);\n }\n else if (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper')) {\n grandParent.parentElement.insertBefore(errorElement, grandParent.nextSibling);\n }\n else {\n inputParent.insertBefore(errorElement, this.inputElement.nextSibling);\n }\n }\n errorElement.style.display = 'block';\n this.getErrorElement(name);\n this.validated.push(name);\n this.checkRequired(name);\n };\n // Get error element by name\n FormValidator.prototype.getErrorElement = function (name) {\n this.infoElement = select(this.errorElement + '.' + this.errorClass, this.inputElement.parentElement);\n if (!this.infoElement) {\n this.infoElement = select(this.errorElement + '.' + this.errorClass + '[for=\"' + name + '\"]', this.element);\n }\n return this.infoElement;\n };\n // Remove existing rule from errorRules object\n FormValidator.prototype.removeErrorRules = function (name) {\n for (var i = 0; i < this.errorRules.length; i++) {\n var rule = this.errorRules[parseInt(i.toString())];\n if (rule.name === name) {\n this.errorRules.splice(i, 1);\n }\n }\n };\n // Show error message to the input element\n FormValidator.prototype.showMessage = function (errorRule) {\n this.infoElement.style.display = 'block';\n this.infoElement.innerHTML = errorRule.message;\n this.checkRequired(errorRule.name);\n };\n // Hide error message based on input name\n FormValidator.prototype.hideMessage = function (name) {\n if (this.infoElement) {\n this.infoElement.style.display = 'none';\n this.removeErrorRules(name);\n var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (this.inputElement.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.add(this.validClass);\n inputParent.classList.remove(this.errorClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.add(this.validClass);\n grandParent.classList.remove(this.errorClass);\n }\n else {\n this.inputElement.classList.add(this.validClass);\n this.inputElement.classList.remove(this.errorClass);\n }\n this.inputElement.setAttribute('aria-invalid', 'false');\n }\n };\n // Check whether the input element have required rule and its value is not empty\n FormValidator.prototype.checkRequired = function (name) {\n if (!this.rules[\"\" + name][this.required] && !this.inputElement.value.length && !isNullOrUndefined(this.infoElement)) {\n this.infoElement.innerHTML = this.inputElement.value;\n this.infoElement.setAttribute('aria-invalid', 'false');\n this.hideMessage(name);\n }\n };\n // Return boolean result if the input have chekcable or submit types\n FormValidator.isCheckable = function (input) {\n var inputType = input.getAttribute('type');\n return inputType && (inputType === 'checkbox' || inputType === 'radio' || inputType === 'submit');\n };\n var FormValidator_1;\n // List of function to validate the rules\n FormValidator.checkValidator = {\n required: function (option) {\n return !isNaN(Date.parse(option.value)) ? !isNaN(new Date(option.value).getTime()) : option.value.toString().length > 0;\n },\n email: function (option) {\n return regex.EMAIL.test(option.value);\n },\n url: function (option) {\n return regex.URL.test(option.value);\n },\n dateIso: function (option) {\n return regex.DATE_ISO.test(option.value);\n },\n tel: function (option) {\n return regex.PHONE.test(option.value);\n },\n creditcard: function (option) {\n return regex.CREDITCARD.test(option.value);\n },\n number: function (option) {\n return !isNaN(Number(option.value)) && option.value.indexOf(' ') === -1;\n },\n digits: function (option) {\n return regex.DIGITS.test(option.value);\n },\n maxLength: function (option) {\n return option.value.length <= option.param;\n },\n minLength: function (option) {\n return option.value.length >= option.param;\n },\n rangeLength: function (option) {\n var param = option.param;\n return option.value.length >= param[0] && option.value.length <= param[1];\n },\n range: function (option) {\n var param = option.param;\n return !isNaN(Number(option.value)) && Number(option.value) >= param[0] && Number(option.value) <= param[1];\n },\n date: function (option) {\n if (!isNullOrUndefined(option.param) && (typeof (option.param) === 'string' && option.param !== '')) {\n var globalize = new Internationalization;\n var dateOptions = { format: option.param.toString(), type: 'dateTime', skeleton: 'yMd' };\n var dateValue = globalize.parseDate(option.value, dateOptions);\n return (!isNullOrUndefined(dateValue) && dateValue instanceof Date && !isNaN(+dateValue));\n }\n else {\n return !isNaN(new Date(option.value).getTime());\n }\n },\n max: function (option) {\n if (!isNaN(Number(option.value))) {\n // Maximum rule validation for number\n return +option.value <= option.param;\n }\n // Maximum rule validation for date\n return new Date(option.value).getTime() <= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n },\n min: function (option) {\n if (!isNaN(Number(option.value))) {\n // Minimum rule validation for number\n return +option.value >= option.param;\n }\n else if ((option.value).indexOf(',') !== -1) {\n var uNum = (option.value).replace(/,/g, '');\n return parseFloat(uNum) >= option.param;\n }\n else {\n // Minimum rule validation for date\n return new Date(option.value).getTime() >= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n }\n },\n regex: function (option) {\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n return new RegExp(option.param).test(option.value);\n },\n equalTo: function (option) {\n var compareTo = option.formElement.querySelector('#' + option.param);\n option.param = compareTo.value;\n return option.param === option.value;\n }\n };\n __decorate([\n Property('')\n ], FormValidator.prototype, \"locale\", void 0);\n __decorate([\n Property('e-hidden')\n ], FormValidator.prototype, \"ignore\", void 0);\n __decorate([\n Property()\n ], FormValidator.prototype, \"rules\", void 0);\n __decorate([\n Property('e-error')\n ], FormValidator.prototype, \"errorClass\", void 0);\n __decorate([\n Property('e-valid')\n ], FormValidator.prototype, \"validClass\", void 0);\n __decorate([\n Property('label')\n ], FormValidator.prototype, \"errorElement\", void 0);\n __decorate([\n Property('div')\n ], FormValidator.prototype, \"errorContainer\", void 0);\n __decorate([\n Property(ErrorOption.Label)\n ], FormValidator.prototype, \"errorOption\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"focusout\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"keyup\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"submit\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"validationBegin\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"validationComplete\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"customPlacement\", void 0);\n FormValidator = FormValidator_1 = __decorate([\n NotifyPropertyChanges\n ], FormValidator);\n return FormValidator;\n}(Base));\nexport { FormValidator };\n","/* eslint-disable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\nimport { createElement, attributes, addClass, removeClass, detach, classList } from '@syncfusion/ej2-base';\nimport { closest, formatUnit, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nvar CLASSNAMES = {\n RTL: 'e-rtl',\n DISABLE: 'e-disabled',\n INPUT: 'e-input',\n TEXTAREA: 'e-multi-line-input',\n INPUTGROUP: 'e-input-group',\n FLOATINPUT: 'e-float-input',\n FLOATLINE: 'e-float-line',\n FLOATTEXT: 'e-float-text',\n FLOATTEXTCONTENT: 'e-float-text-content',\n CLEARICON: 'e-clear-icon',\n CLEARICONHIDE: 'e-clear-icon-hide',\n LABELTOP: 'e-label-top',\n LABELBOTTOM: 'e-label-bottom',\n NOFLOATLABEL: 'e-no-float-label',\n INPUTCUSTOMTAG: 'e-input-custom-tag',\n FLOATCUSTOMTAG: 'e-float-custom-tag'\n};\n/**\n * Defines the constant attributes for the input element container.\n */\nexport var containerAttributes = ['title', 'style', 'class'];\n/**\n * Defines the constant focus class for the input element.\n */\nexport var TEXTBOX_FOCUS = 'e-input-focus';\n/**\n * Base for Input creation through util methods.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Input;\n(function (Input) {\n var privateInputObj = {\n container: null,\n buttons: [],\n clearButton: null\n };\n var floatType;\n var isBindClearAction = true;\n /**\n * Create a wrapper to input element with multiple span elements and set the basic properties to input based components.\n * ```\n * E.g : Input.createInput({ element: element, floatLabelType : \"Auto\", properties: { placeholder: 'Search' } });\n * ```\n *\n */\n function createInput(args, internalCreateElement) {\n args.element.__eventHandlers = {};\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var inputObject = { container: null, buttons: [], clearButton: null };\n floatType = args.floatLabelType;\n isBindClearAction = args.bindClearAction;\n if (isNullOrUndefined(args.floatLabelType) || args.floatLabelType === 'Never') {\n inputObject.container = createInputContainer(args, CLASSNAMES.INPUTGROUP, CLASSNAMES.INPUTCUSTOMTAG, 'span', makeElement);\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n addClass([args.element], CLASSNAMES.INPUT);\n inputObject.container.appendChild(args.element);\n }\n else {\n createFloatingInput(args, inputObject, makeElement);\n }\n bindInitialEvent(args);\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.showClearButton) &&\n args.properties.showClearButton) {\n setClearButton(args.properties.showClearButton, args.element, inputObject, true, makeElement);\n inputObject.clearButton.setAttribute('role', 'button');\n if (inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n addClass([inputObject.container], CLASSNAMES.INPUTGROUP);\n }\n }\n if (!isNullOrUndefined(args.buttons)) {\n for (var i = 0; i < args.buttons.length; i++) {\n inputObject.buttons.push(appendSpan(args.buttons[i], inputObject.container, makeElement));\n }\n }\n if (!isNullOrUndefined(args.element) && args.element.tagName === 'TEXTAREA') {\n addClass([inputObject.container], CLASSNAMES.TEXTAREA);\n }\n validateInputType(inputObject.container, args.element);\n inputObject = setPropertyValue(args, inputObject);\n createSpanElement(inputObject.container, makeElement);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n privateInputObj = inputObject;\n return inputObject;\n }\n Input.createInput = createInput;\n function bindFocusEventHandler(args) {\n var parent = getParentNode(args.element);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline') || parent.classList.contains('e-filled')) {\n parent.classList.add('e-input-focus');\n }\n if (args.floatLabelType !== 'Never') {\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n }\n }\n function bindBlurEventHandler(args) {\n var parent = getParentNode(args.element);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline') || parent.classList.contains('e-filled')) {\n parent.classList.remove('e-input-focus');\n }\n if (args.floatLabelType !== 'Never') {\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n }\n }\n function bindInputEventHandler(args) {\n checkInputValue(args.floatLabelType, args.element);\n }\n function bindInitialEvent(args) {\n checkInputValue(args.floatLabelType, args.element);\n var focusHandler = function () { return bindFocusEventHandler(args); };\n var blurHandler = function () { return bindBlurEventHandler(args); };\n var inputHandler = function () { return bindInputEventHandler(args); };\n args.element.addEventListener('focus', focusHandler);\n args.element.addEventListener('blur', blurHandler);\n args.element.addEventListener('input', inputHandler);\n args.element.__eventHandlers[\"inputFocusHandler\"] = { focusHandler: focusHandler };\n args.element.__eventHandlers[\"inputBlurHandler\"] = { blurHandler: blurHandler };\n args.element.__eventHandlers[\"inputHandler\"] = { inputHandler: inputHandler };\n }\n Input.bindInitialEvent = bindInitialEvent;\n function unbindInitialEvent(args) {\n if (!isNullOrUndefined(args.element)) {\n if (!isNullOrUndefined(args.element.__eventHandlers)) {\n if (!isNullOrUndefined(args.element.__eventHandlers[\"inputFocusHandler\"])\n && !isNullOrUndefined(args.element.__eventHandlers[\"inputBlurHandler\"])\n && !isNullOrUndefined(args.element.__eventHandlers[\"inputHandler\"])) {\n var focusHandler_1 = args.element.__eventHandlers[\"inputFocusHandler\"].focusHandler;\n var blurHandler_1 = args.element.__eventHandlers[\"inputBlurHandler\"].blurHandler;\n var inputHandler_1 = args.element.__eventHandlers[\"inputHandler\"].inputHandler;\n args.element.removeEventListener('focus', focusHandler_1);\n args.element.removeEventListener('blur', blurHandler_1);\n args.element.removeEventListener('input', inputHandler_1);\n // Clean up stored bound functions\n delete args.element.__eventHandlers[\"inputFocusHandler\"];\n delete args.element.__eventHandlers[\"inputBlurHandler\"];\n delete args.element.__eventHandlers[\"inputHandler\"];\n }\n }\n }\n }\n function checkInputValue(floatLabelType, inputElement) {\n var inputValue = inputElement.value;\n var inputParent = inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputValue !== '' && !isNullOrUndefined(inputValue)) {\n if (inputParent && inputParent.classList.contains('e-input-group')) {\n inputParent.classList.add('e-valid-input');\n }\n else if (grandParent && grandParent.classList.contains('e-input-group')) {\n grandParent.classList.add('e-valid-input');\n }\n }\n else if (floatLabelType !== 'Always') {\n if (inputParent && inputParent.classList.contains('e-input-group')) {\n inputParent.classList.remove('e-valid-input');\n }\n else if (grandParent && grandParent.classList.contains('e-input-group')) {\n grandParent.classList.remove('e-valid-input');\n }\n }\n }\n function _focusFn() {\n var label = getParentNode(this).getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function _blurFn() {\n var parent = getParentNode(this);\n if ((parent.getElementsByTagName('textarea')[0]) ? parent.getElementsByTagName('textarea')[0].value === '' :\n parent.getElementsByTagName('input')[0].value === '') {\n var label = parent.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function wireFloatingEvents(element) {\n element.addEventListener('focus', _focusFn);\n element.addEventListener('blur', _blurFn);\n }\n Input.wireFloatingEvents = wireFloatingEvents;\n function unwireFloatingEvents(element) {\n if (!isNullOrUndefined(element)) {\n element.removeEventListener('focus', _focusFn);\n element.removeEventListener('blur', _blurFn);\n }\n }\n function inputEventHandler(args) {\n validateLabel(args.element, args.floatLabelType);\n }\n function blurEventHandler(args) {\n validateLabel(args.element, args.floatLabelType);\n }\n function createFloatingInput(args, inputObject, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.floatLabelType === 'Auto') {\n wireFloatingEvents(args.element);\n }\n if (isNullOrUndefined(inputObject.container)) {\n inputObject.container = createInputContainer(args, CLASSNAMES.FLOATINPUT, CLASSNAMES.FLOATCUSTOMTAG, 'div', makeElement);\n inputObject.container.classList.add(CLASSNAMES.INPUTGROUP);\n if (args.element.parentNode) {\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n }\n }\n else {\n if (!isNullOrUndefined(args.customTag)) {\n inputObject.container.classList.add(CLASSNAMES.FLOATCUSTOMTAG);\n }\n inputObject.container.classList.add(CLASSNAMES.FLOATINPUT);\n }\n var floatLinelement = makeElement('span', { className: CLASSNAMES.FLOATLINE });\n var floatLabelElement = makeElement('label', { className: CLASSNAMES.FLOATTEXT });\n if (!isNullOrUndefined(args.element.id) && args.element.id !== '') {\n floatLabelElement.id = 'label_' + args.element.id.replace(/ /g, '_');\n attributes(args.element, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(args.element.placeholder) && args.element.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.element.placeholder);\n args.element.removeAttribute('placeholder');\n }\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.placeholder) &&\n args.properties.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.properties.placeholder);\n }\n if (!floatLabelElement.innerText) {\n inputObject.container.classList.add(CLASSNAMES.NOFLOATLABEL);\n }\n if (inputObject.container.classList.contains('e-float-icon-left')) {\n var inputWrap = inputObject.container.querySelector('.e-input-in-wrap');\n inputWrap.appendChild(args.element);\n inputWrap.appendChild(floatLinelement);\n inputWrap.appendChild(floatLabelElement);\n }\n else {\n inputObject.container.appendChild(args.element);\n inputObject.container.appendChild(floatLinelement);\n inputObject.container.appendChild(floatLabelElement);\n }\n updateLabelState(args.element.value, floatLabelElement);\n if (args.floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([floatLabelElement], CLASSNAMES.LABELBOTTOM);\n }\n addClass([floatLabelElement], CLASSNAMES.LABELTOP);\n }\n if (args.floatLabelType === 'Auto') {\n var inputFloatHandler = function () { return inputEventHandler(args); };\n var blurFloatHandler = function () { return blurEventHandler(args); };\n // Add event listeners using the defined functions\n args.element.addEventListener('input', inputFloatHandler);\n args.element.addEventListener('blur', blurFloatHandler);\n // Store the event handler functions to remove them later\n args.element.__eventHandlers[\"floatInputHandler\"] = { inputFloatHandler: inputFloatHandler };\n args.element.__eventHandlers[\"floatBlurHandler\"] = { blurFloatHandler: blurFloatHandler };\n }\n else {\n unWireFloatLabelEvents(args);\n }\n if (!isNullOrUndefined(args.element.getAttribute('id'))) {\n floatLabelElement.setAttribute('for', args.element.getAttribute('id'));\n }\n }\n function unWireFloatLabelEvents(args) {\n if (!isNullOrUndefined(args.element) && !isNullOrUndefined(args.element.__eventHandlers)\n && !isNullOrUndefined(args.element.__eventHandlers[\"floatInputHandler\"])\n && !isNullOrUndefined(args.element.__eventHandlers[\"floatBlurHandler\"])) {\n var inputFloatHandler = args.element.__eventHandlers[\"floatInputHandler\"].inputFloatHandler;\n var blurFloatHandler = args.element.__eventHandlers[\"floatBlurHandler\"].blurFloatHandler;\n // Remove the event listeners using the defined functions\n args.element.removeEventListener('input', inputFloatHandler);\n args.element.removeEventListener('blur', blurFloatHandler);\n // Clean up stored event handler functions\n delete args.element.__eventHandlers[\"floatInputHandler\"];\n delete args.element.__eventHandlers[\"floatBlurHandler\"];\n }\n }\n function checkFloatLabelType(type, container) {\n if (type === 'Always' && container.classList.contains('e-outline')) {\n container.classList.add('e-valid-input');\n }\n }\n function setPropertyValue(args, inputObject) {\n if (!isNullOrUndefined(args.properties)) {\n for (var _i = 0, _a = Object.keys(args.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n setCssClass(args.properties.cssClass, [inputObject.container]);\n checkFloatLabelType(args.floatLabelType, inputObject.container);\n break;\n case 'enabled':\n setEnabled(args.properties.enabled, args.element, args.floatLabelType, inputObject.container);\n break;\n case 'enableRtl':\n setEnableRtl(args.properties.enableRtl, [inputObject.container]);\n break;\n case 'placeholder':\n setPlaceholder(args.properties.placeholder, args.element);\n break;\n case 'readonly':\n setReadonly(args.properties.readonly, args.element);\n break;\n }\n }\n }\n return inputObject;\n }\n function updateIconState(value, button, readonly) {\n if (!isNullOrUndefined(button)) {\n if (value && !readonly) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n }\n function updateLabelState(value, label, element) {\n if (element === void 0) { element = null; }\n if (value) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n else {\n var isNotFocused = element != null ? element !== document.activeElement : true;\n if (isNotFocused) {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function getParentNode(element) {\n var parentNode = isNullOrUndefined(element.parentNode) ? element\n : element.parentNode;\n if (parentNode && parentNode.classList.contains('e-input-in-wrap')) {\n parentNode = parentNode.parentNode;\n }\n return parentNode;\n }\n /**\n * To create clear button.\n */\n function createClearButton(element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = makeElement('span', { className: CLASSNAMES.CLEARICON });\n var container = inputObject.container;\n if (!isNullOrUndefined(initial)) {\n container.appendChild(button);\n }\n else {\n var baseElement = inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT) ?\n inputObject.container.querySelector('.' + CLASSNAMES.FLOATTEXT) : element;\n baseElement.insertAdjacentElement('afterend', button);\n }\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n wireClearBtnEvents(element, button, container);\n button.setAttribute('aria-label', 'close');\n return button;\n }\n function clickHandler(event, element, button) {\n if (!(element.classList.contains(CLASSNAMES.DISABLE) || element.readOnly)) {\n event.preventDefault();\n if (element !== document.activeElement) {\n element.focus();\n }\n element.value = '';\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n function inputHandler(element, button) {\n updateIconState(element.value, button);\n }\n function focusHandler(element, button) {\n updateIconState(element.value, button, element.readOnly);\n }\n function blurHandler(element, button) {\n setTimeout(function () {\n if (!isNullOrUndefined(button)) {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n button = !isNullOrUndefined(element) && element.classList.contains('e-combobox') ? null : button;\n }\n }, 200);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function wireClearBtnEvents(element, button, container) {\n if (isBindClearAction === undefined || isBindClearAction) {\n var clickHandlerEvent = function (e) { return clickHandler(e, element, button); };\n button.addEventListener('click', clickHandlerEvent);\n element.__eventHandlers[\"clearClickHandler\"] = { clickHandlerEvent: clickHandlerEvent };\n }\n var inputHandlerEvent = function () { return inputHandler(element, button); };\n var focusHandlerEvent = function () { return focusHandler(element, button); };\n var blurHandlerEvent = function () { return blurHandler(element, button); };\n element.addEventListener('input', inputHandlerEvent);\n element.addEventListener('focus', focusHandlerEvent);\n element.addEventListener('blur', blurHandlerEvent);\n // Store the bound functions to remove them later\n element.__eventHandlers[\"clearInputHandler\"] = { inputHandlerEvent: inputHandlerEvent };\n element.__eventHandlers[\"clearFocusHandler\"] = { focusHandlerEvent: focusHandlerEvent };\n element.__eventHandlers[\"clearBlurHandler\"] = { blurHandlerEvent: blurHandlerEvent };\n }\n Input.wireClearBtnEvents = wireClearBtnEvents;\n function unWireClearBtnEvents(element, button) {\n if (!isNullOrUndefined(element) && !isNullOrUndefined(element.__eventHandlers)) {\n if (!isNullOrUndefined(element.__eventHandlers[\"clearClickHandler\"])) {\n var clickHandlerEvent = element.__eventHandlers[\"clearClickHandler\"].clickHandlerEvent;\n if (isBindClearAction === undefined || isBindClearAction) {\n if (!isNullOrUndefined(button)) {\n button.removeEventListener('click', clickHandlerEvent);\n }\n }\n delete element.__eventHandlers[\"clearClickHandler\"];\n }\n if (!isNullOrUndefined(element.__eventHandlers[\"clearInputHandler\"])\n && !isNullOrUndefined(element.__eventHandlers[\"clearFocusHandler\"])\n && !isNullOrUndefined(element.__eventHandlers[\"clearBlurHandler\"])) {\n var inputHandlerEvent = element.__eventHandlers[\"clearInputHandler\"].inputHandlerEvent;\n var focusHandlerEvent = element.__eventHandlers[\"clearFocusHandler\"].focusHandlerEvent;\n var blurHandlerEvent = element.__eventHandlers[\"clearBlurHandler\"].blurHandlerEvent;\n element.removeEventListener('input', inputHandlerEvent);\n element.removeEventListener('focus', focusHandlerEvent);\n element.removeEventListener('blur', blurHandlerEvent);\n // Clean up stored Event functions\n delete element.__eventHandlers[\"clearInputHandler\"];\n delete element.__eventHandlers[\"clearFocusHandler\"];\n delete element.__eventHandlers[\"clearBlurHandler\"];\n }\n }\n }\n function destroy(args, button) {\n if (button === void 0) { button = null; }\n unbindInitialEvent(args);\n if (args.floatLabelType === 'Auto') {\n unWireFloatLabelEvents(args);\n }\n if (args.properties.showClearButton) {\n unWireClearBtnEvents(args.element, button);\n }\n unwireFloatingEvents(args.element);\n if (!isNullOrUndefined(args.element)) {\n delete args.element.__eventHandlers;\n }\n privateInputObj = null;\n }\n Input.destroy = destroy;\n function validateLabel(element, floatLabelType) {\n var parent = getParentNode(element);\n if (parent.classList.contains(CLASSNAMES.FLOATINPUT) && floatLabelType === 'Auto') {\n var label = getParentNode(element).getElementsByClassName('e-float-text')[0];\n updateLabelState(element.value, label, element);\n }\n }\n /**\n * To create input box contianer.\n */\n function createInputContainer(args, className, tagClass, tag, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container;\n if (!isNullOrUndefined(args.customTag)) {\n container = makeElement(args.customTag, { className: className });\n container.classList.add(tagClass);\n }\n else {\n container = makeElement(tag, { className: className });\n }\n container.classList.add('e-control-wrapper');\n return container;\n }\n function encodePlaceHolder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanEle = document.createElement('span');\n spanEle.innerHTML = '';\n var hiddenInput = (spanEle.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n }\n /**\n * Sets the value to the input element.\n * ```\n * E.g : Input.setValue('content', element, \"Auto\", true );\n * ```\n *\n * @param {string} value - Specify the value of the input element.\n * @param {HTMLInputElement | HTMLTextAreaElement} element - The element on which the specified value is updated.\n * @param {string} floatLabelType - Specify the float label type of the input element.\n * @param {boolean} clearButton - Boolean value to specify whether the clear icon is enabled / disabled on the input.\n */\n function setValue(value, element, floatLabelType, clearButton) {\n element.value = value;\n if (floatLabelType !== 'Never') {\n calculateWidth(element, element.parentElement);\n }\n if ((!isNullOrUndefined(floatLabelType)) && floatLabelType === 'Auto') {\n validateLabel(element, floatLabelType);\n }\n if (!isNullOrUndefined(clearButton) && clearButton) {\n var parentElement = getParentNode(element);\n if (!isNullOrUndefined(parentElement)) {\n var button = parentElement.getElementsByClassName(CLASSNAMES.CLEARICON)[0];\n if (!isNullOrUndefined(button)) {\n if (element.value && !isNullOrUndefined(parentElement) && parentElement.classList.contains('e-input-focus')) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n }\n }\n checkInputValue(floatLabelType, element);\n }\n Input.setValue = setValue;\n /**\n * Sets the single or multiple cssClass to wrapper of input element.\n * ```\n * E.g : Input.setCssClass('e-custom-class', [element]);\n * ```\n *\n * @param {string} cssClass - Css class names which are needed to add.\n * @param {Element[] | NodeList} elements - The elements which are needed to add / remove classes.\n * @param {string} oldClass\n * - Css class names which are needed to remove. If old classes are need to remove, can give this optional parameter.\n */\n function setCssClass(cssClass, elements, oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(cssClass) && cssClass !== '') {\n addClass(elements, cssClass.split(' '));\n }\n }\n Input.setCssClass = setCssClass;\n /**\n * Set the width to the placeholder when it overflows on the button such as spinbutton, clearbutton, icon etc\n * ```\n * E.g : Input.calculateWidth(element, container);\n * ```\n *\n * @param {any} element - Input element which is need to add.\n * @param {HTMLElement} container - The parent element which is need to get the label span to calculate width\n */\n function calculateWidth(element, container, moduleName) {\n var elementWidth = moduleName === 'multiselect' ? element : element.clientWidth - parseInt(getComputedStyle(element, null).getPropertyValue('padding-left'), 10);\n if (!isNullOrUndefined(container.getElementsByClassName('e-float-text-content')[0])) {\n if (container.getElementsByClassName('e-float-text-content')[0].classList.contains('e-float-text-overflow')) {\n container.getElementsByClassName('e-float-text-content')[0].classList.remove('e-float-text-overflow');\n }\n if (elementWidth < container.getElementsByClassName('e-float-text-content')[0].clientWidth || elementWidth === container.getElementsByClassName('e-float-text-content')[0].clientWidth) {\n container.getElementsByClassName('e-float-text-content')[0].classList.add('e-float-text-overflow');\n }\n }\n }\n Input.calculateWidth = calculateWidth;\n /**\n * Set the width to the wrapper of input element.\n * ```\n * E.g : Input.setWidth('200px', container);\n * ```\n *\n * @param {number | string} width - Width value which is need to add.\n * @param {HTMLElement} container - The element on which the width is need to add.\n */\n function setWidth(width, container) {\n if (typeof width === 'number') {\n container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n calculateWidth(container.firstChild, container);\n }\n Input.setWidth = setWidth;\n /**\n * Set the placeholder attribute to the input element.\n * ```\n * E.g : Input.setPlaceholder('Search here', element);\n * ```\n *\n * @param {string} placeholder - Placeholder value which is need to add.\n * @param {HTMLInputElement | HTMLTextAreaElement} element - The element on which the placeholder is need to add.\n */\n function setPlaceholder(placeholder, element) {\n placeholder = encodePlaceHolder(placeholder);\n var parentElement = getParentNode(element);\n if (parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n parentElement.getElementsByClassName('e-float-text-content')[0] ? parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].children[0].textContent = placeholder : parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = placeholder;\n parentElement.classList.remove(CLASSNAMES.NOFLOATLABEL);\n element.removeAttribute('placeholder');\n }\n else {\n parentElement.classList.add(CLASSNAMES.NOFLOATLABEL);\n parentElement.getElementsByClassName('e-float-text-content')[0] ? parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].children[0].textContent = '' : parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n }\n else {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n attributes(element, { 'placeholder': placeholder });\n }\n else {\n element.removeAttribute('placeholder');\n }\n }\n }\n Input.setPlaceholder = setPlaceholder;\n /**\n * Set the read only attribute to the input element\n * ```\n * E.g : Input.setReadonly(true, element);\n * ```\n *\n * @param {boolean} isReadonly\n * - Boolean value to specify whether to set read only. Setting \"True\" value enables read only.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * - The element which is need to enable read only.\n */\n function setReadonly(isReadonly, element, floatLabelType) {\n if (isReadonly) {\n attributes(element, { readonly: '' });\n }\n else {\n element.removeAttribute('readonly');\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setReadonly = setReadonly;\n /**\n * Displays the element direction from right to left when its enabled.\n * ```\n * E.g : Input.setEnableRtl(true, [inputObj.container]);\n * ```\n *\n * @param {boolean} isRtl\n * - Boolean value to specify whether to set RTL. Setting \"True\" value enables the RTL mode.\n * @param {Element[] | NodeList} elements\n * - The elements that are needed to enable/disable RTL.\n */\n function setEnableRtl(isRtl, elements) {\n if (isRtl) {\n addClass(elements, CLASSNAMES.RTL);\n }\n else {\n removeClass(elements, CLASSNAMES.RTL);\n }\n }\n Input.setEnableRtl = setEnableRtl;\n /**\n * Enables or disables the given input element.\n * ```\n * E.g : Input.setEnabled(false, element);\n * ```\n *\n * @param {boolean} isEnable\n * - Boolean value to specify whether to enable or disable.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * - Element to be enabled or disabled.\n */\n function setEnabled(isEnable, element, floatLabelType, inputContainer) {\n var disabledAttrs = { 'disabled': '', 'aria-disabled': 'true' };\n var considerWrapper = isNullOrUndefined(inputContainer) ? false : true;\n if (isEnable) {\n element.classList.remove(CLASSNAMES.DISABLE);\n removeAttributes(disabledAttrs, element);\n if (considerWrapper) {\n removeClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n else {\n element.classList.add(CLASSNAMES.DISABLE);\n addAttributes(disabledAttrs, element);\n if (considerWrapper) {\n addClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setEnabled = setEnabled;\n function setClearButton(isClear, element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (isClear) {\n inputObject.clearButton = createClearButton(element, inputObject, initial, makeElement);\n }\n else {\n remove(inputObject.clearButton);\n inputObject.clearButton = null;\n }\n }\n Input.setClearButton = setClearButton;\n /**\n * Removing the multiple attributes from the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.removeAttributes({ 'disabled': 'disabled', 'aria-disabled': 'true' }, element);\n * ```\n *\n * @param {string} attrs\n * - Array of attributes which are need to removed from the element.\n * @param {HTMLInputElement | HTMLElement} element\n * - Element on which the attributes are needed to be removed.\n */\n function removeAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n else {\n element.removeAttribute(key);\n }\n }\n }\n Input.removeAttributes = removeAttributes;\n /**\n * Adding the multiple attributes to the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.addAttributes({ 'id': 'inputpopup' }, element);\n * ```\n *\n * @param {string} attrs\n * - Array of attributes which is added to element.\n * @param {HTMLInputElement | HTMLElement} element\n * - Element on which the attributes are needed to be added.\n */\n function addAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = attrs[\"\" + key];\n }\n else {\n element.setAttribute(key, attrs[\"\" + key]);\n }\n }\n }\n Input.addAttributes = addAttributes;\n function removeFloating(input) {\n var container = input.container;\n if (!isNullOrUndefined(container) && container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n var inputEle = container.querySelector('textarea') ? container.querySelector('textarea') :\n container.querySelector('input');\n var placeholder = container.querySelector('.' + CLASSNAMES.FLOATTEXT).textContent;\n var clearButton = container.querySelector('.e-clear-icon') !== null;\n detach(container.querySelector('.' + CLASSNAMES.FLOATLINE));\n detach(container.querySelector('.' + CLASSNAMES.FLOATTEXT));\n classList(container, [CLASSNAMES.INPUTGROUP], [CLASSNAMES.FLOATINPUT]);\n unwireFloatingEvents(inputEle);\n attributes(inputEle, { 'placeholder': placeholder });\n inputEle.classList.add(CLASSNAMES.INPUT);\n if (!clearButton && inputEle.tagName === 'INPUT') {\n inputEle.removeAttribute('required');\n }\n }\n }\n Input.removeFloating = removeFloating;\n function addFloating(input, type, placeholder, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container = closest(input, '.' + CLASSNAMES.INPUTGROUP);\n floatType = type;\n var customTag = container.tagName;\n customTag = customTag !== 'DIV' && customTag !== 'SPAN' ? customTag : null;\n var args = { element: input, floatLabelType: type,\n customTag: customTag, properties: { placeholder: placeholder } };\n if (type !== 'Never') {\n var iconEle = container.querySelector('.e-clear-icon');\n var inputObj = { container: container };\n input.classList.remove(CLASSNAMES.INPUT);\n createFloatingInput(args, inputObj, makeElement);\n createSpanElement(inputObj.container, makeElement);\n calculateWidth(args.element, inputObj.container);\n var isPrependIcon = container.classList.contains('e-float-icon-left');\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n var inputWrap = container.querySelector('.e-input-in-wrap');\n iconEle = inputWrap.querySelector('.e-input-group-icon');\n }\n else {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n }\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n }\n else {\n var floatLine = container.querySelector('.' + CLASSNAMES.FLOATLINE);\n var floatText = container.querySelector('.' + CLASSNAMES.FLOATTEXT);\n var wrapper = isPrependIcon ? container.querySelector('.e-input-in-wrap') : container;\n wrapper.insertBefore(input, iconEle);\n wrapper.insertBefore(floatLine, iconEle);\n wrapper.insertBefore(floatText, iconEle);\n }\n }\n else {\n unWireFloatLabelEvents(args);\n }\n checkFloatLabelType(type, input.parentElement);\n }\n Input.addFloating = addFloating;\n /**\n * Create the span inside the label and add the label text into the span textcontent\n * ```\n * E.g : Input.createSpanElement(inputObject, makeElement);\n * ```\n *\n * @param {InputObject} inputObject\n * - Element which is need to get the label\n * @param {createElementParams} makeElement\n * - Element which is need to create the span\n */\n function createSpanElement(inputObject, makeElement) {\n if (inputObject.classList.contains('e-outline') && inputObject.getElementsByClassName('e-float-text')[0]) {\n var labelSpanElement = makeElement('span', { className: CLASSNAMES.FLOATTEXTCONTENT });\n labelSpanElement.innerHTML = inputObject.getElementsByClassName('e-float-text')[0].innerHTML;\n inputObject.getElementsByClassName('e-float-text')[0].innerHTML = '';\n inputObject.getElementsByClassName('e-float-text')[0].appendChild(labelSpanElement);\n }\n }\n Input.createSpanElement = createSpanElement;\n /**\n * Enable or Disable the ripple effect on the icons inside the Input. Ripple effect is only applicable for material theme.\n * ```\n * E.g : Input.setRipple(true, [inputObjects]);\n * ```\n *\n * @param {boolean} isRipple\n * - Boolean value to specify whether to enable the ripple effect.\n * @param {InputObject[]} inputObj\n * - Specify the collection of input objects.\n */\n function setRipple(isRipple, inputObj) {\n for (var i = 0; i < inputObj.length; i++) {\n _internalRipple(isRipple, inputObj[parseInt(i.toString())].container);\n }\n }\n Input.setRipple = setRipple;\n function _internalRipple(isRipple, container, button) {\n var argsButton = [];\n argsButton.push(button);\n var buttons = isNullOrUndefined(button) ?\n container.querySelectorAll('.e-input-group-icon') : argsButton;\n if (isRipple && buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[parseInt(index.toString())].addEventListener('mousedown', _onMouseDownRipple, false);\n buttons[parseInt(index.toString())].addEventListener('mouseup', _onMouseUpRipple, false);\n }\n }\n else if (buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[parseInt(index.toString())].removeEventListener('mousedown', _onMouseDownRipple, this);\n buttons[parseInt(index.toString())].removeEventListener('mouseup', _onMouseUpRipple, this);\n }\n }\n }\n function _onMouseRipple(container, button) {\n if (!container.classList.contains('e-disabled') && !container.querySelector('input').readOnly) {\n button.classList.add('e-input-btn-ripple');\n }\n }\n function _onMouseDownRipple() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var ele = this;\n var parentEle = this.parentElement;\n while (!parentEle.classList.contains('e-input-group')) {\n parentEle = parentEle.parentElement;\n }\n _onMouseRipple(parentEle, ele);\n }\n function _onMouseUpRipple() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var ele = this;\n setTimeout(function () {\n ele.classList.remove('e-input-btn-ripple');\n }, 500);\n }\n function createIconEle(iconClass, makeElement) {\n var button = makeElement('span', { className: iconClass });\n button.classList.add('e-input-group-icon');\n return button;\n }\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.addIcon('append', 'e-icon-spin', inputObj.container, inputElement);\n * ```\n *\n * @param {string} position - Specify the icon placement on the input.Possible values are append and prepend.\n * @param {string | string[]} icons - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n * @param {HTMLElement} input - The inputElement on which created span element is going to prepend.\n */\n /* eslint-disable @typescript-eslint/indent */\n function addIcon(position, icons, container, input, internalCreate) {\n /* eslint-enable @typescript-eslint/indent */\n var result = typeof (icons) === 'string' ? icons.split(',')\n : icons;\n if (position.toLowerCase() === 'append') {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var icon = result_1[_i];\n appendSpan(icon, container, internalCreate);\n }\n }\n else {\n for (var _a = 0, result_2 = result; _a < result_2.length; _a++) {\n var icon = result_2[_a];\n prependSpan(icon, container, input, internalCreate);\n }\n }\n if (container.getElementsByClassName('e-input-group-icon')[0] && container.getElementsByClassName('e-float-text-overflow')[0]) {\n container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n }\n Input.addIcon = addIcon;\n /**\n * Creates a new span element with the given icons added and prepend it in input element.\n * ```\n * E.g : Input.prependSpan('e-icon-spin', inputObj.container, inputElement);\n * ```\n *\n * @param {string} iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n * @param {HTMLElement} inputElement - The inputElement on which created span element is going to prepend.\n */\n /* eslint-disable @typescript-eslint/indent */\n function prependSpan(iconClass, container, inputElement, internalCreateElement) {\n /* eslint-enable @typescript-eslint/indent */\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n container.classList.add('e-float-icon-left');\n var innerWrapper = container.querySelector('.e-input-in-wrap');\n if (isNullOrUndefined(innerWrapper)) {\n innerWrapper = makeElement('span', { className: 'e-input-in-wrap' });\n inputElement.parentNode.insertBefore(innerWrapper, inputElement);\n var result = container.querySelectorAll(inputElement.tagName + ' ~ *');\n innerWrapper.appendChild(inputElement);\n for (var i = 0; i < result.length; i++) {\n var element = result[parseInt(i.toString())];\n var parentElement = innerWrapper.parentElement;\n if (!(element.classList.contains('e-float-line')) || (!(parentElement && parentElement.classList.contains('e-filled')) && parentElement)) {\n innerWrapper.appendChild(element);\n }\n }\n }\n innerWrapper.parentNode.insertBefore(button, innerWrapper);\n _internalRipple(true, container, button);\n return button;\n }\n Input.prependSpan = prependSpan;\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.appendSpan('e-icon-spin', inputObj.container);\n * ```\n *\n * @param {string} iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n */\n function appendSpan(iconClass, container, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n var wrap = (container.classList.contains('e-float-icon-left')) ? container.querySelector('.e-input-in-wrap') :\n container;\n wrap.appendChild(button);\n _internalRipple(true, container, button);\n return button;\n }\n Input.appendSpan = appendSpan;\n function validateInputType(containerElement, input) {\n if (input.type === 'hidden') {\n containerElement.classList.add('e-hidden');\n }\n else if (containerElement.classList.contains('e-hidden')) {\n containerElement.classList.remove('e-hidden');\n }\n }\n Input.validateInputType = validateInputType;\n function updateHTMLAttributesToElement(htmlAttributes, element) {\n if (!isNullOrUndefined(htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttributes.indexOf(key) < 0) {\n element.setAttribute(key, htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n Input.updateHTMLAttributesToElement = updateHTMLAttributesToElement;\n function updateCssClass(newClass, oldClass, container) {\n setCssClass(getInputValidClassList(newClass), [container], getInputValidClassList(oldClass));\n }\n Input.updateCssClass = updateCssClass;\n function getInputValidClassList(inputClassName) {\n var result = inputClassName;\n if (!isNullOrUndefined(inputClassName) && inputClassName !== '') {\n result = (inputClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n }\n Input.getInputValidClassList = getInputValidClassList;\n function updateHTMLAttributesToWrapper(htmlAttributes, container) {\n if (!isNullOrUndefined(htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttributes.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = this.getInputValidClassList(htmlAttributes[\"\" + key]);\n if (updatedClassValues !== '') {\n addClass([container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = container.getAttribute(key);\n setStyle = !isNullOrUndefined(setStyle) ? (setStyle + htmlAttributes[\"\" + key]) :\n htmlAttributes[\"\" + key];\n container.setAttribute(key, setStyle);\n }\n else {\n container.setAttribute(key, htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n }\n Input.updateHTMLAttributesToWrapper = updateHTMLAttributesToWrapper;\n function isBlank(inputString) {\n return (!inputString || /^\\s*$/.test(inputString));\n }\n Input.isBlank = isBlank;\n})(Input || (Input = {}));\n/* eslint-enable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, EventHandler, L10n, setValue, getValue, isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, detach, Internationalization, getUniqueID, closest } from '@syncfusion/ej2-base';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\nimport { Input, containerAttributes, TEXTBOX_FOCUS } from '../input/input';\nvar HIDE_CLEAR = 'e-clear-icon-hide';\n/**\n * Represents the TextBox component that allows the user to enter the values based on it's type.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar TextBox = /** @class */ (function (_super) {\n __extends(TextBox, _super);\n /**\n *\n * @param {TextBoxModel} options - Specifies the TextBox model.\n * @param {string | HTMLInputElement | HTMLTextAreaElement} element - Specifies the element to render as component.\n * @private\n */\n function TextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousValue = null;\n _this.isAngular = false;\n _this.isHiddenInput = false;\n _this.isForm = false;\n _this.inputPreviousValue = null;\n _this.isVue = false;\n _this.textboxOptions = options;\n return _this;\n }\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {TextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {TextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'floatLabelType':\n Input.removeFloating(this.textboxWrapper);\n Input.addFloating(this.respectiveElement, this.floatLabelType, this.placeholder);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n this.bindClearEvent();\n break;\n case 'width':\n Input.setWidth(newProp.width, this.textboxWrapper.container);\n break;\n case 'value':\n {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n if (!Input.isBlank(this.value)) {\n this.value = this.value.toString();\n }\n this.isProtectedOnChange = prevOnChange;\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if ((this.isAngular || this.isVue) && this.preventChange === true) {\n this.previousValue = this.isAngular ? this.value : this.previousValue;\n this.preventChange = false;\n }\n else if (isNullOrUndefined(this.isAngular) || !this.isAngular\n || (this.isAngular && !this.preventChange) || (this.isAngular && isNullOrUndefined(this.preventChange))) {\n this.raiseChangeEvent();\n }\n }\n break;\n case 'htmlAttributes':\n {\n this.updateHTMLAttributesToElement();\n this.updateHTMLAttributesToWrapper();\n this.checkAttributes(true);\n this.multiline && !isNullOrUndefined(this.textarea) ? Input.validateInputType(this.textboxWrapper.container, this.textarea) : Input.validateInputType(this.textboxWrapper.container, this.element);\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.respectiveElement);\n break;\n case 'type':\n if (this.respectiveElement.tagName !== 'TEXTAREA') {\n this.respectiveElement.setAttribute('type', this.type);\n Input.validateInputType(this.textboxWrapper.container, this.element);\n this.raiseChangeEvent();\n }\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.respectiveElement, this.textboxWrapper);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.textboxWrapper.container]);\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n Input.calculateWidth(this.respectiveElement, this.textboxWrapper.container);\n break;\n case 'autocomplete':\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else {\n this.removeAttributes(['autocomplete']);\n }\n break;\n case 'cssClass':\n Input.updateCssClass(newProp.cssClass, oldProp.cssClass, this.textboxWrapper.container);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n break;\n }\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TextBox.prototype.getModuleName = function () {\n return 'textbox';\n };\n TextBox.prototype.preRender = function () {\n this.cloneElement = this.element.cloneNode(true);\n this.formElement = closest(this.element, 'form');\n if (!isNullOrUndefined(this.formElement)) {\n this.isForm = true;\n }\n /* istanbul ignore next */\n if (this.element.tagName === 'EJS-TEXTBOX') {\n var ejInstance = getValue('ej2_instances', this.element);\n var inputElement = this.multiline ?\n this.createElement('textarea') :\n this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id' && attributeName !== 'class') {\n inputElement.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n inputElement.innerHTML = this.element.innerHTML;\n if (attributeName === 'name') {\n this.element.removeAttribute('name');\n }\n }\n else if (attributeName === 'class') {\n inputElement.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) { return item.indexOf('ng-') !== 0; }).join(' '));\n }\n }\n this.element.appendChild(inputElement);\n this.element = inputElement;\n setValue('ej2_instances', ejInstance, this.element);\n }\n this.updateHTMLAttributesToElement();\n this.checkAttributes(false);\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['value'] === undefined)) && this.element.value !== '') {\n this.setProperties({ value: this.element.value }, true);\n }\n if (this.element.tagName !== 'TEXTAREA') {\n this.element.setAttribute('type', this.type);\n }\n if (this.type === 'text') {\n this.element.setAttribute('role', 'textbox');\n }\n this.globalize = new Internationalization(this.locale);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('textbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('textbox'));\n }\n if (!this.element.hasAttribute('name')) {\n this.element.setAttribute('name', this.element.getAttribute('id'));\n }\n if (this.element.tagName === 'INPUT' && this.multiline) {\n this.isHiddenInput = true;\n this.textarea = this.createElement('textarea');\n this.element.parentNode.insertBefore(this.textarea, this.element);\n this.element.setAttribute('type', 'hidden');\n this.textarea.setAttribute('name', this.element.getAttribute('name'));\n this.element.removeAttribute('name');\n this.textarea.setAttribute('role', this.element.getAttribute('role'));\n this.element.removeAttribute('role');\n this.textarea.setAttribute('id', getUniqueID('textarea'));\n var apiAttributes = ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var index = 0; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (this.element.hasAttribute(attributeName) && containerAttributes.indexOf(attributeName) < 0 &&\n !(attributeName === 'id' || attributeName === 'type' || attributeName === 'e-mappinguid')) {\n // e-mappinguid attribute is handled for Grid component.\n this.textarea.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n if (apiAttributes.indexOf(attributeName) < 0) {\n this.element.removeAttribute(attributeName);\n index--;\n }\n }\n }\n }\n };\n TextBox.prototype.checkAttributes = function (isDynamic) {\n var attrs = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var _i = 0, attrs_1 = attrs; _i < attrs_1.length; _i++) {\n var key = attrs_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(key))) {\n switch (key) {\n case 'disabled':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(key) === 'disabled' || this.element.getAttribute(key) === '' ||\n this.element.getAttribute(key) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(key) === 'readonly' || this.element.getAttribute(key) === ''\n || this.element.getAttribute(key) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'autocomplete':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['autocomplete'] === undefined)) || isDynamic) {\n var autoCompleteTxt = this.element.autocomplete === 'off' ? 'off' : 'on';\n this.setProperties({ autocomplete: autoCompleteTxt }, !isDynamic);\n }\n break;\n case 'value':\n if (((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['value'] === undefined)) || isDynamic) && this.element.value !== '') {\n this.setProperties({ value: this.element.value }, !isDynamic);\n }\n break;\n case 'type':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['type'] === undefined)) || isDynamic) {\n this.setProperties({ type: this.element.type }, !isDynamic);\n }\n break;\n }\n }\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n TextBox.prototype.render = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = Input.getInputValidClassList(this.cssClass);\n }\n this.respectiveElement = (this.isHiddenInput) ? this.textarea : this.element;\n this.textboxWrapper = Input.createInput({\n element: this.respectiveElement,\n floatLabelType: this.floatLabelType,\n properties: {\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n cssClass: updatedCssClassValue,\n readonly: this.readonly,\n placeholder: this.placeholder,\n showClearButton: this.showClearButton\n }\n });\n this.updateHTMLAttributesToWrapper();\n if (this.isHiddenInput) {\n this.respectiveElement.parentNode.insertBefore(this.element, this.respectiveElement);\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.value)) {\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n }\n if (!isNullOrUndefined(this.value)) {\n this.initialValue = this.value;\n this.setInitialValue();\n }\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else if (!isNullOrUndefined(this.textboxOptions) && (this.textboxOptions['autocomplete'] !== undefined)) {\n this.removeAttributes(['autocomplete']);\n }\n this.previousValue = this.value;\n this.inputPreviousValue = this.value;\n this.respectiveElement.defaultValue = this.respectiveElement.value;\n Input.setWidth(this.width, this.textboxWrapper.container);\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n };\n TextBox.prototype.updateHTMLAttributesToWrapper = function () {\n Input.updateHTMLAttributesToWrapper(this.htmlAttributes, this.textboxWrapper.container);\n };\n TextBox.prototype.updateHTMLAttributesToElement = function () {\n Input.updateHTMLAttributesToElement(this.htmlAttributes, this.respectiveElement ? this.respectiveElement : (this.multiline && !isNullOrUndefined(this.textarea) ? this.textarea : this.element));\n };\n TextBox.prototype.setInitialValue = function () {\n if (!this.isAngular) {\n this.respectiveElement.setAttribute('value', this.initialValue);\n }\n };\n TextBox.prototype.wireEvents = function () {\n EventHandler.add(this.respectiveElement, 'focus', this.focusHandler, this);\n EventHandler.add(this.respectiveElement, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.respectiveElement, 'keydown', this.keydownHandler, this);\n EventHandler.add(this.respectiveElement, 'input', this.inputHandler, this);\n EventHandler.add(this.respectiveElement, 'change', this.changeHandler, this);\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.resetForm, this);\n }\n this.bindClearEvent();\n if (!isNullOrUndefined(this.textboxWrapper.container.querySelector('.e-float-text')) && this.floatLabelType === 'Auto'\n && this.textboxWrapper.container.classList.contains('e-autofill') &&\n this.textboxWrapper.container.classList.contains('e-outline')) {\n EventHandler.add((this.textboxWrapper.container.querySelector('.e-float-text')), 'animationstart', this.animationHandler, this);\n }\n };\n TextBox.prototype.animationHandler = function () {\n this.textboxWrapper.container.classList.add('e-valid-input');\n var label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label)) {\n label.classList.add('e-label-top');\n if (label.classList.contains('e-label-bottom')) {\n label.classList.remove('e-label-bottom');\n }\n }\n };\n TextBox.prototype.resetValue = function (value) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.value = value;\n if (value == null && this.textboxWrapper.container.classList.contains('e-valid-input')) {\n this.textboxWrapper.container.classList.remove('e-valid-input');\n }\n this.isProtectedOnChange = prevOnChange;\n };\n TextBox.prototype.resetForm = function () {\n if (this.isAngular) {\n this.resetValue('');\n }\n else {\n this.resetValue(this.initialValue);\n }\n if (!isNullOrUndefined(this.textboxWrapper)) {\n var label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label) && this.floatLabelType !== 'Always') {\n if ((isNullOrUndefined(this.initialValue) || this.initialValue === '')) {\n label.classList.add('e-label-bottom');\n label.classList.remove('e-label-top');\n }\n else if (this.initialValue !== '') {\n label.classList.add('e-label-top');\n label.classList.remove('e-label-bottom');\n }\n }\n }\n };\n TextBox.prototype.focusHandler = function (args) {\n var eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('focus', eventArgs);\n };\n TextBox.prototype.focusOutHandler = function (args) {\n if (!(this.previousValue === null && this.value === null && this.respectiveElement.value === '') &&\n (this.previousValue !== this.value)) {\n this.raiseChangeEvent(args, true);\n }\n var eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('blur', eventArgs);\n };\n TextBox.prototype.keydownHandler = function (args) {\n if ((args.keyCode === 13 || args.keyCode === 9) && !((this.previousValue === null || this.previousValue === \"\") && (this.value === null || this.value === \"\") && this.respectiveElement.value === \"\")) {\n this.setProperties({ value: this.respectiveElement.value }, true);\n }\n };\n TextBox.prototype.inputHandler = function (args) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias\n var textboxObj = this;\n var eventArgs = {\n event: args,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if (this.isAngular) {\n textboxObj.localChange({ value: this.respectiveElement.value });\n this.preventChange = true;\n }\n if (this.isVue) {\n this.preventChange = true;\n }\n this.trigger('input', eventArgs);\n args.stopPropagation();\n };\n TextBox.prototype.changeHandler = function (args) {\n this.setProperties({ value: this.respectiveElement.value }, true);\n if (this.previousValue != this.value) {\n this.raiseChangeEvent(args, true);\n }\n args.stopPropagation();\n };\n TextBox.prototype.raiseChangeEvent = function (event, interaction) {\n var eventArgs = {\n event: event,\n value: this.value,\n previousValue: this.previousValue,\n container: this.textboxWrapper.container,\n isInteraction: interaction ? interaction : false,\n isInteracted: interaction ? interaction : false\n };\n this.preventChange = false;\n this.trigger('change', eventArgs);\n this.previousValue = this.value;\n //EJ2CORE-738:For this task we update the textarea value to the input when input tag with multiline is present\n if (this.element.tagName === 'INPUT' && this.multiline && Browser.info.name === 'mozilla') {\n this.element.value = this.respectiveElement.value;\n }\n };\n TextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n if (this.enabled) {\n EventHandler.add(this.textboxWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler, this);\n }\n else {\n EventHandler.remove(this.textboxWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler);\n }\n }\n };\n TextBox.prototype.resetInputHandler = function (event) {\n event.preventDefault();\n if (!(this.textboxWrapper.clearButton.classList.contains(HIDE_CLEAR)) || this.textboxWrapper.container.classList.contains('e-static-clear')) {\n Input.setValue('', this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.setProperties({ value: this.respectiveElement.value }, true);\n var eventArgs = {\n event: event,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.trigger('input', eventArgs);\n this.inputPreviousValue = this.respectiveElement.value;\n this.raiseChangeEvent(event, true);\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n }\n };\n TextBox.prototype.unWireEvents = function () {\n EventHandler.remove(this.respectiveElement, 'focus', this.focusHandler);\n EventHandler.remove(this.respectiveElement, 'blur', this.focusOutHandler);\n EventHandler.remove(this.respectiveElement, 'keydown', this.keydownHandler);\n EventHandler.remove(this.respectiveElement, 'input', this.inputHandler);\n EventHandler.remove(this.respectiveElement, 'change', this.changeHandler);\n if (this.isForm) {\n EventHandler.remove(this.formElement, 'reset', this.resetForm);\n }\n if (!isNullOrUndefined(this.textboxWrapper.container.querySelector('.e-float-text')) && this.floatLabelType === 'Auto'\n && this.textboxWrapper.container.classList.contains('e-outline') &&\n this.textboxWrapper.container.classList.contains('e-autofill')) {\n EventHandler.remove((this.textboxWrapper.container.querySelector('.e-float-text')), 'animationstart', this.animationHandler);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also, it maintains the initial TextBox element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n TextBox.prototype.destroy = function () {\n this.unWireEvents();\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n if (this.element.tagName === 'INPUT' && this.multiline) {\n detach(this.textboxWrapper.container.getElementsByTagName('textarea')[0]);\n this.respectiveElement = this.element;\n this.element.removeAttribute('type');\n }\n this.respectiveElement.value = this.respectiveElement.defaultValue;\n this.respectiveElement.classList.remove('e-input');\n this.removeAttributes(['aria-disabled', 'aria-readonly', 'aria-labelledby']);\n if (!isNullOrUndefined(this.textboxWrapper)) {\n this.textboxWrapper.container.insertAdjacentElement('afterend', this.respectiveElement);\n detach(this.textboxWrapper.container);\n }\n this.textboxWrapper = null;\n Input.destroy({\n element: this.respectiveElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n _super.prototype.destroy.call(this);\n };\n /**\n * Adding the icons to the TextBox component.\n *\n * @param { string } position - Specify the icon placement on the TextBox. Possible values are append and prepend.\n * @param { string | string[] } icons - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for TextBox.\n * @returns {void}\n */\n TextBox.prototype.addIcon = function (position, icons) {\n Input.addIcon(position, icons, this.textboxWrapper.container, this.respectiveElement, this.createElement);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n */\n TextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\n /**\n * Adding the multiple attributes as key-value pair to the TextBox element.\n *\n * @param {string} attributes - Specifies the attributes to be add to TextBox element.\n * @returns {void}\n */\n TextBox.prototype.addAttributes = function (attributes) {\n for (var _i = 0, _a = Object.keys(attributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'disabled') {\n this.setProperties({ enabled: false }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: true }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n }\n else if (key === 'class') {\n this.respectiveElement.classList.add(attributes[\"\" + key]);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: attributes[\"\" + key] }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n }\n else if (key === 'rows' && this.respectiveElement.tagName === 'TEXTAREA') {\n this.respectiveElement.setAttribute(key, attributes[\"\" + key]);\n }\n else {\n this.respectiveElement.setAttribute(key, attributes[\"\" + key]);\n }\n }\n };\n /**\n * Removing the multiple attributes as key-value pair to the TextBox element.\n *\n * @param { string[] } attributes - Specifies the attributes name to be removed from TextBox element.\n * @returns {void}\n */\n TextBox.prototype.removeAttributes = function (attributes) {\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var key = attributes_1[_i];\n if (key === 'disabled') {\n this.setProperties({ enabled: true }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: false }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: null }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n }\n else {\n this.respectiveElement.removeAttribute(key);\n }\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n TextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.respectiveElement && this.enabled) {\n this.respectiveElement.focus();\n if (this.textboxWrapper.container.classList.contains('e-input-group')\n || this.textboxWrapper.container.classList.contains('e-outline')\n || this.textboxWrapper.container.classList.contains('e-filled')) {\n addClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n TextBox.prototype.focusOut = function () {\n if (document.activeElement === this.respectiveElement && this.enabled) {\n this.respectiveElement.blur();\n if (this.textboxWrapper.container.classList.contains('e-input-group')\n || this.textboxWrapper.container.classList.contains('e-outline')\n || this.textboxWrapper.container.classList.contains('e-filled')) {\n removeClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n __decorate([\n Property('text')\n ], TextBox.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"value\", void 0);\n __decorate([\n Property('Never')\n ], TextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property('')\n ], TextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('on')\n ], TextBox.prototype, \"autocomplete\", void 0);\n __decorate([\n Property({})\n ], TextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"multiline\", void 0);\n __decorate([\n Property(true)\n ], TextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"input\", void 0);\n TextBox = __decorate([\n NotifyPropertyChanges\n ], TextBox);\n return TextBox;\n}(Component));\nexport { TextBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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, Property, Event, EventHandler, L10n, compile, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, detach, append, Animation } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, KeyboardEvents, setValue, getValue, ChildProperty } from '@syncfusion/ej2-base';\nimport { Collection, Complex, Browser, Ajax, getUniqueID, closest, remove } from '@syncfusion/ej2-base';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { select, selectAll } from '@syncfusion/ej2-base';\nvar CONTROL_WRAPPER = 'e-upload e-control-wrapper';\nvar INPUT_WRAPPER = 'e-file-select';\nvar DROP_AREA = 'e-file-drop';\nvar DROP_WRAPPER = 'e-file-select-wrap';\nvar LIST_PARENT = 'e-upload-files';\nvar FILE = 'e-upload-file-list';\nvar STATUS = 'e-file-status';\nvar ACTION_BUTTONS = 'e-upload-actions';\nvar UPLOAD_BUTTONS = 'e-file-upload-btn e-css e-btn e-flat e-primary';\nvar CLEAR_BUTTONS = 'e-file-clear-btn e-css e-btn e-flat';\nvar FILE_NAME = 'e-file-name';\nvar FILE_TYPE = 'e-file-type';\nvar FILE_SIZE = 'e-file-size';\nvar REMOVE_ICON = 'e-file-remove-btn';\nvar DELETE_ICON = 'e-file-delete-btn';\nvar SPINNER_PANE = 'e-spinner-pane';\nvar ABORT_ICON = 'e-file-abort-btn';\nvar RETRY_ICON = 'e-file-reload-btn';\nvar DRAG_HOVER = 'e-upload-drag-hover';\nvar PROGRESS_WRAPPER = 'e-upload-progress-wrap';\nvar PROGRESSBAR = 'e-upload-progress-bar';\nvar PROGRESSBAR_TEXT = 'e-progress-bar-text';\nvar UPLOAD_INPROGRESS = 'e-upload-progress';\nvar UPLOAD_SUCCESS = 'e-upload-success';\nvar UPLOAD_FAILED = 'e-upload-fails';\nvar TEXT_CONTAINER = 'e-file-container';\nvar VALIDATION_FAILS = 'e-validation-fails';\nvar RTL = 'e-rtl';\nvar DISABLED = 'e-disabled';\nvar RTL_CONTAINER = 'e-rtl-container';\nvar ICON_FOCUSED = 'e-clear-icon-focus';\nvar PROGRESS_INNER_WRAPPER = 'e-progress-inner-wrap';\nvar PAUSE_UPLOAD = 'e-file-pause-btn';\nvar RESUME_UPLOAD = 'e-file-play-btn';\nvar RESTRICT_RETRY = 'e-restrict-retry';\nvar wrapperAttr = ['title', 'style', 'class'];\nvar FORM_UPLOAD = 'e-form-upload';\nvar HIDDEN_INPUT = 'e-hidden-file-input';\nvar INVALID_FILE = 'e-file-invalid';\nvar INFORMATION = 'e-file-information';\nvar FilesProp = /** @class */ (function (_super) {\n __extends(FilesProp, _super);\n function FilesProp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], FilesProp.prototype, \"name\", void 0);\n __decorate([\n Property(null)\n ], FilesProp.prototype, \"size\", void 0);\n __decorate([\n Property('')\n ], FilesProp.prototype, \"type\", void 0);\n return FilesProp;\n}(ChildProperty));\nexport { FilesProp };\nvar ButtonsProps = /** @class */ (function (_super) {\n __extends(ButtonsProps, _super);\n function ButtonsProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Browse...')\n ], ButtonsProps.prototype, \"browse\", void 0);\n __decorate([\n Property('Upload')\n ], ButtonsProps.prototype, \"upload\", void 0);\n __decorate([\n Property('Clear')\n ], ButtonsProps.prototype, \"clear\", void 0);\n return ButtonsProps;\n}(ChildProperty));\nexport { ButtonsProps };\nvar AsyncSettings = /** @class */ (function (_super) {\n __extends(AsyncSettings, _super);\n function AsyncSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], AsyncSettings.prototype, \"saveUrl\", void 0);\n __decorate([\n Property('')\n ], AsyncSettings.prototype, \"removeUrl\", void 0);\n __decorate([\n Property(0)\n ], AsyncSettings.prototype, \"chunkSize\", void 0);\n __decorate([\n Property(3)\n ], AsyncSettings.prototype, \"retryCount\", void 0);\n __decorate([\n Property(500)\n ], AsyncSettings.prototype, \"retryAfterDelay\", void 0);\n return AsyncSettings;\n}(ChildProperty));\nexport { AsyncSettings };\n/**\n * The uploader component allows to upload images, documents, and other files from local to server.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Uploader = /** @class */ (function (_super) {\n __extends(Uploader, _super);\n /**\n * Triggers when change the Uploader value.\n *\n * @param {UploaderModel} options - Specifies the Uploader model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function Uploader(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.initialAttr = { accept: null, multiple: false, disabled: false };\n _this.uploadedFilesData = [];\n _this.base64String = [];\n _this.isForm = false;\n _this.allTypes = false;\n _this.pausedData = [];\n _this.uploadMetaData = [];\n _this.tabIndex = '0';\n _this.btnTabIndex = '0';\n _this.disableKeyboardNavigation = false;\n _this.count = -1;\n _this.actionCompleteCount = 0;\n _this.flag = true;\n _this.selectedFiles = [];\n _this.uploaderName = 'UploadFiles';\n _this.fileStreams = [];\n _this.newFileRef = 0;\n _this.isFirstFileOnSelection = false;\n _this.dragCounter = 0;\n _this.isAngular = false;\n /**\n * Get the file item(li) which are shown in file list.\n *\n * @private\n */\n _this.fileList = [];\n /**\n * Get the data of files which are shown in file list.\n *\n * @private\n */\n _this.filesData = [];\n _this.uploaderOptions = options;\n return _this;\n }\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {UploaderModel} newProp - Returns the dynamic property value of the component.\n * @param {UploaderModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n Uploader.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 'allowedExtensions':\n this.setExtensions(this.allowedExtensions);\n this.clearAll();\n break;\n case 'enabled':\n this.setControlStatus();\n break;\n case 'multiple':\n this.setMultipleSelection();\n break;\n case 'enableRtl':\n this.setRTL();\n this.reRenderFileList();\n break;\n case 'buttons':\n this.buttons.browse = isNullOrUndefined(this.buttons.browse) ? '' : this.buttons.browse;\n this.buttons.clear = isNullOrUndefined(this.buttons.clear) ? '' : this.buttons.clear;\n this.buttons.upload = isNullOrUndefined(this.buttons.upload) ? '' : this.buttons.upload;\n this.renderButtonTemplates();\n break;\n case 'dropArea':\n this.unBindDropEvents();\n this.updateDropArea();\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.checkHTMLAttributes(true);\n break;\n case 'files':\n this.renderPreLoadFiles();\n break;\n case 'directoryUpload':\n this.updateDirectoryAttributes();\n break;\n case 'template':\n var ejInstance = getValue('ej2_instances', this.element);\n if (ejInstance[0].isReact) {\n this.reRenderFileList();\n }\n else {\n this.clearAll();\n }\n break;\n case 'minFileSize':\n case 'maxFileSize':\n case 'autoUpload':\n this.clearAll();\n break;\n case 'sequentialUpload':\n this.clearAll();\n break;\n case 'locale':\n this.l10n.setLocale(this.locale);\n this.setLocalizedTexts();\n this.preLocaleObj = getValue('currentLocale', this.l10n);\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n }\n }\n };\n Uploader.prototype.setLocalizedTexts = function () {\n if (isNullOrUndefined(this.template)) {\n if (typeof (this.buttons.browse) === 'string') {\n this.browseButton.innerText = (this.buttons.browse === 'Browse...') ?\n this.localizedTexts('Browse') : this.buttons.browse;\n this.browseButton.setAttribute('title', this.browseButton.innerText);\n if (this.uploadWrapper && !isNullOrUndefined(this.uploadWrapper.querySelector('.' + DROP_AREA))) {\n this.uploadWrapper.querySelector('.' + DROP_AREA).innerHTML = this.localizedTexts('dropFilesHint');\n }\n }\n this.updateFileList();\n }\n };\n Uploader.prototype.getKeyValue = function (val) {\n var keyValue;\n for (var _i = 0, _a = Object.keys(this.preLocaleObj); _i < _a.length; _i++) {\n var key = _a[_i];\n if (this.preLocaleObj[\"\" + key] === val) {\n keyValue = key;\n }\n }\n return keyValue;\n };\n Uploader.prototype.updateFileList = function () {\n var element;\n /* istanbul ignore next */\n if (this.fileList.length > 0 && !isNullOrUndefined(this.uploadWrapper.querySelector('.' + LIST_PARENT))) {\n for (var i = 0; i < this.fileList.length; i++) {\n element = this.fileList[i].querySelector('.e-file-status');\n element.innerHTML = this.localizedTexts(this.getKeyValue(this.filesData[i].status));\n this.filesData[i].status = this.localizedTexts(this.getKeyValue(this.filesData[i].status));\n if (this.fileList[i].classList.contains(UPLOAD_SUCCESS)) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('delete'));\n }\n if (this.fileList[i].querySelector('.e-file-play-btn')) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('resume'));\n }\n if (this.fileList[i].querySelector('.e-file-remove-btn')) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('remove'));\n }\n if (this.fileList[i].querySelector('.e-file-reload-btn')) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('retry'));\n }\n if (!this.autoUpload) {\n this.uploadButton.innerText = (this.buttons.upload === 'Upload') ?\n this.localizedTexts('Upload') : this.buttons.upload;\n this.uploadButton.setAttribute('title', this.localizedTexts('Upload'));\n this.clearButton.innerText = (this.buttons.clear === 'Clear') ?\n this.localizedTexts('Clear') : this.buttons.clear;\n this.clearButton.setAttribute('title', this.localizedTexts('Clear'));\n }\n }\n }\n };\n Uploader.prototype.reRenderFileList = function () {\n if (this.listParent) {\n detach(this.listParent);\n this.listParent = null;\n this.fileList = [];\n this.internalCreateFileList(this.filesData);\n if (this.actionButtons) {\n this.removeActionButtons();\n this.renderActionButtons();\n this.checkActionButtonStatus();\n }\n }\n };\n Uploader.prototype.preRender = function () {\n this.localeText = { Browse: 'Browse...', Clear: 'Clear', Upload: 'Upload', invalidFileName: 'File Name is not allowed',\n dropFilesHint: 'Or drop files here', invalidMaxFileSize: 'File size is too large',\n invalidMinFileSize: 'File size is too small', invalidFileType: 'File type is not allowed',\n uploadFailedMessage: 'File failed to upload', uploadSuccessMessage: 'File uploaded successfully',\n removedSuccessMessage: 'File removed successfully', removedFailedMessage: 'Unable to remove file', inProgress: 'Uploading',\n readyToUploadMessage: 'Ready to upload', abort: 'Abort', remove: 'Remove', cancel: 'Cancel', delete: 'Delete file',\n pauseUpload: 'File upload paused', pause: 'Pause', resume: 'Resume', retry: 'Retry',\n fileUploadCancel: 'File upload canceled', invalidFileSelection: 'Invalid files selected', totalFiles: 'Total files',\n size: 'Size'\n };\n this.l10n = new L10n('uploader', this.localeText, this.locale);\n this.preLocaleObj = getValue('currentLocale', this.l10n);\n this.formRendered();\n this.updateHTMLAttrToElement();\n this.checkHTMLAttributes(false);\n var ejInstance = getValue('ej2_instances', this.element);\n /* istanbul ignore next */\n if (this.element.tagName === 'EJS-UPLOADER') {\n var inputElement = this.createElement('input', { attrs: { type: 'file' } });\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n if (this.element.attributes[index].nodeName !== 'id') {\n inputElement.setAttribute(this.element.attributes[index].nodeName, this.element.attributes[index].nodeValue);\n }\n else if (this.element.attributes[index].nodeName === 'id') {\n inputElement.setAttribute(this.element.attributes[index].nodeName, getUniqueID('uploader'));\n }\n inputElement.innerHTML = this.element.innerHTML;\n }\n if (!inputElement.hasAttribute('name')) {\n inputElement.setAttribute('name', 'UploadFiles');\n }\n this.element.appendChild(inputElement);\n this.element = inputElement;\n setValue('ej2_instances', ejInstance, this.element);\n }\n /* istanbul ignore next */\n if (ejInstance[0].isPureReactComponent) {\n if (!isNullOrUndefined(ejInstance[0].props.name)) {\n this.element.setAttribute('name', ejInstance[0].props.name);\n }\n else if (!isNullOrUndefined(ejInstance[0].props.id) && isNullOrUndefined(ejInstance[0].props.name)) {\n this.element.setAttribute('name', ejInstance[0].props.id);\n }\n else {\n this.element.setAttribute('name', 'UploadFiles');\n }\n }\n if (isNullOrUndefined(this.element.getAttribute('name'))) {\n this.element.setAttribute('name', this.element.getAttribute('id'));\n }\n if (!this.element.hasAttribute('type')) {\n this.element.setAttribute('type', 'file');\n }\n this.updateDirectoryAttributes();\n this.keyConfigs = {\n enter: 'enter'\n };\n if (this.element.hasAttribute('tabindex')) {\n this.tabIndex = this.element.getAttribute('tabindex');\n }\n this.browserName = Browser.info.name;\n this.uploaderName = this.element.getAttribute('name');\n };\n Uploader.prototype.formRendered = function () {\n var parentEle = closest(this.element, 'form');\n if (!isNullOrUndefined(parentEle)) {\n for (; parentEle && parentEle !== document.documentElement; parentEle = parentEle.parentElement) {\n if (parentEle.tagName === 'FORM') {\n this.isForm = true;\n this.formElement = parentEle;\n parentEle.setAttribute('enctype', 'multipart/form-data');\n parentEle.setAttribute('encoding', 'multipart/form-data');\n }\n }\n }\n };\n Uploader.prototype.getPersistData = function () {\n return this.addOnPersist(['filesData']);\n };\n /**\n * Return the module name of the component.\n *\n * @returns {string} Returns the component name.\n */\n Uploader.prototype.getModuleName = function () {\n return 'uploader';\n };\n Uploader.prototype.updateDirectoryAttributes = function () {\n if (this.directoryUpload) {\n this.element.setAttribute('directory', 'true');\n this.element.setAttribute('webkitdirectory', 'true');\n }\n else {\n this.element.removeAttribute('directory');\n this.element.removeAttribute('webkitdirectory');\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Uploader.prototype.render = function () {\n this.renderBrowseButton();\n this.initializeUpload();\n this.updateHTMLAttrToWrapper();\n this.wireEvents();\n this.setMultipleSelection();\n this.setExtensions(this.allowedExtensions);\n this.setRTL();\n this.renderPreLoadFiles();\n this.setControlStatus();\n this.setCSSClass();\n };\n Uploader.prototype.renderBrowseButton = function () {\n this.browseButton = this.createElement('button', { className: 'e-css e-btn', attrs: { 'type': 'button' } });\n this.browseButton.setAttribute('tabindex', this.tabIndex);\n if (typeof (this.buttons.browse) === 'string') {\n this.browseButton.textContent = (this.buttons.browse === 'Browse...') ?\n this.localizedTexts('Browse') : this.buttons.browse;\n this.browseButton.setAttribute('title', this.browseButton.innerText);\n }\n else {\n this.browseButton.appendChild(this.buttons.browse);\n }\n this.element.setAttribute('aria-label', 'Uploader');\n };\n Uploader.prototype.renderActionButtons = function () {\n this.element.setAttribute('tabindex', '-1');\n this.actionButtons = this.createElement('div', { className: ACTION_BUTTONS });\n this.uploadButton = this.createElement('button', { className: UPLOAD_BUTTONS,\n attrs: { 'type': 'button', 'tabindex': this.btnTabIndex } });\n this.clearButton = this.createElement('button', { className: CLEAR_BUTTONS,\n attrs: { 'type': 'button', 'tabindex': this.btnTabIndex } });\n this.actionButtons.appendChild(this.clearButton);\n this.actionButtons.appendChild(this.uploadButton);\n this.renderButtonTemplates();\n this.uploadWrapper.appendChild(this.actionButtons);\n this.browseButton.blur();\n if (!this.isPreloadFiles) {\n this.uploadButton.focus();\n }\n this.wireActionButtonEvents();\n };\n /* istanbul ignore next */\n Uploader.prototype.serverActionButtonsEventBind = function (element) {\n if (element && !this.isForm) {\n this.browseButton.blur();\n this.actionButtons = element;\n this.uploadButton = this.actionButtons.querySelector('.e-file-upload-btn');\n this.clearButton = this.actionButtons.querySelector('.e-file-clear-btn');\n this.uploadButton.focus();\n this.unwireActionButtonEvents();\n this.wireActionButtonEvents();\n this.checkActionButtonStatus();\n }\n };\n Uploader.prototype.wireActionButtonEvents = function () {\n EventHandler.add(this.uploadButton, 'click', this.uploadButtonClick, this);\n EventHandler.add(this.clearButton, 'click', this.clearButtonClick, this);\n };\n Uploader.prototype.unwireActionButtonEvents = function () {\n EventHandler.remove(this.uploadButton, 'click', this.uploadButtonClick);\n EventHandler.remove(this.clearButton, 'click', this.clearButtonClick);\n };\n Uploader.prototype.removeActionButtons = function () {\n if (this.actionButtons) {\n this.unwireActionButtonEvents();\n detach(this.actionButtons);\n this.actionButtons = null;\n }\n };\n Uploader.prototype.renderButtonTemplates = function () {\n if (typeof (this.buttons.browse) === 'string') {\n this.browseButton.textContent = (this.buttons.browse === 'Browse...') ?\n this.localizedTexts('Browse') : this.buttons.browse;\n this.browseButton.setAttribute('title', this.browseButton.textContent);\n }\n else {\n this.browseButton.innerHTML = '';\n this.browseButton.appendChild(this.buttons.browse);\n }\n if (this.uploadButton) {\n var uploadText = isNullOrUndefined(this.buttons.upload) ? 'Upload' : this.buttons.upload;\n this.buttons.upload = uploadText;\n if (typeof (this.buttons.upload) === 'string') {\n this.uploadButton.textContent = (this.buttons.upload === 'Upload') ?\n this.localizedTexts('Upload') : this.buttons.upload;\n this.uploadButton.setAttribute('title', this.uploadButton.textContent);\n }\n else {\n this.uploadButton.innerHTML = '';\n this.uploadButton.appendChild(this.buttons.upload);\n }\n }\n if (this.clearButton) {\n var clearText = isNullOrUndefined(this.buttons.clear) ? 'Clear' : this.buttons.clear;\n this.buttons.clear = clearText;\n if (typeof (this.buttons.clear) === 'string') {\n this.clearButton.textContent = (this.buttons.clear === 'Clear') ?\n this.localizedTexts('Clear') : this.buttons.clear;\n this.clearButton.setAttribute('title', this.clearButton.textContent);\n }\n else {\n this.clearButton.innerHTML = '';\n this.clearButton.appendChild(this.buttons.clear);\n }\n }\n };\n Uploader.prototype.initializeUpload = function () {\n this.element.setAttribute('tabindex', '-1');\n var inputWrapper = this.createElement('span', { className: INPUT_WRAPPER });\n this.element.parentElement.insertBefore(inputWrapper, this.element);\n this.dropAreaWrapper = this.createElement('div', { className: DROP_WRAPPER });\n this.element.parentElement.insertBefore(this.dropAreaWrapper, this.element);\n inputWrapper.appendChild(this.element);\n this.dropAreaWrapper.appendChild(this.browseButton);\n this.dropAreaWrapper.appendChild(inputWrapper);\n this.uploadWrapper = this.createElement('div', { className: CONTROL_WRAPPER });\n this.dropAreaWrapper.parentElement.insertBefore(this.uploadWrapper, this.dropAreaWrapper);\n this.uploadWrapper.appendChild(this.dropAreaWrapper);\n this.setDropArea();\n };\n Uploader.prototype.renderPreLoadFiles = function () {\n if (this.files.length) {\n if (this.enablePersistence && this.filesData.length) {\n this.internalCreateFileList(this.filesData);\n return;\n }\n if (isNullOrUndefined(this.files[0].size)) {\n return;\n }\n this.isPreloadFiles = true;\n var files = [].slice.call(this.files);\n var filesData = [];\n if (!this.multiple) {\n this.clearData();\n files = [files[0]];\n }\n for (var _i = 0, files_1 = files; _i < files_1.length; _i++) {\n var data = files_1[_i];\n var fileData = {\n name: data.name + '.' + data.type.split('.')[data.type.split('.').length - 1],\n rawFile: '',\n size: data.size,\n status: this.localizedTexts('uploadSuccessMessage'),\n type: data.type,\n validationMessages: { minSize: '', maxSize: '' },\n statusCode: '2'\n };\n filesData.push(fileData);\n this.filesData.push(fileData);\n }\n this.internalCreateFileList(filesData);\n if (!this.autoUpload && this.listParent && !this.actionButtons && (!this.isForm || this.allowUpload()) && this.showFileList) {\n this.renderActionButtons();\n }\n this.checkActionButtonStatus();\n if (this.sequentialUpload) {\n this.count = this.filesData.length - 1;\n }\n this.isPreloadFiles = false;\n }\n };\n Uploader.prototype.checkActionButtonStatus = function () {\n if (this.actionButtons) {\n var length_1 = this.uploadWrapper.querySelectorAll('.' + VALIDATION_FAILS).length +\n this.uploadWrapper.querySelectorAll('.e-upload-fails:not(.e-upload-progress)').length +\n this.uploadWrapper.querySelectorAll('span.' + UPLOAD_SUCCESS).length +\n this.uploadWrapper.querySelectorAll('span.' + UPLOAD_INPROGRESS).length;\n if (length_1 > 0 && length_1 === this.uploadWrapper.querySelectorAll('li').length) {\n this.uploadButton.setAttribute('disabled', 'disabled');\n }\n else {\n this.uploadButton.removeAttribute('disabled');\n }\n }\n };\n Uploader.prototype.setDropArea = function () {\n var dropTextArea = this.dropAreaWrapper.querySelector('.e-file-drop');\n if (this.dropArea) {\n this.dropZoneElement = (typeof (this.dropArea) !== 'string') ? this.dropArea :\n select(this.dropArea, document);\n var element = this.element;\n var enableDropText = false;\n while (element.parentNode) {\n element = element.parentNode;\n if (element === this.dropZoneElement) {\n enableDropText = true;\n if (!dropTextArea) {\n this.createDropTextHint();\n }\n else {\n dropTextArea.innerHTML = this.localizedTexts('dropFilesHint');\n }\n }\n }\n if (!enableDropText && dropTextArea) {\n remove(dropTextArea);\n }\n }\n else if (!isNullOrUndefined(this.uploaderOptions) && this.uploaderOptions.dropArea === undefined) {\n this.createDropTextHint();\n this.dropZoneElement = this.uploadWrapper;\n this.setProperties({ dropArea: this.uploadWrapper }, true);\n }\n this.bindDropEvents();\n };\n Uploader.prototype.updateDropArea = function () {\n if (this.dropArea) {\n this.setDropArea();\n }\n else {\n this.dropZoneElement = null;\n var dropTextArea = this.dropAreaWrapper.querySelector('.e-file-drop');\n if (dropTextArea) {\n remove(dropTextArea);\n }\n }\n };\n Uploader.prototype.createDropTextHint = function () {\n var fileDropArea = this.createElement('span', { className: DROP_AREA });\n fileDropArea.innerHTML = this.localizedTexts('dropFilesHint');\n this.dropAreaWrapper.appendChild(fileDropArea);\n };\n Uploader.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 (wrapperAttr.indexOf(pro) < 0) {\n this.element.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n };\n Uploader.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 (wrapperAttr.indexOf(pro) > -1) {\n if (pro === 'class') {\n var updatedClassValues = (this.htmlAttributes[\"\" + pro].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.uploadWrapper], updatedClassValues.split(' '));\n }\n }\n else if (pro === 'style') {\n var uploadStyle = this.uploadWrapper.getAttribute(pro);\n uploadStyle = !isNullOrUndefined(uploadStyle) ? (uploadStyle + this.htmlAttributes[\"\" + pro]) :\n this.htmlAttributes[\"\" + pro];\n this.uploadWrapper.setAttribute(pro, uploadStyle);\n }\n else {\n this.uploadWrapper.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n }\n };\n Uploader.prototype.setMultipleSelection = function () {\n if (this.multiple && !this.element.hasAttribute('multiple')) {\n var newAttr = document.createAttribute('multiple');\n newAttr.value = 'multiple';\n this.element.setAttributeNode(newAttr);\n }\n else if (!this.multiple) {\n this.element.removeAttribute('multiple');\n }\n };\n Uploader.prototype.checkAutoUpload = function (fileData) {\n if (this.autoUpload) {\n if (this.sequentialUpload) {\n /* istanbul ignore next */\n this.sequenceUpload(fileData);\n }\n else {\n this.upload(fileData);\n }\n this.removeActionButtons();\n }\n else if (!this.actionButtons) {\n this.renderActionButtons();\n }\n this.checkActionButtonStatus();\n };\n Uploader.prototype.sequenceUpload = function (fileData) {\n if (this.filesData.length - fileData.length === 0 ||\n this.filesData[(this.filesData.length - fileData.length - 1)].statusCode !== '1') {\n if (this.multiple || this.count < 0) {\n ++this.count;\n }\n var isFileListCreated = this.showFileList ? false : true;\n if (typeof this.filesData[this.count] === 'object') {\n this.isFirstFileOnSelection = false;\n this.upload(this.filesData[this.count], isFileListCreated);\n if (this.filesData[this.count].statusCode === '0') {\n this.sequenceUpload(fileData);\n }\n }\n else {\n --this.count;\n }\n }\n };\n Uploader.prototype.setCSSClass = function (oldCSSClass) {\n var updatedOldCssClass = oldCSSClass;\n if (!isNullOrUndefined(oldCSSClass)) {\n updatedOldCssClass = (oldCSSClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(oldCSSClass) && updatedOldCssClass !== '') {\n removeClass([this.uploadWrapper], updatedOldCssClass.split(' '));\n }\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(this.cssClass) && updatedCssClassValue !== '') {\n addClass([this.uploadWrapper], updatedCssClassValue.split(updatedCssClassValue.indexOf(',') > -1 ? ',' : ' '));\n }\n };\n Uploader.prototype.wireEvents = function () {\n EventHandler.add(this.browseButton, 'click', this.browseButtonClick, this);\n EventHandler.add(this.element, 'change', this.onSelectFiles, this);\n EventHandler.add(document, 'click', this.removeFocus, this);\n this.keyboardModule = new KeyboardEvents(this.uploadWrapper, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.resetForm, this);\n }\n };\n Uploader.prototype.unWireEvents = function () {\n EventHandler.remove(this.browseButton, 'click', this.browseButtonClick);\n EventHandler.remove(this.element, 'change', this.onSelectFiles);\n EventHandler.remove(document, 'click', this.removeFocus);\n if (this.isForm) {\n EventHandler.remove(this.formElement, 'reset', this.resetForm);\n }\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n }\n };\n Uploader.prototype.resetForm = function () {\n this.clearAll();\n };\n Uploader.prototype.keyActionHandler = function (e) {\n var targetElement = e.target;\n switch (e.action) {\n case 'enter':\n if (e.target === this.clearButton) {\n this.clearButtonClick();\n }\n else if (e.target === this.uploadButton) {\n this.uploadButtonClick();\n }\n else if (e.target === this.browseButton) {\n this.browseButtonClick();\n }\n else if (targetElement.classList.contains(PAUSE_UPLOAD)) {\n var metaData = this.getCurrentMetaData(null, e);\n metaData.file.statusCode = '4';\n metaData.file.status = this.localizedTexts('pauseUpload');\n this.abortUpload(metaData, false);\n }\n else if (targetElement.classList.contains(RESUME_UPLOAD)) {\n this.resumeUpload(this.getCurrentMetaData(null, e), e);\n }\n else if (targetElement.classList.contains(RETRY_ICON)) {\n var metaData = this.getCurrentMetaData(null, e);\n if (!isNullOrUndefined(metaData)) {\n metaData.file.statusCode = '1';\n metaData.file.status = this.localizedTexts('readyToUploadMessage');\n this.chunkUpload(metaData.file);\n }\n else {\n var target = e.target.parentElement;\n var fileData = this.filesData[this.fileList.indexOf(target)];\n this.retry(fileData);\n }\n }\n else {\n this.removeFiles(e);\n if (!targetElement.classList.contains(ABORT_ICON)) {\n this.browseButton.focus();\n }\n }\n e.preventDefault();\n e.stopPropagation();\n break;\n }\n };\n Uploader.prototype.getCurrentMetaData = function (fileInfo, e) {\n var fileData;\n var targetMetaData;\n if (isNullOrUndefined(fileInfo)) {\n var target = e.target.parentElement;\n fileData = this.filesData[this.fileList.indexOf(target)];\n }\n else {\n fileData = fileInfo;\n }\n for (var i = 0; i < this.uploadMetaData.length; i++) {\n if (this.uploadMetaData[i].file.name === fileData.name) {\n targetMetaData = this.uploadMetaData[i];\n }\n }\n return targetMetaData;\n };\n Uploader.prototype.removeFocus = function () {\n if (this.uploadWrapper && this.listParent && this.listParent.querySelector('.' + ICON_FOCUSED)) {\n document.activeElement.blur();\n this.listParent.querySelector('.' + ICON_FOCUSED).classList.remove(ICON_FOCUSED);\n }\n };\n Uploader.prototype.browseButtonClick = function () {\n this.element.click();\n };\n Uploader.prototype.uploadButtonClick = function () {\n if (this.sequentialUpload) {\n this.sequenceUpload(this.filesData);\n }\n else {\n this.upload(this.filesData);\n }\n };\n Uploader.prototype.clearButtonClick = function () {\n this.clearAll();\n /* istanbul ignore next */\n if (this.sequentialUpload) {\n this.count = -1;\n }\n this.actionCompleteCount = 0;\n };\n Uploader.prototype.bindDropEvents = function () {\n if (this.dropZoneElement) {\n EventHandler.add(this.dropZoneElement, 'drop', this.dropElement, this);\n EventHandler.add(this.dropZoneElement, 'dragover', this.dragHover, this);\n EventHandler.add(this.dropZoneElement, 'dragleave', this.onDragLeave, this);\n EventHandler.add(this.dropZoneElement, 'paste', this.onPasteFile, this);\n EventHandler.add(this.dropZoneElement, 'dragenter', this.onDragEnter, this);\n }\n };\n Uploader.prototype.unBindDropEvents = function () {\n if (this.dropZoneElement) {\n EventHandler.remove(this.dropZoneElement, 'drop', this.dropElement);\n EventHandler.remove(this.dropZoneElement, 'dragover', this.dragHover);\n EventHandler.remove(this.dropZoneElement, 'dragleave', this.onDragLeave);\n EventHandler.remove(this.dropZoneElement, 'dragenter', this.onDragEnter);\n }\n };\n Uploader.prototype.onDragEnter = function (e) {\n if (!this.enabled) {\n return;\n }\n this.dropZoneElement.classList.add(DRAG_HOVER);\n this.dragCounter = this.dragCounter + 1;\n e.preventDefault();\n e.stopPropagation();\n };\n Uploader.prototype.onDragLeave = function () {\n if (!this.enabled) {\n return;\n }\n this.dragCounter = this.dragCounter - 1;\n if (!this.dragCounter) {\n this.dropZoneElement.classList.remove(DRAG_HOVER);\n }\n };\n Uploader.prototype.dragHover = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.dropEffect !== 'Default') {\n e.dataTransfer.dropEffect = this.dropEffect.toLowerCase();\n }\n e.preventDefault();\n e.stopPropagation();\n };\n /* istanbul ignore next */\n Uploader.prototype.dropElement = function (e) {\n this.dragCounter = 0;\n this.dropZoneElement.classList.remove(DRAG_HOVER);\n this.onSelectFiles(e);\n e.preventDefault();\n e.stopPropagation();\n };\n /* istanbul ignore next */\n Uploader.prototype.onPasteFile = function (event) {\n var item = event.clipboardData.items;\n if (event.type === 'paste' && this.browserName !== 'msie' && this.browserName !== 'edge' && this.browserName !== 'safari') {\n this.element.files = event.clipboardData.files;\n }\n if (item.length !== 1 && !this.multiple) {\n return;\n }\n for (var file = 0; file < item.length; file++) {\n var pasteFile = [].slice.call(item)[file];\n if ((pasteFile.kind === 'file') || pasteFile.type.match('^image/')) {\n this.renderSelectedFiles(event, [pasteFile.getAsFile()], false, true);\n }\n }\n };\n Uploader.prototype.getSelectedFiles = function (index) {\n var data = [];\n var liElement = this.fileList[index];\n var allFiles = this.getFilesData();\n var nameElements = +liElement.getAttribute('data-files-count');\n var startIndex = 0;\n for (var i = 0; i < index; i++) {\n startIndex += (+this.fileList[i].getAttribute('data-files-count'));\n }\n for (var j = startIndex; j < (startIndex + nameElements); j++) {\n data.push(allFiles[j]);\n }\n return data;\n };\n Uploader.prototype.removeFiles = function (args) {\n if (!this.enabled) {\n return;\n }\n var selectedElement = args.target.parentElement;\n var index = this.fileList.indexOf(selectedElement);\n var liElement = this.fileList[index];\n var formUpload = this.isFormUpload();\n var fileData = formUpload ? this.getSelectedFiles(index) : this.getFilesInArray(this.filesData[index]);\n if (isNullOrUndefined(fileData)) {\n return;\n }\n if (args.target.classList.contains(ABORT_ICON) && !formUpload) {\n fileData[0].statusCode = '5';\n if (!isNullOrUndefined(liElement)) {\n var spinnerTarget = liElement.querySelector('.' + ABORT_ICON);\n createSpinner({ target: spinnerTarget, width: '20px' });\n showSpinner(spinnerTarget);\n }\n if (this.sequentialUpload) {\n /* istanbul ignore next */\n this.uploadSequential();\n }\n if (!(liElement.classList.contains(RESTRICT_RETRY))) {\n this.checkActionComplete(true);\n }\n }\n else if (!closest(args.target, '.' + SPINNER_PANE)) {\n this.remove(fileData, false, false, true, args);\n }\n this.checkActionButtonStatus();\n };\n Uploader.prototype.removeFilesData = function (file, customTemplate) {\n var index;\n if (customTemplate) {\n if (!this.showFileList) {\n index = this.filesData.indexOf(file);\n this.filesData.splice(index, 1);\n }\n return;\n }\n var selectedElement = this.getLiElement(file);\n if (isNullOrUndefined(selectedElement)) {\n return;\n }\n this.element.value = '';\n detach(selectedElement);\n index = this.fileList.indexOf(selectedElement);\n this.fileList.splice(index, 1);\n this.filesData.splice(index, 1);\n if (this.fileList.length === 0 && !isNullOrUndefined(this.listParent)) {\n detach(this.listParent);\n this.listParent = null;\n this.removeActionButtons();\n }\n if (this.sequentialUpload) {\n /* istanbul ignore next */\n if (index <= this.count) {\n --this.count;\n }\n }\n };\n Uploader.prototype.removeUploadedFile = function (file, eventArgs, removeDirectly, custom) {\n var _this = this;\n var selectedFiles = file;\n var ajax = new Ajax(this.asyncSettings.removeUrl, 'POST', true, null);\n ajax.emitError = false;\n var formData = new FormData();\n ajax.beforeSend = function (e) {\n eventArgs.currentRequest = ajax.httpRequest;\n if (!removeDirectly) {\n _this.trigger('removing', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n e.cancel = true;\n }\n else {\n _this.removingEventCallback(eventArgs, formData, selectedFiles, file);\n }\n });\n }\n else {\n _this.removingEventCallback(eventArgs, formData, selectedFiles, file);\n }\n };\n ajax.onLoad = function (e) {\n _this.removeCompleted(e, selectedFiles, custom);\n return {};\n };\n /* istanbul ignore next */\n ajax.onError = function (e) {\n _this.removeFailed(e, selectedFiles, custom);\n return {};\n };\n ajax.send(formData);\n };\n Uploader.prototype.removingEventCallback = function (eventArgs, formData, selectedFiles, file) {\n /* istanbul ignore next */\n var name = this.element.getAttribute('name');\n var liElement = this.getLiElement(file);\n if (!isNullOrUndefined(liElement) && (!isNullOrUndefined(liElement.querySelector('.' + DELETE_ICON)) ||\n !isNullOrUndefined(liElement.querySelector('.' + REMOVE_ICON)))) {\n var spinnerTarget = liElement.querySelector('.' + DELETE_ICON) ?\n liElement.querySelector('.' + DELETE_ICON) :\n liElement.querySelector('.' + REMOVE_ICON);\n createSpinner({ target: spinnerTarget, width: '20px' });\n showSpinner(spinnerTarget);\n }\n if (eventArgs.postRawFile && !isNullOrUndefined(selectedFiles.rawFile) && selectedFiles.rawFile !== '') {\n formData.append(name, selectedFiles.rawFile, selectedFiles.name);\n }\n else {\n formData.append(name, selectedFiles.name);\n }\n this.updateFormData(formData, eventArgs.customFormData);\n };\n /* istanbul ignore next */\n Uploader.prototype.updateFormData = function (formData, customData) {\n if (customData.length > 0 && customData[0]) {\n var _loop_1 = function (i) {\n var data = customData[i];\n // eslint-disable-next-line @typescript-eslint/tslint/config\n var value = Object.keys(data).map(function (e) {\n return data[\"\" + e];\n });\n formData.append(Object.keys(data)[0], value);\n };\n for (var i = 0; i < customData.length; i++) {\n _loop_1(i);\n }\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.updateCustomheader = function (request, currentRequest) {\n if (currentRequest.length > 0 && currentRequest[0]) {\n var _loop_2 = function (i) {\n var data = currentRequest[i];\n // eslint-disable-next-line @typescript-eslint/tslint/config\n var value = Object.keys(data).map(function (e) {\n return data[\"\" + e];\n });\n request.setRequestHeader(Object.keys(data)[0], value);\n };\n for (var i = 0; i < currentRequest.length; i++) {\n _loop_2(i);\n }\n }\n };\n Uploader.prototype.removeCompleted = function (e, files, customTemplate) {\n var response = e && e.currentTarget ? this.getResponse(e) : null;\n var status = e.target;\n if (status.readyState === 4 && status.status >= 200 && status.status <= 299) {\n var args = {\n e: e, response: response, operation: 'remove', file: this.updateStatus(files, this.localizedTexts('removedSuccessMessage'), '2')\n };\n this.trigger('success', args);\n this.removeFilesData(files, customTemplate);\n var index = this.uploadedFilesData.indexOf(files);\n this.uploadedFilesData.splice(index, 1);\n this.trigger('change', { files: this.uploadedFilesData });\n }\n else {\n this.removeFailed(e, files, customTemplate);\n }\n };\n Uploader.prototype.removeFailed = function (e, files, customTemplate) {\n var response = e && e.currentTarget ? this.getResponse(e) : null;\n var args = {\n e: e, response: response, operation: 'remove', file: this.updateStatus(files, this.localizedTexts('removedFailedMessage'), '0')\n };\n if (!customTemplate) {\n var index = this.filesData.indexOf(files);\n var rootElement = this.fileList[index];\n if (rootElement) {\n rootElement.classList.remove(UPLOAD_SUCCESS);\n rootElement.classList.add(UPLOAD_FAILED);\n var statusElement = rootElement.querySelector('.' + STATUS);\n if (statusElement) {\n statusElement.classList.remove(UPLOAD_SUCCESS);\n statusElement.classList.add(UPLOAD_FAILED);\n }\n }\n this.checkActionButtonStatus();\n }\n this.trigger('failure', args);\n var liElement = this.getLiElement(files);\n /* istanbul ignore next */\n if (!isNullOrUndefined(liElement) && !isNullOrUndefined(liElement.querySelector('.' + DELETE_ICON))) {\n var spinnerTarget = liElement.querySelector('.' + DELETE_ICON);\n hideSpinner(spinnerTarget);\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.getFilesFromFolder = function (event) {\n this.filesEntries = [];\n var items = this.multiple ?\n event.dataTransfer.items : [event.dataTransfer.items[0]];\n var validDirectoryUpload = this.checkDirectoryUpload(items);\n if (!validDirectoryUpload) {\n return;\n }\n var _loop_3 = function (i) {\n var item = items[i].webkitGetAsEntry();\n if (item.isFile) {\n var files_2 = [];\n (item).file(function (fileObj) {\n var path = item.fullPath;\n files_2.push({ 'path': path, 'file': fileObj });\n });\n this_1.renderSelectedFiles(event, files_2, true);\n }\n else if (item.isDirectory) {\n this_1.traverseFileTree(item, event);\n }\n };\n var this_1 = this;\n for (var i = 0; i < items.length; i++) {\n _loop_3(i);\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.checkDirectoryUpload = function (items) {\n for (var i = 0; items && i < items.length; i++) {\n var item = items[i].webkitGetAsEntry();\n if (item.isDirectory) {\n return true;\n }\n }\n return false;\n };\n /* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n /* istanbul ignore next */\n Uploader.prototype.traverseFileTree = function (item, event) {\n /* eslint-enable @typescript-eslint/explicit-module-boundary-types */\n if (item.isFile) {\n this.filesEntries.push(item);\n }\n else if (item.isDirectory) {\n var directoryReader = item.createReader();\n this.readFileFromDirectory(directoryReader, event);\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.readFileFromDirectory = function (directoryReader, event) {\n var _this = this;\n directoryReader.readEntries(function (entries) {\n for (var i = 0; i < entries.length; i++) {\n _this.traverseFileTree(entries[i], event);\n }\n _this.pushFilesEntries(event);\n if (entries.length) {\n _this.readFileFromDirectory(directoryReader);\n }\n });\n };\n Uploader.prototype.pushFilesEntries = function (event) {\n var _this = this;\n var files = [];\n var _loop_4 = function (i) {\n this_2.filesEntries[i].file(function (fileObj) {\n if (_this.filesEntries.length) {\n var path = _this.filesEntries[i].fullPath;\n files.push({ 'path': path, 'file': fileObj });\n if (i === _this.filesEntries.length - 1) {\n _this.filesEntries = [];\n _this.renderSelectedFiles(event, files, true);\n }\n }\n });\n };\n var this_2 = this;\n for (var i = 0; i < this.filesEntries.length; i++) {\n _loop_4(i);\n }\n };\n Uploader.prototype.onSelectFiles = function (args) {\n if (!this.enabled) {\n return;\n }\n var targetFiles;\n /* istanbul ignore next */\n if (args.type === 'drop') {\n if (this.directoryUpload) {\n this.getFilesFromFolder(args);\n }\n else {\n var files = this.sortFilesList = args.dataTransfer.files;\n if (this.browserName !== 'msie' && this.browserName !== 'edge' && this.browserName !== 'safari') {\n this.element.files = files;\n }\n if (files.length > 0) {\n targetFiles = this.multiple ? this.sortFileList(files) : [files[0]];\n this.renderSelectedFiles(args, targetFiles);\n }\n }\n }\n else {\n targetFiles = [].slice.call(args.target.files);\n this.renderSelectedFiles(args, targetFiles);\n }\n if (this.isAngular || this.isReact) {\n args.stopPropagation();\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.getBase64 = function (file) {\n return new Promise(function (resolve, reject) {\n var fileReader = new FileReader();\n fileReader.readAsDataURL(file);\n fileReader.onload = function () { return resolve(fileReader.result); };\n fileReader.onerror = function (error) { return reject(error); };\n });\n };\n /* istanbul ignore next */\n /* tslint:ignore */\n Uploader.prototype.renderSelectedFiles = function (args, targetFiles, directory, paste) {\n var _this = this;\n this.base64String = [];\n var eventArgs = {\n event: args,\n cancel: false,\n filesData: [],\n isModified: false,\n modifiedFilesData: [],\n progressInterval: '',\n isCanceled: false,\n currentRequest: null,\n customFormData: null\n };\n /* istanbul ignore next */\n if (targetFiles.length < 1) {\n eventArgs.isCanceled = true;\n this.trigger('selected', eventArgs);\n return;\n }\n this.flag = true;\n var fileData = [];\n if (!this.multiple) {\n this.clearData(true);\n this.actionCompleteCount = 0;\n targetFiles = [targetFiles[0]];\n }\n for (var i = 0; i < targetFiles.length; i++) {\n var file = directory ? targetFiles[i].file : targetFiles[i];\n this.updateInitialFileDetails(args, targetFiles, file, i, fileData, directory, paste);\n }\n eventArgs.filesData = fileData;\n if (this.allowedExtensions.indexOf('*') > -1) {\n this.allTypes = true;\n }\n if (this.enableHtmlSanitizer) {\n for (var i = 0; i < fileData.length; i++) {\n var sanitizeFile = SanitizeHtmlHelper.beforeSanitize();\n var sanitizeFileName = SanitizeHtmlHelper.serializeValue(sanitizeFile, fileData[parseInt(i.toString())].name);\n var currentFileName = fileData[parseInt(i.toString())].name;\n var isUTF8 = false;\n for (var i_1 = 0; i_1 < currentFileName.length; i_1++) {\n if (currentFileName.charCodeAt(i_1) > 127) {\n isUTF8 = true;\n break;\n }\n }\n var htmlTagRegex = /<([a-z][a-z0-9]*)\\b[^>]*>(.*?)<\\/\\1>/i;\n var hasHTMLString = htmlTagRegex.test(currentFileName);\n if ((sanitizeFileName !== fileData[parseInt(i.toString())].name) && !(isUTF8 && !hasHTMLString)) {\n var encodedFileName = targetFiles[parseInt(i.toString())].name.replace(/[\\u00A0-\\u9999<>\\&]/g, function (i) {\n return '&#' + i.charCodeAt(0) + ';';\n });\n fileData[parseInt(i.toString())].name = encodedFileName;\n fileData[parseInt(i.toString())].status = this.localizedTexts('invalidFileName');\n fileData[parseInt(i.toString())].statusCode = '0';\n }\n }\n }\n if (!this.allTypes) {\n fileData = this.checkExtension(fileData);\n }\n this.trigger('selected', eventArgs, function (eventArgs) {\n _this._internalRenderSelect(eventArgs, fileData);\n });\n };\n Uploader.prototype.updateInitialFileDetails = function (args, \n // eslint-disable-next-line @typescript-eslint/indent\n targetFiles, file, i, fileData, directory, paste) {\n var fileName = directory ? targetFiles[i].path.substring(1, targetFiles[i].path.length) : paste ?\n getUniqueID(file.name.substring(0, file.name.lastIndexOf('.'))) + '.' + this.getFileType(file.name) :\n this.directoryUpload ? targetFiles[i].webkitRelativePath : file.name;\n var fileDetails = {\n name: fileName,\n rawFile: file,\n size: file.size,\n status: this.localizedTexts('readyToUploadMessage'),\n type: this.getFileType(file.name),\n validationMessages: this.validatedFileSize(file.size),\n statusCode: '1',\n id: getUniqueID(file.name.substring(0, file.name.lastIndexOf('.'))) + '.' + this.getFileType(file.name)\n };\n /* istanbul ignore next */\n if (paste) {\n fileDetails.fileSource = 'paste';\n }\n fileDetails.status = fileDetails.validationMessages.minSize !== '' ? this.localizedTexts('invalidMinFileSize') :\n fileDetails.validationMessages.maxSize !== '' ? this.localizedTexts('invalidMaxFileSize') : fileDetails.status;\n if (fileDetails.validationMessages.minSize !== '' || fileDetails.validationMessages.maxSize !== '') {\n fileDetails.statusCode = '0';\n }\n fileData.push(fileDetails);\n };\n Uploader.prototype._internalRenderSelect = function (eventArgs, fileData) {\n if (!eventArgs.cancel) {\n /* istanbul ignore next */\n this.selectedFiles = this.selectedFiles.concat(fileData);\n this.btnTabIndex = this.disableKeyboardNavigation ? '-1' : '0';\n if (this.showFileList) {\n if (eventArgs.isModified && eventArgs.modifiedFilesData.length > 0) {\n for (var j = 0; j < eventArgs.modifiedFilesData.length; j++) {\n for (var k = 0; k < fileData.length; k++) {\n if (eventArgs.modifiedFilesData[j].id === fileData[k].id) {\n eventArgs.modifiedFilesData[j].rawFile = fileData[k].rawFile;\n }\n }\n }\n var dataFiles = this.allTypes ? eventArgs.modifiedFilesData :\n this.checkExtension(eventArgs.modifiedFilesData);\n this.updateSortedFileList(dataFiles);\n this.filesData = this.filesData.concat(dataFiles);\n if (!this.isForm || this.allowUpload()) {\n this.checkAutoUpload(dataFiles);\n }\n }\n else {\n this.internalCreateFileList(fileData);\n if (this.autoUpload && this.sequenceUpload && this.sequentialUpload && this.filesData.length > 0 && this.filesData[this.filesData.length - 1].statusCode !== '2' && this.filesData[this.filesData.length - 1].statusCode !== '0') {\n this.filesData = this.filesData.concat(fileData);\n return;\n }\n this.filesData = this.filesData.concat(fileData);\n if (!this.isForm || this.allowUpload()) {\n this.checkAutoUpload(fileData);\n }\n }\n if (!isNullOrUndefined(eventArgs.progressInterval) && eventArgs.progressInterval !== '') {\n this.progressInterval = eventArgs.progressInterval;\n }\n }\n else {\n this.filesData = this.filesData.concat(fileData);\n if (this.autoUpload) {\n this.upload(this.filesData, true);\n }\n }\n for (var item = 0; item < this.filesData.length; item++) {\n if (this.filesData[item].statusCode === '0') {\n this.checkActionComplete(true);\n }\n }\n this.isFirstFileOnSelection = true;\n }\n };\n Uploader.prototype.allowUpload = function () {\n var allowFormUpload = false;\n if (this.isForm && (!isNullOrUndefined(this.asyncSettings.saveUrl) && this.asyncSettings.saveUrl !== '')) {\n allowFormUpload = true;\n }\n return allowFormUpload;\n };\n Uploader.prototype.isFormUpload = function () {\n var isFormUpload = false;\n if (this.isForm && ((isNullOrUndefined(this.asyncSettings.saveUrl) || this.asyncSettings.saveUrl === '')\n && (isNullOrUndefined(this.asyncSettings.removeUrl) || this.asyncSettings.removeUrl === ''))) {\n isFormUpload = true;\n }\n return isFormUpload;\n };\n Uploader.prototype.clearData = function (singleUpload) {\n if (!isNullOrUndefined(this.listParent)) {\n detach(this.listParent);\n this.listParent = null;\n }\n if (this.browserName !== 'msie' && !singleUpload) {\n this.element.value = '';\n }\n this.fileList = [];\n this.filesData = [];\n this.removeActionButtons();\n };\n Uploader.prototype.updateSortedFileList = function (filesData) {\n var previousListClone = this.createElement('div', { id: 'clonewrapper' });\n var added = -1;\n var removedList;\n if (this.listParent) {\n for (var i = 0; i < this.listParent.querySelectorAll('li').length; i++) {\n var liElement = this.listParent.querySelectorAll('li')[i];\n previousListClone.appendChild(liElement.cloneNode(true));\n }\n this.removeActionButtons();\n var oldList = [].slice.call(previousListClone.childNodes);\n this.createParentUL();\n for (var index = 0; index < filesData.length; index++) {\n for (var j = 0; j < this.filesData.length; j++) {\n if (this.filesData[j].name === filesData[index].name) {\n this.listParent.appendChild(oldList[j]);\n EventHandler.add(oldList[j].querySelector('.e-icons'), 'click', this.removeFiles, this);\n this.fileList.push(oldList[j]);\n added = index;\n }\n }\n if (added !== index) {\n this.internalCreateFileList([filesData[index]]);\n }\n }\n }\n else {\n this.internalCreateFileList(filesData);\n }\n };\n Uploader.prototype.isBlank = function (str) {\n return (!str || /^\\s*$/.test(str));\n };\n Uploader.prototype.checkExtension = function (files) {\n var dropFiles = files;\n if (!this.isBlank(this.allowedExtensions)) {\n var allowedExtensions = [];\n var extensions = this.allowedExtensions.split(',');\n for (var _i = 0, extensions_1 = extensions; _i < extensions_1.length; _i++) {\n var extension = extensions_1[_i];\n allowedExtensions.push(extension.trim().toLocaleLowerCase());\n }\n for (var i = 0; i < files.length; i++) {\n if (allowedExtensions.indexOf(('.' + files[i].type).toLocaleLowerCase()) === -1) {\n files[i].status = this.localizedTexts('invalidFileType');\n files[i].statusCode = '0';\n }\n }\n }\n return dropFiles;\n };\n Uploader.prototype.validatedFileSize = function (fileSize) {\n var minSizeError = '';\n var maxSizeError = '';\n if (fileSize < this.minFileSize) {\n minSizeError = this.localizedTexts('invalidMinFileSize');\n }\n else if (fileSize > this.maxFileSize) {\n maxSizeError = this.localizedTexts('invalidMaxFileSize');\n }\n else {\n minSizeError = '';\n maxSizeError = '';\n }\n var errorMessage = { minSize: minSizeError, maxSize: maxSizeError };\n return errorMessage;\n };\n Uploader.prototype.isPreLoadFile = function (fileData) {\n var isPreload = false;\n for (var i = 0; i < this.files.length; i++) {\n if (this.files[i].name === fileData.name.slice(0, fileData.name.lastIndexOf('.')) && this.files[i].type === fileData.type) {\n isPreload = true;\n }\n }\n return isPreload;\n };\n Uploader.prototype.createCustomfileList = function (fileData) {\n this.createParentUL();\n for (var _i = 0, fileData_1 = fileData; _i < fileData_1.length; _i++) {\n var listItem = fileData_1[_i];\n var listElement = this.createElement('li', { className: FILE, attrs: { 'data-file-name': listItem.name } });\n this.uploadTemplateFn = this.templateComplier(this.template);\n var liTempCompiler = this.uploadTemplateFn(listItem, this, 'template', this.element.id + 'Template', this.isStringTemplate, null, listElement);\n if (liTempCompiler) {\n var fromElements = [].slice.call(liTempCompiler);\n append(fromElements, listElement);\n }\n var index = fileData.indexOf(listItem);\n var eventArgs = {\n element: listElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n var eventsArgs = {\n element: listElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(listElement);\n this.fileList.push(listElement);\n }\n this.renderReactTemplates();\n };\n Uploader.prototype.createParentUL = function () {\n if (isNullOrUndefined(this.listParent)) {\n this.listParent = this.createElement('ul', { className: LIST_PARENT });\n this.uploadWrapper.appendChild(this.listParent);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Uploader.prototype.formFileList = function (fileData, files) {\n var fileList = this.createElement('li', { className: FILE });\n fileList.setAttribute('data-files-count', fileData.length + '');\n var fileContainer = this.createElement('span', { className: TEXT_CONTAINER });\n var statusMessage;\n for (var _i = 0, fileData_2 = fileData; _i < fileData_2.length; _i++) {\n var listItem = fileData_2[_i];\n var fileNameEle = this.createElement('span', { className: FILE_NAME });\n fileNameEle.innerHTML = this.getFileNameOnly(listItem.name);\n var fileTypeEle = this.createElement('span', { className: FILE_TYPE });\n var fileType = this.getFileType(listItem.name);\n fileTypeEle.innerHTML = '.' + fileType;\n if (!fileType) {\n fileTypeEle.classList.add('e-hidden');\n }\n if (!this.enableRtl) {\n fileContainer.appendChild(fileNameEle);\n fileContainer.appendChild(fileTypeEle);\n }\n else {\n var rtlContainer = this.createElement('span', { className: RTL_CONTAINER });\n rtlContainer.appendChild(fileTypeEle);\n rtlContainer.appendChild(fileNameEle);\n fileContainer.appendChild(rtlContainer);\n }\n this.truncateName(fileNameEle);\n statusMessage = this.formValidateFileInfo(listItem, fileList);\n }\n fileList.appendChild(fileContainer);\n this.setListToFileInfo(fileData, fileList);\n var index = this.listParent.querySelectorAll('li').length;\n var infoEle = this.createElement('span');\n if (fileList.classList.contains(INVALID_FILE)) {\n infoEle.classList.add(STATUS);\n infoEle.classList.add(INVALID_FILE);\n infoEle.innerText = fileData.length > 1 ? this.localizedTexts('invalidFileSelection') : statusMessage;\n }\n else {\n infoEle.classList.add(fileData.length > 1 ? INFORMATION : FILE_SIZE);\n infoEle.innerText = fileData.length > 1 ? this.localizedTexts('totalFiles') + ': ' + fileData.length + ' , '\n + this.localizedTexts('size') + ': ' +\n this.bytesToSize(this.getFileSize(fileData)) : this.bytesToSize(fileData[0].size);\n this.createFormInput(fileData);\n }\n fileContainer.appendChild(infoEle);\n if (isNullOrUndefined(fileList.querySelector('.e-icons'))) {\n var iconElement = this.createElement('span', { className: 'e-icons', attrs: { 'tabindex': this.btnTabIndex } });\n /* istanbul ignore next */\n if (this.browserName === 'msie') {\n iconElement.classList.add('e-msie');\n }\n iconElement.setAttribute('title', this.localizedTexts('remove'));\n fileList.appendChild(fileContainer);\n fileList.appendChild(iconElement);\n EventHandler.add(iconElement, 'click', this.removeFiles, this);\n iconElement.classList.add(REMOVE_ICON);\n }\n var eventArgs = {\n element: fileList,\n fileInfo: this.mergeFileInfo(fileData, fileList),\n index: index,\n isPreload: this.isPreLoadFile(this.mergeFileInfo(fileData, fileList))\n };\n var eventsArgs = {\n element: fileList,\n fileInfo: this.mergeFileInfo(fileData, fileList),\n index: index,\n isPreload: this.isPreLoadFile(this.mergeFileInfo(fileData, fileList))\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(fileList);\n this.fileList.push(fileList);\n };\n Uploader.prototype.formValidateFileInfo = function (listItem, fileList) {\n var statusMessage = listItem.status;\n var validationMessages = this.validatedFileSize(listItem.size);\n if (validationMessages.minSize !== '' || validationMessages.maxSize !== '') {\n this.addInvalidClass(fileList);\n statusMessage = validationMessages.minSize !== '' ? this.localizedTexts('invalidMinFileSize') :\n validationMessages.maxSize !== '' ? this.localizedTexts('invalidMaxFileSize') : statusMessage;\n }\n var typeValidationMessage = this.checkExtension(this.getFilesInArray(listItem))[0].status;\n if (typeValidationMessage === this.localizedTexts('invalidFileType')) {\n this.addInvalidClass(fileList);\n statusMessage = typeValidationMessage;\n }\n return statusMessage;\n };\n Uploader.prototype.addInvalidClass = function (fileList) {\n fileList.classList.add(INVALID_FILE);\n };\n Uploader.prototype.createFormInput = function (fileData) {\n if (this.browserName !== 'safari') {\n var inputElement = this.element.cloneNode(true);\n inputElement.classList.add(HIDDEN_INPUT);\n for (var _i = 0, fileData_3 = fileData; _i < fileData_3.length; _i++) {\n var listItem = fileData_3[_i];\n listItem.input = inputElement;\n }\n inputElement.setAttribute('id', getUniqueID('hiddenUploader'));\n inputElement.setAttribute('name', this.uploaderName);\n this.uploadWrapper.querySelector('.' + INPUT_WRAPPER).appendChild(inputElement);\n if (this.browserName !== 'msie' && this.browserName !== 'edge') {\n this.element.value = '';\n }\n }\n };\n Uploader.prototype.getFileSize = function (fileData) {\n var fileSize = 0;\n for (var _i = 0, fileData_4 = fileData; _i < fileData_4.length; _i++) {\n var file = fileData_4[_i];\n fileSize += file.size;\n }\n return fileSize;\n };\n Uploader.prototype.mergeFileInfo = function (fileData, fileList) {\n var result = {\n name: '',\n rawFile: '',\n size: 0,\n status: '',\n type: '',\n validationMessages: { minSize: '', maxSize: '' },\n statusCode: '1',\n list: fileList\n };\n var fileNames = [];\n var type = '';\n for (var _i = 0, fileData_5 = fileData; _i < fileData_5.length; _i++) {\n var listItem = fileData_5[_i];\n fileNames.push(listItem.name);\n type = listItem.type;\n }\n result.name = fileNames.join(', ');\n result.size = this.getFileSize(fileData);\n result.type = type;\n result.status = this.statusForFormUpload(fileData, fileList);\n return result;\n };\n Uploader.prototype.statusForFormUpload = function (fileData, fileList) {\n var isValid = true;\n var statusMessage;\n for (var _i = 0, fileData_6 = fileData; _i < fileData_6.length; _i++) {\n var listItem = fileData_6[_i];\n statusMessage = listItem.status;\n var validationMessages = this.validatedFileSize(listItem.size);\n if (validationMessages.minSize !== '' || validationMessages.maxSize !== '') {\n isValid = false;\n statusMessage = validationMessages.minSize !== '' ? this.localizedTexts('invalidMinFileSize') :\n validationMessages.maxSize !== '' ? this.localizedTexts('invalidMaxFileSize') : statusMessage;\n }\n var typeValidationMessage = this.checkExtension(this.getFilesInArray(listItem))[0].status;\n if (typeValidationMessage === this.localizedTexts('invalidFileType')) {\n isValid = false;\n statusMessage = typeValidationMessage;\n }\n }\n if (!isValid) {\n fileList.classList.add(INVALID_FILE);\n statusMessage = fileData.length > 1 ? this.localizedTexts('invalidFileSelection') : statusMessage;\n }\n else {\n statusMessage = this.localizedTexts('totalFiles') + ': ' + fileData.length + ' , '\n + this.localizedTexts('size') + ': ' +\n this.bytesToSize(this.getFileSize(fileData));\n }\n return statusMessage;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Uploader.prototype.formCustomFileList = function (fileData, files) {\n this.createParentUL();\n var fileList = this.createElement('li', { className: FILE });\n fileList.setAttribute('data-files-count', fileData.length + '');\n this.setListToFileInfo(fileData, fileList);\n var result = this.mergeFileInfo(fileData, fileList);\n fileList.setAttribute('data-file-name', result.name);\n this.uploadTemplateFn = this.templateComplier(this.template);\n var liTempCompiler = this.uploadTemplateFn(result, this, 'template', this.element.id + 'Template', this.isStringTemplate, null, fileList);\n if (liTempCompiler) {\n var fromElements = [].slice.call(liTempCompiler);\n append(fromElements, fileList);\n }\n var index = this.listParent.querySelectorAll('li').length;\n if (!fileList.classList.contains(INVALID_FILE)) {\n this.createFormInput(fileData);\n }\n var eventArgs = {\n element: fileList,\n fileInfo: result,\n index: index,\n isPreload: this.isPreLoadFile(result)\n };\n var eventsArgs = {\n element: fileList,\n fileInfo: result,\n index: index,\n isPreload: this.isPreLoadFile(result)\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(fileList);\n this.fileList.push(fileList);\n this.renderReactTemplates();\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Create the file list for specified files data.\n *\n * @param { FileInfo[] } fileData - Specifies the files data for file list creation.\n * @returns {void}\n */\n Uploader.prototype.createFileList = function (fileData) {\n this.filesData = this.filesData && this.filesData.length > 0 ? this.filesData.concat(fileData) : fileData;\n this.internalCreateFileList(fileData);\n };\n Uploader.prototype.internalCreateFileList = function (fileData) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n this.createParentUL();\n if (this.template !== '' && !isNullOrUndefined(this.template)) {\n if (this.isFormUpload()) {\n this.uploadWrapper.classList.add(FORM_UPLOAD);\n this.formCustomFileList(fileData, this.element.files);\n }\n else {\n this.createCustomfileList(fileData);\n }\n }\n else if (this.isFormUpload()) {\n this.uploadWrapper.classList.add(FORM_UPLOAD);\n this.formFileList(fileData, this.element.files);\n }\n else {\n for (var _i = 0, fileData_7 = fileData; _i < fileData_7.length; _i++) {\n var listItem = fileData_7[_i];\n var liElement = this.createElement('li', {\n className: FILE,\n attrs: { 'data-file-name': listItem.name, 'data-files-count': '1' }\n });\n var textContainer = this.createElement('span', { className: TEXT_CONTAINER });\n var textElement = this.createElement('span', { className: FILE_NAME, attrs: { 'title': listItem.name } });\n textElement.innerHTML = this.getFileNameOnly(listItem.name);\n var fileExtension = this.createElement('span', { className: FILE_TYPE });\n var fileType = this.getFileType(listItem.name);\n fileExtension.innerHTML = '.' + fileType;\n if (!fileType) {\n fileExtension.classList.add('e-hidden');\n }\n if (!this.enableRtl) {\n textContainer.appendChild(textElement);\n textContainer.appendChild(fileExtension);\n }\n else {\n var rtlContainer = this.createElement('span', { className: RTL_CONTAINER });\n rtlContainer.appendChild(fileExtension);\n rtlContainer.appendChild(textElement);\n textContainer.appendChild(rtlContainer);\n }\n var fileSize = this.createElement('span', { className: FILE_SIZE });\n fileSize.innerHTML = this.bytesToSize(listItem.size);\n textContainer.appendChild(fileSize);\n var statusElement = this.createElement('span', { className: STATUS });\n textContainer.appendChild(statusElement);\n statusElement.innerHTML = listItem.status;\n liElement.appendChild(textContainer);\n var iconElement = this.createElement('span', { className: ' e-icons',\n attrs: { 'tabindex': this.btnTabIndex } });\n /* istanbul ignore next */\n if (this.browserName === 'msie') {\n iconElement.classList.add('e-msie');\n }\n iconElement.setAttribute('title', this.localizedTexts('remove'));\n liElement.appendChild(iconElement);\n EventHandler.add(iconElement, 'click', this.removeFiles, this);\n if (listItem.statusCode === '2') {\n statusElement.classList.add(UPLOAD_SUCCESS);\n iconElement.classList.add(DELETE_ICON);\n iconElement.setAttribute('title', this.localizedTexts('delete'));\n }\n else if (listItem.statusCode !== '1') {\n statusElement.classList.remove(UPLOAD_SUCCESS);\n statusElement.classList.add(VALIDATION_FAILS);\n }\n if (this.autoUpload && listItem.statusCode === '1' && this.asyncSettings.saveUrl !== '') {\n statusElement.innerHTML = '';\n }\n if (!iconElement.classList.contains(DELETE_ICON)) {\n iconElement.classList.add(REMOVE_ICON);\n }\n var index = fileData.indexOf(listItem);\n var eventArgs = {\n element: liElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n var eventsArgs = {\n element: liElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(liElement);\n this.fileList.push(liElement);\n this.truncateName(textElement);\n var preventActionComplete = this.flag;\n if (this.isPreLoadFile(listItem)) {\n this.flag = false;\n this.checkActionComplete(true);\n this.flag = preventActionComplete;\n }\n }\n }\n };\n Uploader.prototype.getSlicedName = function (nameElement) {\n var text = nameElement.textContent;\n nameElement.dataset.tail = text.slice(text.length - 10);\n };\n Uploader.prototype.setListToFileInfo = function (fileData, fileList) {\n for (var _i = 0, fileData_8 = fileData; _i < fileData_8.length; _i++) {\n var listItem = fileData_8[_i];\n listItem.list = fileList;\n }\n };\n Uploader.prototype.truncateName = function (name) {\n var nameElement = name;\n if (this.browserName !== 'edge' && nameElement.offsetWidth < nameElement.scrollWidth) {\n this.getSlicedName(nameElement);\n /* istanbul ignore next */\n }\n else if (nameElement.offsetWidth + 1 < nameElement.scrollWidth) {\n this.getSlicedName(nameElement);\n }\n };\n Uploader.prototype.getFileType = function (name) {\n var extension;\n var index = name.lastIndexOf('.');\n if (index >= 0) {\n extension = name.substring(index + 1);\n }\n return extension ? extension : '';\n };\n Uploader.prototype.getFileNameOnly = function (name) {\n var type = this.getFileType(name);\n var names = name.split('.' + type);\n return type = names[0];\n };\n Uploader.prototype.setInitialAttributes = function () {\n if (this.initialAttr.accept) {\n this.element.setAttribute('accept', this.initialAttr.accept);\n }\n if (this.initialAttr.disabled) {\n this.element.setAttribute('disabled', 'disabled');\n }\n if (this.initialAttr.multiple) {\n var newAttr = document.createAttribute('multiple');\n this.element.setAttributeNode(newAttr);\n }\n };\n Uploader.prototype.filterfileList = function (files) {\n var filterFiles = [];\n var li;\n for (var i = 0; i < files.length; i++) {\n li = this.getLiElement(files[i]);\n if (!li.classList.contains(UPLOAD_SUCCESS)) {\n filterFiles.push(files[i]);\n }\n }\n return filterFiles;\n };\n Uploader.prototype.updateStatus = function (files, status, statusCode, updateLiStatus) {\n if (updateLiStatus === void 0) { updateLiStatus = true; }\n if (!(status === '' || isNullOrUndefined(status)) && !(statusCode === '' || isNullOrUndefined(statusCode))) {\n files.status = status;\n files.statusCode = statusCode;\n }\n if (updateLiStatus) {\n var li = this.getLiElement(files);\n if (!isNullOrUndefined(li)) {\n if (!isNullOrUndefined(li.querySelector('.' + STATUS)) && !((status === '' || isNullOrUndefined(status)))) {\n li.querySelector('.' + STATUS).textContent = status;\n }\n }\n }\n return files;\n };\n Uploader.prototype.getLiElement = function (files) {\n var index;\n for (var i = 0; i < this.filesData.length; i++) {\n if (!isNullOrUndefined(files) && ((!isNullOrUndefined(this.filesData[i].id) &&\n !isNullOrUndefined(files.id)) ? (this.filesData[i].name === files.name &&\n this.filesData[i].id === files.id) : this.filesData[i].name === files.name)) {\n index = i;\n }\n }\n return this.fileList[index];\n };\n Uploader.prototype.createProgressBar = function (liElement) {\n var progressbarWrapper = this.createElement('span', { className: PROGRESS_WRAPPER });\n var progressBar = this.createElement('progressbar', { className: PROGRESSBAR, attrs: { value: '0', max: '100' } });\n var progressbarInnerWrapper = this.createElement('span', { className: PROGRESS_INNER_WRAPPER });\n progressBar.setAttribute('style', 'width: 0%');\n var progressbarText = this.createElement('span', { className: PROGRESSBAR_TEXT });\n progressbarText.textContent = '0%';\n progressbarInnerWrapper.appendChild(progressBar);\n progressbarWrapper.appendChild(progressbarInnerWrapper);\n progressbarWrapper.appendChild(progressbarText);\n liElement.querySelector('.' + TEXT_CONTAINER).appendChild(progressbarWrapper);\n };\n /* istanbul ignore next */\n Uploader.prototype.updateProgressbar = function (e, li) {\n if (!isNaN(Math.round((e.loaded / e.total) * 100)) && !isNullOrUndefined(li.querySelector('.' + PROGRESSBAR))) {\n if (!isNullOrUndefined(this.progressInterval) && this.progressInterval !== '') {\n var value = (Math.round((e.loaded / e.total) * 100)) % parseInt(this.progressInterval, 10);\n if (value === 0 || value === 100) {\n this.changeProgressValue(li, Math.round((e.loaded / e.total) * 100).toString() + '%');\n }\n }\n else {\n this.changeProgressValue(li, Math.round((e.loaded / e.total) * 100).toString() + '%');\n }\n }\n };\n Uploader.prototype.changeProgressValue = function (li, progressValue) {\n li.querySelector('.' + PROGRESSBAR).setAttribute('style', 'width:' + progressValue);\n li.querySelector('.' + PROGRESSBAR_TEXT).textContent = progressValue;\n };\n Uploader.prototype.uploadInProgress = function (e, files, customUI, request) {\n var li = this.getLiElement(files);\n if (isNullOrUndefined(li) && (!customUI)) {\n return;\n }\n if (!isNullOrUndefined(li)) {\n /* istanbul ignore next */\n if (files.statusCode === '5') {\n this.cancelUploadingFile(files, e, request, li);\n }\n if (!(li.querySelectorAll('.' + PROGRESS_WRAPPER).length > 0) && li.querySelector('.' + STATUS)) {\n li.querySelector('.' + STATUS).classList.add(UPLOAD_INPROGRESS);\n this.createProgressBar(li);\n this.updateProgressBarClasses(li, UPLOAD_INPROGRESS);\n li.querySelector('.' + STATUS).classList.remove(UPLOAD_FAILED);\n }\n this.updateProgressbar(e, li);\n var iconEle = li.querySelector('.' + REMOVE_ICON);\n if (!isNullOrUndefined(iconEle)) {\n iconEle.classList.add(ABORT_ICON, UPLOAD_INPROGRESS);\n iconEle.setAttribute('title', this.localizedTexts('abort'));\n iconEle.classList.remove(REMOVE_ICON);\n }\n }\n else {\n this.cancelUploadingFile(files, e, request);\n }\n var args = { e: e, operation: 'upload', file: this.updateStatus(files, this.localizedTexts('inProgress'), '3') };\n this.trigger('progress', args);\n };\n /* istanbul ignore next */\n Uploader.prototype.cancelUploadingFile = function (files, e, request, li) {\n var _this = this;\n if (files.statusCode === '5') {\n var eventArgs = {\n event: e,\n fileData: files,\n cancel: false,\n customFormData: [],\n currentRequest: null\n };\n this.trigger('canceling', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n files.statusCode = '3';\n if (!isNullOrUndefined(li)) {\n var spinnerTarget = li.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(spinnerTarget)) {\n hideSpinner(spinnerTarget);\n detach(li.querySelector('.e-spinner-pane'));\n }\n }\n }\n else {\n request.emitError = false;\n request.httpRequest.abort();\n var formData = new FormData();\n if (files.statusCode === '5') {\n var name_1 = _this.element.getAttribute('name');\n formData.append(name_1, files.name);\n formData.append('cancel-uploading', files.name);\n _this.updateFormData(formData, eventArgs.customFormData);\n var ajax_1 = new Ajax(_this.asyncSettings.removeUrl, 'POST', true, null);\n ajax_1.emitError = false;\n ajax_1.beforeSend = function (e) {\n if (eventArgs.currentRequest) {\n _this.updateCustomheader(ajax_1.httpRequest, eventArgs.currentRequest);\n }\n };\n ajax_1.onLoad = function (e) {\n _this.removecanceledFile(e, files);\n return {};\n };\n ajax_1.send(formData);\n }\n }\n });\n }\n };\n Uploader.prototype.removecanceledFile = function (e, file) {\n var liElement = this.getLiElement(file);\n if (isNullOrUndefined(liElement) || liElement.querySelector('.' + RETRY_ICON) || isNullOrUndefined(liElement.querySelector('.' + ABORT_ICON))) {\n return;\n }\n this.updateStatus(file, this.localizedTexts('fileUploadCancel'), '5');\n this.renderFailureState(e, file, liElement);\n var spinnerTarget = liElement.querySelector('.' + REMOVE_ICON);\n if (!isNullOrUndefined(liElement)) {\n hideSpinner(spinnerTarget);\n if (!isNullOrUndefined(liElement.querySelector('.e-spinner-pane'))) {\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n }\n var requestResponse = e && e.currentTarget ? this.getResponse(e) : null;\n var args = { event: e, response: requestResponse, operation: 'cancel', file: file };\n this.trigger('success', args);\n };\n Uploader.prototype.renderFailureState = function (e, file, liElement) {\n var _this = this;\n this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n this.removeProgressbar(liElement, 'failure');\n if (!isNullOrUndefined(liElement.querySelector('.e-file-status'))) {\n liElement.querySelector('.e-file-status').classList.add(UPLOAD_FAILED);\n }\n var deleteIcon = liElement.querySelector('.' + ABORT_ICON);\n if (isNullOrUndefined(deleteIcon)) {\n return;\n }\n deleteIcon.classList.remove(ABORT_ICON, UPLOAD_INPROGRESS);\n deleteIcon.classList.add(REMOVE_ICON);\n deleteIcon.setAttribute('title', this.localizedTexts('remove'));\n this.pauseButton = this.createElement('span', { className: 'e-icons e-file-reload-btn', attrs: { 'tabindex': this.btnTabIndex } });\n deleteIcon.parentElement.insertBefore(this.pauseButton, deleteIcon);\n this.pauseButton.setAttribute('title', this.localizedTexts('retry'));\n var retryElement = liElement.querySelector('.' + RETRY_ICON);\n /* istanbul ignore next */\n retryElement.addEventListener('click', function (e) {\n _this.reloadcanceledFile(e, file, liElement, false);\n }, false);\n };\n Uploader.prototype.reloadcanceledFile = function (e, file, liElement, custom) {\n file.statusCode = '1';\n file.status = this.localizedTexts('readyToUploadMessage');\n if (!custom) {\n if (!isNullOrUndefined(liElement.querySelector('.' + STATUS))) {\n liElement.querySelector('.' + STATUS).classList.remove(UPLOAD_FAILED);\n }\n if (!isNullOrUndefined(liElement.querySelector('.' + RETRY_ICON))) {\n detach(liElement.querySelector('.' + RETRY_ICON));\n }\n this.pauseButton = null;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(liElement)) {\n liElement.classList.add(RESTRICT_RETRY);\n }\n this.upload([file]);\n };\n /* istanbul ignore next */\n Uploader.prototype.uploadComplete = function (e, file, customUI) {\n var status = e.target;\n if (status.readyState === 4 && status.status >= 200 && status.status <= 299) {\n var li = this.getLiElement(file);\n if (isNullOrUndefined(li) && (!customUI || isNullOrUndefined(customUI))) {\n return;\n }\n if (!isNullOrUndefined(li)) {\n this.updateProgressBarClasses(li, UPLOAD_SUCCESS);\n this.removeProgressbar(li, 'success');\n var iconEle = li.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(iconEle)) {\n iconEle.classList.add(DELETE_ICON);\n iconEle.setAttribute('title', this.localizedTexts('delete'));\n iconEle.classList.remove(ABORT_ICON);\n iconEle.classList.remove(UPLOAD_INPROGRESS);\n }\n }\n this.raiseSuccessEvent(e, file);\n }\n else {\n this.uploadFailed(e, file);\n }\n };\n Uploader.prototype.getResponse = function (e) {\n var target = e.currentTarget;\n var response = {\n readyState: target.readyState,\n statusCode: target.status,\n statusText: target.statusText,\n headers: target.getAllResponseHeaders(),\n withCredentials: target.withCredentials\n };\n return response;\n };\n Uploader.prototype.raiseSuccessEvent = function (e, file) {\n var _this = this;\n var response = e && e.currentTarget ? this.getResponse(e) : null;\n var statusMessage = this.localizedTexts('uploadSuccessMessage');\n var args = {\n e: e, response: response, operation: 'upload', file: this.updateStatus(file, statusMessage, '2', false), statusText: statusMessage\n };\n var liElement = this.getLiElement(file);\n if (!isNullOrUndefined(liElement)) {\n var spinnerEle = liElement.querySelector('.' + SPINNER_PANE);\n if (!isNullOrUndefined(spinnerEle)) {\n hideSpinner(liElement);\n detach(spinnerEle);\n }\n }\n this.trigger('success', args, function (args) {\n _this.updateStatus(file, args.statusText, '2');\n _this.uploadedFilesData.push(file);\n _this.trigger('change', { file: _this.uploadedFilesData });\n _this.checkActionButtonStatus();\n if (_this.fileList.length > 0) {\n if ((!(_this.getLiElement(file)).classList.contains(RESTRICT_RETRY))) {\n _this.uploadSequential();\n _this.checkActionComplete(true);\n }\n else {\n /* istanbul ignore next */\n (_this.getLiElement(file)).classList.remove(RESTRICT_RETRY);\n }\n }\n else if (!_this.showFileList) {\n _this.checkActionComplete(true);\n }\n });\n };\n Uploader.prototype.uploadFailed = function (e, file) {\n var _this = this;\n var li = this.getLiElement(file);\n var response = e && e.currentTarget ? this.getResponse(e) : null;\n var statusMessage = this.localizedTexts('uploadFailedMessage');\n var args = {\n e: e, response: response, operation: 'upload', file: this.updateStatus(file, statusMessage, '0', false), statusText: statusMessage\n };\n if (!isNullOrUndefined(li)) {\n this.renderFailureState(e, file, li);\n }\n this.trigger('failure', args, function (args) {\n _this.updateStatus(file, args.statusText, '0');\n _this.checkActionButtonStatus();\n _this.uploadSequential();\n _this.checkActionComplete(true);\n });\n };\n Uploader.prototype.uploadSequential = function () {\n if (this.sequentialUpload) {\n if (this.autoUpload) {\n /* istanbul ignore next */\n this.checkAutoUpload(this.filesData);\n }\n else {\n this.uploadButtonClick();\n }\n }\n };\n Uploader.prototype.checkActionComplete = function (increment) {\n if (increment) {\n ++this.actionCompleteCount;\n }\n else {\n --this.actionCompleteCount;\n }\n this.raiseActionComplete();\n };\n Uploader.prototype.raiseActionComplete = function () {\n if ((this.filesData.length === this.actionCompleteCount) && this.flag) {\n this.flag = false;\n var eventArgs = {\n fileData: []\n };\n eventArgs.fileData = this.getSelectedFileStatus(this.selectedFiles);\n this.trigger('actionComplete', eventArgs);\n }\n };\n Uploader.prototype.getSelectedFileStatus = function (selectedFiles) {\n var matchFiles = [];\n var matchFilesIndex = 0;\n for (var selectFileIndex = 0; selectFileIndex < selectedFiles.length; selectFileIndex++) {\n var selectedFileData = selectedFiles[selectFileIndex];\n for (var fileDataIndex = 0; fileDataIndex < this.filesData.length; fileDataIndex++) {\n if (this.filesData[fileDataIndex].name === selectedFileData.name && this.filesData[fileDataIndex].status === selectedFileData.status) {\n matchFiles[matchFilesIndex] = this.filesData[fileDataIndex];\n ++matchFilesIndex;\n }\n }\n }\n return matchFiles;\n };\n Uploader.prototype.updateProgressBarClasses = function (li, className) {\n var progressBar = li.querySelector('.' + PROGRESSBAR);\n if (!isNullOrUndefined(progressBar)) {\n progressBar.classList.add(className);\n }\n };\n Uploader.prototype.removeProgressbar = function (li, callType) {\n var _this = this;\n if (!isNullOrUndefined(li.querySelector('.' + PROGRESS_WRAPPER))) {\n this.progressAnimation = new Animation({ duration: 1250 });\n this.progressAnimation.animate(li.querySelector('.' + PROGRESS_WRAPPER), { name: 'FadeOut' });\n this.progressAnimation.animate(li.querySelector('.' + PROGRESSBAR_TEXT), { name: 'FadeOut' });\n setTimeout(function () {\n _this.animateProgressBar(li, callType);\n }, 750);\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.animateProgressBar = function (li, callType) {\n if (callType === 'success') {\n li.classList.add(UPLOAD_SUCCESS);\n if (!isNullOrUndefined(li.querySelector('.' + STATUS))) {\n li.querySelector('.' + STATUS).classList.remove(UPLOAD_INPROGRESS);\n this.progressAnimation.animate(li.querySelector('.' + STATUS), { name: 'FadeIn' });\n li.querySelector('.' + STATUS).classList.add(UPLOAD_SUCCESS);\n }\n }\n else {\n if (!isNullOrUndefined(li.querySelector('.' + STATUS))) {\n li.querySelector('.' + STATUS).classList.remove(UPLOAD_INPROGRESS);\n this.progressAnimation.animate(li.querySelector('.' + STATUS), { name: 'FadeIn' });\n li.querySelector('.' + STATUS).classList.add(UPLOAD_FAILED);\n }\n }\n if (li.querySelector('.' + PROGRESS_WRAPPER)) {\n detach(li.querySelector('.' + PROGRESS_WRAPPER));\n }\n };\n Uploader.prototype.setExtensions = function (extensions) {\n if (extensions !== '' && !isNullOrUndefined(extensions)) {\n this.element.setAttribute('accept', extensions);\n }\n else {\n this.element.removeAttribute('accept');\n }\n };\n Uploader.prototype.templateComplier = function (uploadTemplate) {\n if (uploadTemplate) {\n try {\n if (typeof uploadTemplate !== 'function' && selectAll(uploadTemplate, document).length) {\n return compile(select(uploadTemplate, document).innerHTML.trim());\n }\n else {\n return compile(uploadTemplate);\n }\n }\n catch (exception) {\n return compile(uploadTemplate);\n }\n }\n return undefined;\n };\n Uploader.prototype.setRTL = function () {\n if (this.enableRtl) {\n addClass([this.uploadWrapper], RTL);\n }\n else {\n removeClass([this.uploadWrapper], RTL);\n }\n };\n Uploader.prototype.localizedTexts = function (localeText) {\n this.l10n.setLocale(this.locale);\n return this.l10n.getConstant(localeText);\n };\n Uploader.prototype.setControlStatus = function () {\n if (!this.enabled) {\n this.uploadWrapper.classList.add(DISABLED);\n this.element.setAttribute('disabled', 'disabled');\n this.browseButton.setAttribute('disabled', 'disabled');\n if (!isNullOrUndefined(this.clearButton)) {\n this.clearButton.setAttribute('disabled', 'disabled');\n }\n if (!isNullOrUndefined(this.uploadButton)) {\n this.uploadButton.setAttribute('disabled', 'disabled');\n }\n }\n else {\n if (this.uploadWrapper.classList.contains(DISABLED)) {\n this.uploadWrapper.classList.remove(DISABLED);\n }\n if (!isNullOrUndefined(this.browseButton) && this.element.hasAttribute('disabled')) {\n this.element.removeAttribute('disabled');\n this.browseButton.removeAttribute('disabled');\n }\n if (!isNullOrUndefined(this.clearButton) && this.clearButton.hasAttribute('disabled')) {\n this.clearButton.removeAttribute('disabled');\n }\n if (!isNullOrUndefined(this.uploadButton) && this.uploadButton.hasAttribute('disabled')) {\n this.uploadButton.hasAttribute('disabled');\n }\n }\n };\n Uploader.prototype.checkHTMLAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['accept', 'multiple', 'disabled'];\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 'accept':\n if ((isNullOrUndefined(this.uploaderOptions) || (this.uploaderOptions['allowedExtensions'] === undefined))\n || isDynamic) {\n this.setProperties({ allowedExtensions: this.element.getAttribute('accept') }, !isDynamic);\n this.initialAttr.accept = this.allowedExtensions;\n }\n break;\n case 'multiple':\n if ((isNullOrUndefined(this.uploaderOptions) || (this.uploaderOptions['multiple'] === undefined)) || isDynamic) {\n var isMutiple = this.element.getAttribute(prop) === 'multiple' ||\n this.element.getAttribute(prop) === '' || this.element.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ multiple: isMutiple }, !isDynamic);\n this.initialAttr.multiple = true;\n }\n break;\n case 'disabled':\n if ((isNullOrUndefined(this.uploaderOptions) || (this.uploaderOptions['enabled'] === undefined)) || isDynamic) {\n var isDisabled = this.element.getAttribute(prop) === 'disabled' ||\n this.element.getAttribute(prop) === '' || this.element.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: isDisabled }, !isDynamic);\n this.initialAttr.disabled = true;\n }\n }\n }\n }\n };\n Uploader.prototype.chunkUpload = function (file, custom, fileIndex) {\n var start = 0;\n var end = Math.min(this.asyncSettings.chunkSize, file.size);\n var index = 0;\n var blob = file.rawFile.slice(start, end);\n var metaData = { chunkIndex: index, blob: blob, file: file, start: start, end: end, retryCount: 0, request: null };\n this.sendRequest(file, metaData, custom, fileIndex);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Uploader.prototype.sendRequest = function (file, metaData, custom, fileIndex) {\n var _this = this;\n var formData = new FormData();\n var blob = file.rawFile.slice(metaData.start, metaData.end);\n formData.append(this.uploaderName, blob, file.name);\n formData.append('chunk-index', metaData.chunkIndex.toString());\n formData.append('chunkIndex', metaData.chunkIndex.toString());\n var totalChunk = Math.max(Math.ceil(file.size / this.asyncSettings.chunkSize), 1);\n formData.append('total-chunk', totalChunk.toString());\n formData.append('totalChunk', totalChunk.toString());\n var ajax = new Ajax({ url: this.asyncSettings.saveUrl, type: 'POST', async: true, contentType: null });\n ajax.emitError = false;\n ajax.onLoad = function (e) {\n _this.chunkUploadComplete(e, metaData, custom);\n return {};\n };\n ajax.onUploadProgress = function (e) {\n _this.chunkUploadInProgress(e, metaData, custom);\n return {};\n };\n var eventArgs = {\n fileData: file,\n customFormData: [],\n cancel: false,\n chunkSize: this.asyncSettings.chunkSize === 0 ? null : this.asyncSettings.chunkSize\n };\n ajax.beforeSend = function (e) {\n eventArgs.currentRequest = ajax.httpRequest;\n eventArgs.currentChunkIndex = metaData.chunkIndex;\n if (eventArgs.currentChunkIndex === 0) {\n // This event is currently not required but to avoid breaking changes for previous customer, we have included.\n _this.trigger('uploading', eventArgs, function (eventArgs) {\n _this.uploadingEventCallback(formData, eventArgs, e, file);\n });\n }\n else {\n _this.trigger('chunkUploading', eventArgs, function (eventArgs) {\n _this.uploadingEventCallback(formData, eventArgs, e, file);\n });\n }\n };\n /* istanbul ignore next */\n ajax.onError = function (e) {\n _this.chunkUploadFailed(e, metaData, custom);\n return {};\n };\n ajax.send(formData);\n metaData.request = ajax;\n };\n Uploader.prototype.uploadingEventCallback = function (formData, eventArgs, e, file) {\n if (eventArgs.cancel) {\n this.eventCancelByArgs(e, eventArgs, file);\n }\n else {\n this.updateFormData(formData, eventArgs.customFormData);\n }\n };\n Uploader.prototype.eventCancelByArgs = function (e, eventArgs, file) {\n var _this = this;\n e.cancel = true;\n if (eventArgs.fileData.statusCode === '5') {\n return;\n }\n eventArgs.fileData.statusCode = '5';\n eventArgs.fileData.status = this.localizedTexts('fileUploadCancel');\n var liElement = this.getLiElement(eventArgs.fileData);\n if (liElement) {\n if (!isNullOrUndefined(liElement.querySelector('.' + STATUS))) {\n liElement.querySelector('.' + STATUS).innerHTML = this.localizedTexts('fileUploadCancel');\n liElement.querySelector('.' + STATUS).classList.add(UPLOAD_FAILED);\n }\n this.pauseButton = this.createElement('span', { className: 'e-icons e-file-reload-btn', attrs: { 'tabindex': this.btnTabIndex } });\n var removeIcon = liElement.querySelector('.' + REMOVE_ICON);\n if (removeIcon) {\n removeIcon.parentElement.insertBefore(this.pauseButton, removeIcon);\n }\n this.pauseButton.setAttribute('title', this.localizedTexts('retry'));\n /* istanbul ignore next */\n this.pauseButton.addEventListener('click', function (e) {\n _this.reloadcanceledFile(e, file, liElement);\n }, false);\n this.checkActionButtonStatus();\n }\n };\n Uploader.prototype.checkChunkUpload = function () {\n return (this.asyncSettings.chunkSize <= 0 || isNullOrUndefined(this.asyncSettings.chunkSize)) ? false : true;\n };\n Uploader.prototype.chunkUploadComplete = function (e, metaData, custom) {\n var _this = this;\n var response = e.target;\n var liElement;\n if (response.readyState === 4 && response.status >= 200 && response.status < 300) {\n var requestResponse = e && e.currentTarget ? this.getResponse(e) : null;\n var totalChunk = Math.max(Math.ceil(metaData.file.size / this.asyncSettings.chunkSize), 1);\n var eventArgs = {\n event: e,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n totalChunk: totalChunk,\n chunkSize: this.asyncSettings.chunkSize,\n response: requestResponse\n };\n this.trigger('chunkSuccess', eventArgs);\n if (isNullOrUndefined(custom) || !custom) {\n liElement = this.getLiElement(metaData.file);\n }\n this.updateMetaData(metaData);\n if (metaData.end === metaData.file.size) {\n metaData.file.statusCode = '3';\n }\n if (metaData.file.statusCode === '5') {\n var eventArgs_1 = { event: e, fileData: metaData.file, cancel: false, customFormData: [] };\n this.trigger('canceling', eventArgs_1, function (eventArgs) {\n /* istanbul ignore next */\n if (eventArgs.cancel) {\n metaData.file.statusCode = '3';\n var spinnerTarget = liElement.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(liElement) && !isNullOrUndefined(spinnerTarget)) {\n hideSpinner(spinnerTarget);\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n _this.sendNextRequest(metaData);\n }\n else {\n metaData.request.emitError = false;\n response.abort();\n var formData = new FormData();\n var name_2 = _this.element.getAttribute('name');\n formData.append(name_2, metaData.file.name);\n formData.append('cancel-uploading', metaData.file.name);\n formData.append('cancelUploading', metaData.file.name);\n _this.updateFormData(formData, eventArgs.customFormData);\n var ajax = new Ajax(_this.asyncSettings.removeUrl, 'POST', true, null);\n ajax.emitError = false;\n ajax.onLoad = function (e) {\n _this.removeChunkFile(e, metaData, custom);\n return {};\n };\n ajax.send(formData);\n }\n });\n }\n else {\n if ((totalChunk - 1) === metaData.chunkIndex && totalChunk > metaData.chunkIndex) {\n var index = this.pausedData.indexOf(metaData);\n if (index >= 0) {\n this.pausedData.splice(index, 1);\n }\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom) && liElement) {\n if (liElement && !isNullOrUndefined(liElement.querySelector('.' + PAUSE_UPLOAD))) {\n detach(liElement.querySelector('.' + PAUSE_UPLOAD));\n }\n this.removeChunkProgressBar(metaData);\n }\n this.raiseSuccessEvent(e, metaData.file);\n return;\n }\n if (metaData.file.statusCode !== '4') {\n this.sendNextRequest(metaData);\n }\n }\n }\n else {\n this.chunkUploadFailed(e, metaData);\n }\n };\n Uploader.prototype.sendNextRequest = function (metaData) {\n metaData.start = metaData.end;\n metaData.end += this.asyncSettings.chunkSize;\n metaData.end = Math.min(metaData.end, metaData.file.size);\n metaData.chunkIndex += 1;\n this.sendRequest(metaData.file, metaData);\n };\n Uploader.prototype.removeChunkFile = function (e, metaData, custom) {\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) && !custom)) {\n var liElement = this.getLiElement(metaData.file);\n var deleteIcon = liElement.querySelector('.' + ABORT_ICON);\n var spinnerTarget = deleteIcon;\n this.updateStatus(metaData.file, this.localizedTexts('fileUploadCancel'), '5');\n this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n this.removeProgressbar(liElement, 'failure');\n (deleteIcon && deleteIcon.classList.remove(ABORT_ICON));\n (deleteIcon && deleteIcon.classList.add(REMOVE_ICON));\n (deleteIcon && deleteIcon.setAttribute('title', this.localizedTexts('remove')));\n var pauseIcon = liElement.querySelector('.' + PAUSE_UPLOAD);\n (pauseIcon && pauseIcon.classList.add(RETRY_ICON));\n (pauseIcon && pauseIcon.classList.remove(PAUSE_UPLOAD));\n (pauseIcon && pauseIcon.setAttribute('title', this.localizedTexts('retry')));\n if (!isNullOrUndefined(liElement) && !isNullOrUndefined(deleteIcon)\n && !isNullOrUndefined(liElement.querySelector('.e-spinner-pane'))) {\n hideSpinner(spinnerTarget);\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n }\n };\n Uploader.prototype.pauseUpload = function (metaData, e, custom) {\n metaData.file.statusCode = '4';\n metaData.file.status = this.localizedTexts('pause');\n this.updateMetaData(metaData);\n var eventArgs = {\n event: e ? e : null,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n chunkCount: Math.round(metaData.file.size / this.asyncSettings.chunkSize),\n chunkSize: this.asyncSettings.chunkSize\n };\n this.abortUpload(metaData, custom, eventArgs);\n };\n Uploader.prototype.abortUpload = function (metaData, custom, eventArgs) {\n if (metaData.file.statusCode !== '4') {\n metaData.request.emitError = false;\n metaData.request.httpRequest.abort();\n }\n var liElement = this.getLiElement(metaData.file);\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom)) {\n var targetElement = liElement.querySelector('.' + PAUSE_UPLOAD);\n targetElement.classList.remove(PAUSE_UPLOAD);\n targetElement.classList.add(RESUME_UPLOAD);\n targetElement.setAttribute('title', this.localizedTexts('resume'));\n targetElement.nextElementSibling.classList.add(REMOVE_ICON);\n targetElement.nextElementSibling.classList.remove(ABORT_ICON);\n targetElement.nextElementSibling.setAttribute('title', this.localizedTexts('remove'));\n }\n for (var i = 0; i < this.pausedData.length; i++) {\n if (this.pausedData[i].file.name === metaData.file.name) {\n this.pausedData.splice(i, 1);\n }\n }\n this.pausedData.push(metaData);\n this.trigger('pausing', eventArgs);\n };\n Uploader.prototype.resumeUpload = function (metaData, e, custom) {\n var liElement = this.getLiElement(metaData.file);\n var targetElement;\n if (!isNullOrUndefined(liElement)) {\n targetElement = liElement.querySelector('.' + RESUME_UPLOAD);\n }\n if (!isNullOrUndefined(targetElement) && (isNullOrUndefined(custom) || !custom)) {\n targetElement.classList.remove(RESUME_UPLOAD);\n targetElement.classList.add(PAUSE_UPLOAD);\n targetElement.setAttribute('title', this.localizedTexts('pause'));\n targetElement.nextElementSibling.classList.remove(REMOVE_ICON);\n targetElement.nextElementSibling.classList.add(ABORT_ICON);\n targetElement.nextElementSibling.setAttribute('title', this.localizedTexts('abort'));\n }\n metaData.file.status = this.localizedTexts('inProgress');\n metaData.file.statusCode = '3';\n this.updateMetaData(metaData);\n var eventArgs = {\n event: e ? e : null,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n chunkCount: Math.round(metaData.file.size / this.asyncSettings.chunkSize),\n chunkSize: this.asyncSettings.chunkSize\n };\n this.trigger('resuming', eventArgs);\n for (var i = 0; i < this.pausedData.length; i++) {\n if (this.pausedData[i].end === this.pausedData[i].file.size) {\n this.chunkUploadComplete(e, metaData, custom);\n }\n else {\n if (this.pausedData[i].file.name === metaData.file.name) {\n this.pausedData[i].start = this.pausedData[i].end;\n this.pausedData[i].end = this.pausedData[i].end + this.asyncSettings.chunkSize;\n this.pausedData[i].end = Math.min(this.pausedData[i].end, this.pausedData[i].file.size);\n this.pausedData[i].chunkIndex = this.pausedData[i].chunkIndex + 1;\n this.sendRequest(this.pausedData[i].file, this.pausedData[i], custom);\n }\n }\n }\n };\n Uploader.prototype.updateMetaData = function (metaData) {\n if (this.uploadMetaData.indexOf(metaData) === -1) {\n this.uploadMetaData.push(metaData);\n }\n else {\n this.uploadMetaData.splice(this.uploadMetaData.indexOf(metaData), 1);\n this.uploadMetaData.push(metaData);\n }\n };\n Uploader.prototype.removeChunkProgressBar = function (metaData) {\n var liElement = this.getLiElement(metaData.file);\n if (!isNullOrUndefined(liElement)) {\n this.updateProgressBarClasses(liElement, UPLOAD_SUCCESS);\n this.removeProgressbar(liElement, 'success');\n var cancelButton = liElement.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(cancelButton)) {\n cancelButton.classList.add(DELETE_ICON);\n cancelButton.setAttribute('title', this.localizedTexts('delete'));\n cancelButton.classList.remove(ABORT_ICON, UPLOAD_INPROGRESS);\n }\n }\n };\n Uploader.prototype.chunkUploadFailed = function (e, metaData, custom) {\n var _this = this;\n var chunkCount = Math.max(Math.ceil(metaData.file.size / this.asyncSettings.chunkSize), 1);\n var liElement;\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom)) {\n liElement = this.getLiElement(metaData.file);\n }\n var requestResponse = e && e.currentTarget ? this.getResponse(e) : null;\n var eventArgs = {\n event: e,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n totalChunk: chunkCount,\n chunkSize: this.asyncSettings.chunkSize,\n cancel: false,\n response: requestResponse\n };\n this.trigger('chunkFailure', eventArgs, function (eventArgs) {\n // To prevent triggering of failure event\n if (!eventArgs.cancel) {\n if (metaData.retryCount < _this.asyncSettings.retryCount) {\n setTimeout(function () {\n _this.retryRequest(liElement, metaData, custom);\n }, _this.asyncSettings.retryAfterDelay);\n }\n else {\n if (!isNullOrUndefined(liElement)) {\n var pauseButton = liElement.querySelector('.' + PAUSE_UPLOAD) ?\n liElement.querySelector('.' + PAUSE_UPLOAD) : liElement.querySelector('.' + RESUME_UPLOAD);\n if (!isNullOrUndefined(pauseButton)) {\n pauseButton.classList.add(RETRY_ICON);\n pauseButton.classList.remove(PAUSE_UPLOAD, RESUME_UPLOAD);\n }\n _this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n _this.removeProgressbar(liElement, 'failure');\n liElement.querySelector('.e-icons').classList.remove(UPLOAD_INPROGRESS);\n var iconElement = liElement.querySelector('.' + ABORT_ICON) ?\n liElement.querySelector('.' + ABORT_ICON) : liElement.querySelector('.' + REMOVE_ICON);\n iconElement.classList.remove(ABORT_ICON);\n if (!isNullOrUndefined(liElement.querySelector('.' + PAUSE_UPLOAD))) {\n detach(liElement.querySelector('.' + PAUSE_UPLOAD));\n }\n if (metaData.start > 0) {\n iconElement.classList.add(DELETE_ICON);\n iconElement.setAttribute('title', _this.localizedTexts('delete'));\n }\n else {\n iconElement.classList.add(REMOVE_ICON);\n iconElement.setAttribute('title', _this.localizedTexts('remove'));\n }\n }\n metaData.retryCount = 0;\n var file_1 = metaData.file;\n var failureMessage = _this.localizedTexts('uploadFailedMessage');\n var args = {\n e: e, response: requestResponse,\n operation: 'upload',\n file: _this.updateStatus(file_1, failureMessage, '0', false),\n statusText: failureMessage\n };\n _this.trigger('failure', args, function (args) {\n _this.updateStatus(file_1, args.statusText, '0');\n _this.uploadSequential();\n _this.checkActionComplete(true);\n });\n }\n }\n });\n };\n Uploader.prototype.retryRequest = function (liElement, metaData, custom) {\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom) && liElement) {\n this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n }\n metaData.retryCount += 1;\n this.sendRequest(metaData.file, metaData);\n };\n Uploader.prototype.checkPausePlayAction = function (e) {\n var targetElement = e.target;\n var selectedElement = e.target.parentElement;\n var index = this.fileList.indexOf(selectedElement);\n var fileData = this.filesData[index];\n var metaData = this.getCurrentMetaData(fileData);\n if (targetElement.classList.contains(PAUSE_UPLOAD)) {\n /* istanbul ignore next */\n this.pauseUpload(metaData, e);\n }\n else if (targetElement.classList.contains(RESUME_UPLOAD)) {\n /* istanbul ignore next */\n this.resumeUpload(metaData, e);\n }\n else if (targetElement.classList.contains(RETRY_ICON)) {\n if (metaData.file.status === this.localizedTexts('fileUploadCancel')) {\n this.retryUpload(metaData, false);\n }\n else {\n this.retryUpload(metaData, true);\n }\n }\n };\n Uploader.prototype.retryUpload = function (metaData, fromcanceledStage) {\n if (fromcanceledStage) {\n metaData.end = metaData.end + this.asyncSettings.chunkSize;\n metaData.start = metaData.start + this.asyncSettings.chunkSize;\n this.sendRequest(metaData.file, metaData);\n }\n else {\n metaData.file.statusCode = '1';\n metaData.file.status = this.localizedTexts('readyToUploadMessage');\n this.chunkUpload(metaData.file);\n }\n /* istanbul ignore next */\n (this.getLiElement(metaData.file)).classList.add(RESTRICT_RETRY);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Uploader.prototype.chunkUploadInProgress = function (e, metaData, custom) {\n var _this = this;\n if (metaData.file.statusCode === '4') {\n return;\n }\n if (metaData.file.statusCode !== '4' && metaData.file.statusCode !== '5') {\n metaData.file.statusCode = '3';\n metaData.file.status = this.localizedTexts('inProgress');\n }\n this.updateMetaData(metaData);\n var liElement = this.getLiElement(metaData.file);\n if (isNullOrUndefined(liElement)) {\n return;\n }\n var retryElement = liElement.querySelector('.' + RETRY_ICON);\n if (!isNullOrUndefined(retryElement)) {\n retryElement.classList.add(PAUSE_UPLOAD);\n retryElement.setAttribute('title', this.localizedTexts('pause'));\n retryElement.classList.remove(RETRY_ICON);\n }\n if (!isNullOrUndefined(liElement)) {\n if (!(liElement.querySelectorAll('.' + PROGRESS_WRAPPER).length > 0)) {\n var statusElement = liElement.querySelector('.' + STATUS);\n if (isNullOrUndefined(this.template)) {\n statusElement.classList.add(UPLOAD_INPROGRESS);\n statusElement.classList.remove(UPLOAD_FAILED);\n this.createProgressBar(liElement);\n this.updateProgressBarClasses(liElement, UPLOAD_INPROGRESS);\n }\n var clearIcon = liElement.querySelector('.' + REMOVE_ICON) ? liElement.querySelector('.' + REMOVE_ICON) :\n liElement.querySelector('.' + DELETE_ICON);\n if (!isNullOrUndefined(clearIcon)) {\n clearIcon.classList.add(ABORT_ICON);\n clearIcon.setAttribute('title', this.localizedTexts('abort'));\n clearIcon.classList.remove(REMOVE_ICON);\n }\n }\n if (!isNaN(Math.round((e.loaded / e.total) * 100)) && isNullOrUndefined(this.template) && metaData.file.statusCode !== '4') {\n var progressVal = void 0;\n var totalChunks = Math.ceil(metaData.file.size / this.asyncSettings.chunkSize) - 1;\n if (this.asyncSettings.chunkSize && totalChunks) {\n progressVal = Math.round(metaData.chunkIndex / totalChunks * 100);\n this.changeProgressValue(liElement, progressVal.toString() + '%');\n }\n }\n if (metaData.chunkIndex === 0) {\n this.checkActionButtonStatus();\n }\n }\n if (isNullOrUndefined(liElement.querySelector('.' + PAUSE_UPLOAD)) && isNullOrUndefined(this.template)\n && isNullOrUndefined(liElement.querySelector('.' + DELETE_ICON))) {\n this.pauseButton = this.createElement('span', { className: 'e-icons e-file-pause-btn', attrs: { 'tabindex': this.btnTabIndex } });\n if (this.browserName === 'msie') {\n this.pauseButton.classList.add('e-msie');\n }\n var abortIcon = liElement.querySelector('.' + ABORT_ICON);\n abortIcon.parentElement.insertBefore(this.pauseButton, abortIcon);\n this.pauseButton.setAttribute('title', this.localizedTexts('pause'));\n this.pauseButton.addEventListener('click', function (e) {\n _this.checkPausePlayAction(e);\n }, false);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * It is used to convert bytes value into kilobytes or megabytes depending on the size based\n * on [binary prefix](https://en.wikipedia.org/wiki/Binary_prefix).\n *\n * @param { number } bytes - Specifies the file size in bytes.\n * @returns {string}\n */\n Uploader.prototype.bytesToSize = function (bytes) {\n var i = -1;\n if (!bytes) {\n return '0.0 KB';\n }\n do {\n bytes = bytes / 1024;\n i++;\n } while (bytes > 99);\n if (i >= 2) {\n bytes = bytes * 1024;\n i = 1;\n }\n return Math.max(bytes, 0).toFixed(1) + ' ' + ['KB', 'MB'][i];\n };\n /**\n * Allows you to sort the file data alphabetically based on its file name clearly.\n *\n * @param { FileList } filesData - specifies the files data for upload.\n * @returns {File[]}\n */\n /* istanbul ignore next */\n Uploader.prototype.sortFileList = function (filesData) {\n filesData = filesData ? filesData : this.sortFilesList;\n var files = filesData;\n var fileNames = [];\n for (var i = 0; i < files.length; i++) {\n fileNames.push(files[i].name);\n }\n var sortedFileNames = fileNames.sort();\n var sortedFilesData = [];\n for (var _i = 0, sortedFileNames_1 = sortedFileNames; _i < sortedFileNames_1.length; _i++) {\n var name_3 = sortedFileNames_1[_i];\n for (var i = 0; i < files.length; i++) {\n if (name_3 === files[i].name) {\n sortedFilesData.push(files[i]);\n }\n }\n }\n return sortedFilesData;\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. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n Uploader.prototype.destroy = function () {\n this.element.value = null;\n this.clearTemplate();\n this.clearAll();\n this.unWireEvents();\n this.unBindDropEvents();\n if (this.multiple) {\n this.element.removeAttribute('multiple');\n }\n if (!this.enabled) {\n this.element.removeAttribute('disabled');\n }\n this.element.removeAttribute('accept');\n this.setInitialAttributes();\n var attributes = ['aria-label', 'directory', 'webkitdirectory', 'tabindex'];\n for (var _i = 0, attributes_2 = attributes; _i < attributes_2.length; _i++) {\n var key = attributes_2[_i];\n this.element.removeAttribute(key);\n }\n if (!isNullOrUndefined(this.uploadWrapper)) {\n this.uploadWrapper.parentElement.appendChild(this.element);\n detach(this.uploadWrapper);\n }\n this.uploadWrapper = null;\n this.uploadWrapper = null;\n this.browseButton = null;\n this.dropAreaWrapper = null;\n this.dropZoneElement = null;\n this.dropArea = null;\n this.keyboardModule = null;\n this.clearButton = null;\n this.uploadButton = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Allows you to call the upload process manually by calling save URL action.\n * To process the selected files (added in upload queue), pass an empty argument otherwise\n * upload the specific file based on its argument.\n *\n * @param { FileInfo | FileInfo[] } files - Specifies the files data for upload.\n * @param {boolean} custom - Specifies whether the uploader is rendered with custom file list.\n * @returns {void}\n */\n Uploader.prototype.upload = function (files, custom) {\n var _this = this;\n files = files ? files : this.filesData;\n if (this.sequentialUpload && (this.isFirstFileOnSelection || custom)) {\n this.sequenceUpload(files);\n }\n else {\n var uploadFiles_1 = this.getFilesInArray(files);\n var eventArgs = {\n customFormData: [],\n currentRequest: null,\n cancel: false\n };\n this.trigger('beforeUpload', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.uploadFiles(uploadFiles_1, custom);\n }\n });\n }\n };\n Uploader.prototype.getFilesInArray = function (files) {\n var uploadFiles = [];\n if (files instanceof Array) {\n uploadFiles = files;\n }\n else {\n uploadFiles.push(files);\n }\n return uploadFiles;\n };\n /* istanbul ignore next */\n Uploader.prototype.serverReadFileBase64 = function (fileIndex, position, totalCount) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n var file = _this.fileStreams[fileIndex].rawFile;\n try {\n var reader = new FileReader();\n reader.onload = (function (args) {\n return function () {\n try {\n var contents = args.result;\n var data = contents ? contents.split(';base64,')[1] : null;\n resolve(data);\n }\n catch (e) {\n reject(e);\n }\n };\n })(reader);\n reader.readAsDataURL(file.slice(position, position + totalCount));\n }\n catch (e) {\n reject(e);\n }\n });\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n /* istanbul ignore next */\n Uploader.prototype.uploadFileCount = function (ele) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var files = this.filesData;\n if (!files || files.length === 0) {\n return -1;\n }\n var result = files.length;\n return result;\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n /* istanbul ignore next */\n Uploader.prototype.getFileRead = function (index, ele) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var files = this.filesData;\n if (!files || files.length === 0) {\n return -1;\n }\n var file = files[index];\n var fileCount = this.newFileRef++;\n this.fileStreams[fileCount] = file;\n return fileCount;\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n /* istanbul ignore next */\n Uploader.prototype.getFileInfo = function (index, ele) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var files = this.filesData;\n if (!files || files.length === 0) {\n return null;\n }\n var file = files[index];\n if (!file) {\n return null;\n }\n return this.filesData[index];\n };\n Uploader.prototype.uploadFiles = function (files, custom) {\n var selectedFiles = [];\n if (this.asyncSettings.saveUrl === '' || isNullOrUndefined(this.asyncSettings.saveUrl)) {\n return;\n }\n if (!custom || isNullOrUndefined(custom)) {\n if (!this.multiple) {\n var file = [];\n file.push(files[0]);\n selectedFiles = this.filterfileList(file);\n }\n else {\n selectedFiles = this.filterfileList(files);\n }\n }\n else {\n selectedFiles = files;\n }\n for (var i = 0; i < selectedFiles.length; i++) {\n this.uploadFilesRequest(selectedFiles, i, custom);\n }\n };\n Uploader.prototype.uploadFilesRequest = function (selectedFiles, i, custom) {\n var _this = this;\n var cloneFiles = [];\n var chunkEnabled = this.checkChunkUpload();\n var ajax = new Ajax(this.asyncSettings.saveUrl, 'POST', true, null);\n ajax.emitError = false;\n var getFileData;\n var eventArgs = {\n fileData: selectedFiles[i],\n customFormData: [],\n cancel: false\n };\n var formData = new FormData();\n ajax.beforeSend = function (e) {\n eventArgs.currentRequest = ajax.httpRequest;\n _this.trigger('uploading', eventArgs, function (eventArgs) {\n /* istanbul ignore next */\n if (eventArgs.cancel) {\n _this.eventCancelByArgs(e, eventArgs, selectedFiles[i]);\n }\n _this.updateFormData(formData, eventArgs.customFormData);\n });\n };\n if (selectedFiles[i].statusCode === '1') {\n var name_4 = this.element.getAttribute('name');\n formData.append(name_4, selectedFiles[i].rawFile, selectedFiles[i].name);\n if (chunkEnabled && selectedFiles[i].size > this.asyncSettings.chunkSize) {\n this.chunkUpload(selectedFiles[i], custom, i);\n }\n else {\n ajax.onLoad = function (e) {\n if (eventArgs.cancel) {\n return {};\n }\n else {\n _this.uploadComplete(e, selectedFiles[i], custom);\n return {};\n }\n };\n ajax.onUploadProgress = function (e) {\n if (eventArgs.cancel) {\n return {};\n }\n else {\n _this.uploadInProgress(e, selectedFiles[i], custom, ajax);\n return {};\n }\n };\n /* istanbul ignore next */\n ajax.onError = function (e) {\n _this.uploadFailed(e, selectedFiles[i]);\n return {};\n };\n ajax.send(formData);\n }\n }\n };\n Uploader.prototype.spliceFiles = function (liIndex) {\n var liElement = this.fileList[liIndex];\n var allFiles = this.getFilesData();\n var nameElements = +liElement.getAttribute('data-files-count');\n var startIndex = 0;\n for (var i = 0; i < liIndex; i++) {\n startIndex += (+this.fileList[i].getAttribute('data-files-count'));\n }\n var endIndex = (startIndex + nameElements) - 1;\n for (var j = endIndex; j >= startIndex; j--) {\n allFiles.splice(j, 1);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Remove the uploaded file from server manually by calling the remove URL action.\n * If you pass an empty argument to this method, the complete file list can be cleared,\n * otherwise remove the specific file based on its argument (“file_data”).\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to remove from file list/server.\n * @param { boolean } customTemplate - Set true if the component rendering with customize template.\n * @param { boolean } removeDirectly - Set true if files remove without removing event.\n * @param { boolean } postRawFile - Set false, to post file name only to the remove action.\n * @returns {void}\n */\n Uploader.prototype.remove = function (fileData, customTemplate, removeDirectly, postRawFile, args) {\n var _this = this;\n if (isNullOrUndefined(postRawFile)) {\n postRawFile = true;\n }\n var eventArgs = {\n event: args,\n cancel: false,\n filesData: [],\n customFormData: [],\n postRawFile: postRawFile,\n currentRequest: null\n };\n var beforeEventArgs = {\n cancel: false,\n customFormData: [],\n currentRequest: null\n };\n this.trigger('beforeRemove', beforeEventArgs, function (beforeEventArgs) {\n if (!beforeEventArgs.cancel) {\n if (_this.isFormUpload()) {\n eventArgs.filesData = fileData;\n _this.trigger('removing', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n var removingFiles = _this.getFilesInArray(fileData);\n var isLiRemoved = false;\n var liIndex = void 0;\n for (var _i = 0, removingFiles_1 = removingFiles; _i < removingFiles_1.length; _i++) {\n var data = removingFiles_1[_i];\n if (!isLiRemoved) {\n liIndex = _this.fileList.indexOf(data.list);\n }\n if (liIndex > -1) {\n var inputElement = !isNullOrUndefined(data.input) ? data.input : null;\n if (inputElement) {\n detach(inputElement);\n }\n _this.spliceFiles(liIndex);\n detach(_this.fileList[liIndex]);\n _this.fileList.splice(liIndex, 1);\n isLiRemoved = true;\n liIndex = -1;\n }\n }\n }\n });\n }\n else if (_this.isForm && (isNullOrUndefined(_this.asyncSettings.removeUrl) || _this.asyncSettings.removeUrl === '')) {\n eventArgs.filesData = _this.getFilesData();\n _this.trigger('removing', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.clearAll();\n }\n });\n }\n else {\n var removeFiles = [];\n fileData = !isNullOrUndefined(fileData) ? fileData : _this.filesData;\n if (fileData instanceof Array) {\n removeFiles = fileData;\n }\n else {\n removeFiles.push(fileData);\n }\n eventArgs.filesData = removeFiles;\n var removeUrl = _this.asyncSettings.removeUrl;\n var validUrl = (removeUrl === '' || isNullOrUndefined(removeUrl)) ? false : true;\n var _loop_5 = function (files) {\n var fileUploadedIndex = _this.uploadedFilesData.indexOf(files);\n if ((files.statusCode === '2' || files.statusCode === '4' || (files.statusCode === '0' &&\n fileUploadedIndex !== -1)) && validUrl) {\n _this.removeUploadedFile(files, eventArgs, removeDirectly, customTemplate);\n }\n else {\n if (!removeDirectly) {\n _this.trigger('removing', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.removeFilesData(files, customTemplate);\n }\n });\n }\n else {\n _this.removeFilesData(files, customTemplate);\n }\n }\n if (args && !args.target.classList.contains(REMOVE_ICON)) {\n _this.checkActionComplete(false);\n }\n };\n for (var _i = 0, removeFiles_1 = removeFiles; _i < removeFiles_1.length; _i++) {\n var files = removeFiles_1[_i];\n _loop_5(files);\n }\n }\n }\n });\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n /**\n * Clear all the file entries from list that can be uploaded files or added in upload queue.\n *\n * @returns {void}\n */\n Uploader.prototype.clearAll = function () {\n var _this = this;\n if (isNullOrUndefined(this.listParent)) {\n if (this.browserName !== 'msie') {\n this.element.value = '';\n }\n this.filesData = [];\n return;\n }\n var eventArgs = {\n cancel: false,\n filesData: this.filesData\n };\n this.trigger('clearing', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.clearData();\n _this.actionCompleteCount = 0;\n _this.count = -1;\n }\n });\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Get the data of files which are shown in file list.\n *\n * @param { number } index - specifies the file list item(li) index.\n * @returns {FileInfo[]}\n */\n Uploader.prototype.getFilesData = function (index) {\n if (isNullOrUndefined(index)) {\n return this.filesData;\n }\n else {\n return this.getSelectedFiles(index);\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Pauses the in-progress chunked upload based on the file data.\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to pause from uploading.\n * @param { boolean } custom - Set true if used custom UI.\n * @returns {void}\n */\n Uploader.prototype.pause = function (fileData, custom) {\n fileData = fileData ? fileData : this.filesData;\n var fileDataFiles = this.getFilesInArray(fileData);\n this.pauseUploading(fileDataFiles, custom);\n };\n Uploader.prototype.pauseUploading = function (fileData, custom) {\n var files = this.getFiles(fileData);\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '3') {\n this.pauseUpload(this.getCurrentMetaData(files[i], null), null, custom);\n }\n }\n };\n Uploader.prototype.getFiles = function (fileData) {\n var files = [];\n if (!isNullOrUndefined(fileData) && !(fileData instanceof Array)) {\n files.push(fileData);\n }\n else {\n files = fileData;\n }\n return files;\n };\n /**\n * Resumes the chunked upload that is previously paused based on the file data.\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to resume the paused file.\n * @param { boolean } custom - Set true if used custom UI.\n * @returns {void}\n */\n Uploader.prototype.resume = function (fileData, custom) {\n fileData = fileData ? fileData : this.filesData;\n var fileDataFiles = this.getFilesInArray(fileData);\n this.resumeFiles(fileDataFiles, custom);\n };\n Uploader.prototype.resumeFiles = function (fileData, custom) {\n var files = this.getFiles(fileData);\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '4') {\n this.resumeUpload(this.getCurrentMetaData(files[i], null), null, custom);\n }\n }\n };\n /**\n * Retries the canceled or failed file upload based on the file data.\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to retry the canceled or failed file.\n * @param { boolean } fromcanceledStage - Set true to retry from canceled stage and set false to retry from initial stage.\n * @param {boolean} custom -Specifies whether the uploader is rendered with custom file list.\n * @returns {void}\n */\n Uploader.prototype.retry = function (fileData, fromcanceledStage, custom) {\n fileData = fileData ? fileData : this.filesData;\n var fileDataFiles = this.getFilesInArray(fileData);\n if (this.sequentialUpload && this.isFirstFileOnSelection) {\n this.isFirstFileOnSelection = false;\n }\n this.retryFailedFiles(fileDataFiles, fromcanceledStage, custom);\n };\n Uploader.prototype.retryFailedFiles = function (fileData, fromcanceledStage, custom) {\n var files = this.getFiles(fileData);\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '5' || files[i].statusCode === '0') {\n if (this.asyncSettings.chunkSize > 0 && this.getCurrentMetaData(files[i], null)) {\n this.retryUpload(this.getCurrentMetaData(files[i], null), fromcanceledStage);\n }\n else {\n var liElement = void 0;\n if (!custom) {\n liElement = this.fileList[this.filesData.indexOf(files[i])];\n }\n this.reloadcanceledFile(null, files[i], liElement, custom);\n }\n }\n }\n };\n /**\n * Stops the in-progress chunked upload based on the file data.\n * When the file upload is canceled, the partially uploaded file is removed from server.\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to cancel the progressing file.\n * @returns {void}\n */\n Uploader.prototype.cancel = function (fileData) {\n fileData = fileData ? fileData : this.filesData;\n var cancelingFiles = this.getFilesInArray(fileData);\n this.cancelUpload(cancelingFiles);\n };\n Uploader.prototype.cancelUpload = function (fileData) {\n var files = this.getFiles(fileData);\n if (this.asyncSettings.chunkSize > 0) {\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '3') {\n var metaData = this.getCurrentMetaData(files[i], null);\n metaData.file.statusCode = '5';\n metaData.file.status = this.localizedTexts('fileUploadCancel');\n this.updateMetaData(metaData);\n this.showHideUploadSpinner(files[i]);\n }\n }\n }\n else {\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '3') {\n files[i].statusCode = '5';\n files[i].status = this.localizedTexts('fileUploadCancel');\n this.showHideUploadSpinner(files[i]);\n }\n }\n }\n };\n Uploader.prototype.showHideUploadSpinner = function (files) {\n var liElement = this.getLiElement(files);\n if (!isNullOrUndefined(liElement) && isNullOrUndefined(this.template)) {\n var spinnerTarget = liElement.querySelector('.' + ABORT_ICON);\n createSpinner({ target: spinnerTarget, width: '20px' });\n showSpinner(spinnerTarget);\n }\n };\n __decorate([\n Complex({ saveUrl: '', removeUrl: '' }, AsyncSettings)\n ], Uploader.prototype, \"asyncSettings\", void 0);\n __decorate([\n Property(false)\n ], Uploader.prototype, \"sequentialUpload\", void 0);\n __decorate([\n Property({})\n ], Uploader.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], Uploader.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Uploader.prototype, \"enabled\", void 0);\n __decorate([\n Property(null)\n ], Uploader.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], Uploader.prototype, \"multiple\", void 0);\n __decorate([\n Property(true)\n ], Uploader.prototype, \"autoUpload\", void 0);\n __decorate([\n Property(true)\n ], Uploader.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({}, ButtonsProps)\n ], Uploader.prototype, \"buttons\", void 0);\n __decorate([\n Property('')\n ], Uploader.prototype, \"allowedExtensions\", void 0);\n __decorate([\n Property(0)\n ], Uploader.prototype, \"minFileSize\", void 0);\n __decorate([\n Property(30000000)\n ], Uploader.prototype, \"maxFileSize\", void 0);\n __decorate([\n Property(null)\n ], Uploader.prototype, \"dropArea\", void 0);\n __decorate([\n Collection([{}], FilesProp)\n ], Uploader.prototype, \"files\", void 0);\n __decorate([\n Property(true)\n ], Uploader.prototype, \"showFileList\", void 0);\n __decorate([\n Property(false)\n ], Uploader.prototype, \"directoryUpload\", void 0);\n __decorate([\n Property('Default')\n ], Uploader.prototype, \"dropEffect\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"rendering\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"beforeUpload\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"fileListRendering\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"selected\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"uploading\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"success\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"failure\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"beforeRemove\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"clearing\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"chunkSuccess\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"chunkFailure\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"chunkUploading\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"canceling\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"pausing\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"resuming\", void 0);\n Uploader = __decorate([\n NotifyPropertyChanges\n ], Uploader);\n return Uploader;\n}(Component));\nexport { Uploader };\n/* eslint-enable @typescript-eslint/no-explicit-any */\n","/* eslint-disable no-inner-declarations */\nimport { extend, merge, isNullOrUndefined, getValue, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { attributes, prepend, isVisible, append, addClass } from '@syncfusion/ej2-base';\nimport { compile } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nexport var cssClass = {\n li: 'e-list-item',\n ul: 'e-list-parent e-ul',\n group: 'e-list-group-item',\n icon: 'e-list-icon',\n text: 'e-list-text',\n check: 'e-list-check',\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: 'e-list-url',\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: 'e-list-img',\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n};\n/**\n * Base List Generator\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var ListBase;\n(function (ListBase) {\n /**\n *\n * Default mapped fields.\n */\n ListBase.defaultMappedFields = {\n id: 'id',\n text: 'text',\n url: 'url',\n value: 'value',\n isChecked: 'isChecked',\n enabled: 'enabled',\n expanded: 'expanded',\n selected: 'selected',\n iconCss: 'iconCss',\n child: 'child',\n isVisible: 'isVisible',\n hasChildren: 'hasChildren',\n tooltip: 'tooltip',\n htmlAttributes: 'htmlAttributes',\n urlAttributes: 'urlAttributes',\n imageAttributes: 'imageAttributes',\n imageUrl: 'imageUrl',\n groupBy: null,\n sortBy: null\n };\n var defaultAriaAttributes = {\n level: 1,\n listRole: 'presentation',\n itemRole: 'presentation',\n groupItemRole: 'group',\n itemText: 'list-item',\n wrapperRole: 'presentation'\n };\n var defaultListBaseOptions = {\n showCheckBox: false,\n showIcon: false,\n enableHtmlSanitizer: false,\n expandCollapse: false,\n fields: ListBase.defaultMappedFields,\n ariaAttributes: defaultAriaAttributes,\n listClass: '',\n itemClass: '',\n processSubChild: false,\n sortOrder: 'None',\n template: null,\n groupTemplate: null,\n headerTemplate: null,\n expandIconClass: 'e-icon-collapsible',\n moduleName: 'list',\n expandIconPosition: 'Right',\n itemNavigable: false\n };\n /**\n * Function helps to created and return the UL Li element based on your data.\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} createListFromJson - Specifies the list options that need to provide.\n */\n function createList(createElement, dataSource, \n // eslint-disable-next-line\n options, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var type = typeofData(dataSource).typeof;\n if (type === 'string' || type === 'number') {\n return createListFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n }\n else {\n return createListFromJson(createElement, dataSource, options, ariaAttributes.level, isSingleLevel, componentInstance);\n }\n }\n ListBase.createList = createList;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - returns the list options that need to provide.\n */\n function createListFromArray(createElement, dataSource, \n // tslint:disable-next-line\n // eslint-disable-next-line\n isSingleLevel, options, componentInstance) {\n var subChild = createListItemFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n return generateUL(createElement, subChild, null, options);\n }\n ListBase.createListFromArray = createListFromArray;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} subChild - returns the list options that need to provide.\n */\n function createListItemFromArray(createElement, dataSource, \n // eslint-disable-next-line\n isSingleLevel, options, componentInstance) {\n var subChild = [];\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n var li = void 0;\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n options: curOpt\n };\n curOpt.itemCreating(curData);\n }\n if (isSingleLevel) {\n li = generateSingleLevelLI(createElement, dataSource[i], undefined, null, null, [], null, id, i, options);\n }\n else {\n li = generateLI(createElement, dataSource[i], undefined, null, null, options, componentInstance);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n item: li,\n options: curOpt\n };\n curOpt.itemCreated(curData);\n }\n subChild.push(li);\n }\n return subChild;\n }\n ListBase.createListItemFromArray = createListItemFromArray;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {number} level? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} child - returns the list options that need to provide.\n */\n function createListItemFromJson(createElement, dataSource, \n // eslint-disable-next-line\n options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var fields = (componentInstance &&\n (componentInstance.getModuleName() === 'listview' || componentInstance.getModuleName() === 'multiselect'))\n ? curOpt.fields : extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var id;\n var checkboxElement = [];\n if (level) {\n ariaAttributes.level = level;\n }\n var child = [];\n var li;\n var anchorElement;\n if (dataSource && dataSource.length && !isNullOrUndefined(typeofData(dataSource).item) &&\n // eslint-disable-next-line no-prototype-builtins\n !typeofData(dataSource).item.hasOwnProperty(fields.id)) {\n id = generateId(); // generate id for drop-down-list option.\n }\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], fields);\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreating(curData);\n }\n var curItem = dataSource[i];\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], fields);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.id) && !isNullOrUndefined(fieldData[fields.id])) {\n id = fieldData[fields.id];\n }\n var innerEle = [];\n if (curOpt.showCheckBox) {\n if (curOpt.itemNavigable && (fieldData[fields.url] || fieldData[fields.urlAttributes])) {\n checkboxElement.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n else {\n innerEle.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n }\n if (isSingleLevel === true) {\n // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) && !isNullOrUndefined(fieldData[fields.iconCss])) {\n innerEle.push(createElement('span', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] }));\n }\n li = generateSingleLevelLI(createElement, curItem, fieldData, fields, curOpt.itemClass, innerEle, \n // eslint-disable-next-line no-prototype-builtins\n (curItem.hasOwnProperty('isHeader') &&\n curItem.isHeader) ? true : false, id, i, options);\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n }\n else {\n li = generateLI(createElement, curItem, fieldData, fields, curOpt.itemClass, options, componentInstance);\n li.classList.add(cssClass.level + '-' + ariaAttributes.level);\n li.setAttribute('aria-level', ariaAttributes.level.toString());\n if (ariaAttributes.groupItemRole === 'presentation' || ariaAttributes.itemRole === 'presentation') {\n li.removeAttribute('aria-level');\n }\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.tooltip)) {\n var tooltipText = fieldData[fields.tooltip];\n if (options && options.enableHtmlSanitizer) {\n tooltipText = SanitizeHtmlHelper.sanitize(tooltipText);\n }\n else {\n var tooltipTextElement = createElement('span', { innerHTML: tooltipText });\n tooltipText = tooltipTextElement.innerText;\n tooltipTextElement = null;\n }\n li.setAttribute('title', tooltipText);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n var htmlAttributes = fieldData[fields.htmlAttributes];\n // Check if 'class' attribute is present and not an empty string\n if ('class' in htmlAttributes && typeof htmlAttributes['class'] === 'string' && htmlAttributes['class'].trim() === '') {\n delete htmlAttributes['class'];\n }\n setAttribute(li, htmlAttributes);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled] === false) {\n li.classList.add(cssClass.disabled);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.isVisible) && fieldData[fields.isVisible] === false) {\n li.style.display = 'none';\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.imageUrl) && !isNullOrUndefined(fieldData[fields.imageUrl])\n && !curOpt.template) {\n var attr = { src: fieldData[fields.imageUrl] };\n merge(attr, fieldData[fields.imageAttributes]);\n var imageElemnt = createElement('img', { className: cssClass.image, attrs: attr });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', imageElemnt);\n }\n else {\n prepend([imageElemnt], li.firstElementChild);\n }\n }\n // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) &&\n !isNullOrUndefined(fieldData[fields.iconCss]) && !curOpt.template) {\n var iconElement = createElement('div', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', iconElement);\n }\n else {\n prepend([iconElement], li.firstElementChild);\n }\n }\n if (innerEle.length) {\n prepend(innerEle, li.firstElementChild);\n }\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n processSubChild(createElement, fieldData, fields, dataSource, curOpt, li, ariaAttributes.level);\n }\n if (anchorElement) {\n addClass([li], [cssClass.navigable]);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n item: li,\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreated(curData);\n }\n checkboxElement = [];\n child.push(li);\n }\n return child;\n }\n ListBase.createListItemFromJson = createListItemFromJson;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {number} level? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - Specifies the list options that need to provide.\n */\n function createListFromJson(createElement, dataSource, \n // eslint-disable-next-line\n options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var li = createListItemFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance);\n return generateUL(createElement, li, curOpt.listClass, options);\n }\n ListBase.createListFromJson = createListFromJson;\n /**\n * Return the next or previous visible element.\n *\n * @param {Element[]|NodeList} elementArray - An element array to find next or previous element.\n * @param {Element} li - An element to find next or previous after this element.\n * @param {boolean} isPrevious? - Specify when the need get previous element from array.\n */\n function getSiblingLI(elementArray, element, isPrevious) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n if (!elementArray || !elementArray.length) {\n return void 0;\n }\n var siblingLI;\n var liIndex;\n var liCollections = Array.prototype.slice.call(elementArray);\n if (element) {\n liIndex = indexOf(element, liCollections);\n }\n else {\n liIndex = (isPrevious === true ? liCollections.length : -1);\n }\n siblingLI = liCollections[liIndex + (isPrevious === true ? -1 : 1)];\n while (siblingLI && (!isVisible(siblingLI) || siblingLI.classList.contains(cssClass.disabled))) {\n liIndex = liIndex + (isPrevious === true ? -1 : 1);\n siblingLI = liCollections[liIndex];\n }\n return siblingLI;\n }\n ListBase.getSiblingLI = getSiblingLI;\n /**\n * Return the index of the li element\n *\n * @param {Element} item - An element to find next or previous after this element.\n * @param {Element[]} elementArray - An element array to find index of given li.\n */\n function indexOf(item, elementArray) {\n if (!elementArray || !item) {\n return void 0;\n }\n else {\n var liCollections = elementArray;\n liCollections = Array.prototype.slice.call(elementArray);\n return liCollections.indexOf(item);\n }\n }\n ListBase.indexOf = indexOf;\n /**\n * Returns the grouped data from given dataSource.\n *\n * @param {{Object}[]} dataSource - The JSON data which is necessary to process.\n * @param {FieldsMapping} fields - Fields that are mapped from the data source.\n * @param {SortOrder} sortOrder- Specifies final result sort order.\n */\n function groupDataSource(dataSource, fields, sortOrder) {\n if (sortOrder === void 0) { sortOrder = 'None'; }\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var cusQuery = new Query().group(curFields.groupBy);\n // need to remove once sorting issues fixed in DataManager\n cusQuery = addSorting(sortOrder, 'key', cusQuery);\n var ds = getDataSource(dataSource, cusQuery);\n dataSource = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[j].items;\n var grpItem = {};\n var hdr = 'isHeader';\n grpItem[curFields.text] = ds[j].key;\n grpItem[\"\" + hdr] = true;\n var newtext = curFields.text;\n if (newtext === 'id') {\n newtext = 'text';\n grpItem[\"\" + newtext] = ds[j].key;\n }\n grpItem._id = 'group-list-item-' + (ds[j].key ?\n ds[j].key.toString().trim() : 'undefined');\n grpItem.items = itemObj;\n dataSource.push(grpItem);\n for (var k = 0; k < itemObj.length; k++) {\n dataSource.push(itemObj[k]);\n }\n }\n return dataSource;\n }\n ListBase.groupDataSource = groupDataSource;\n /**\n * Returns a sorted query object.\n *\n * @param {SortOrder} sortOrder - Specifies that sort order.\n * @param {string} sortBy - Specifies sortBy fields.\n * @param {Query} query - Pass if any existing query.\n */\n function addSorting(sortOrder, sortBy, query) {\n if (query === void 0) { query = new Query(); }\n if (sortOrder === 'Ascending') {\n query.sortBy(sortBy, 'ascending', true);\n }\n else if (sortOrder === 'Descending') {\n query.sortBy(sortBy, 'descending', true);\n }\n else {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[i].fn === 'onSortBy') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n }\n ListBase.addSorting = addSorting;\n /**\n * Return an array of JSON Data that processed based on queries.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {Query} query - Specifies query that need to process.\n */\n function getDataSource(dataSource, query) {\n // eslint-disable-next-line\n return new DataManager(dataSource)\n .executeLocal(query);\n }\n ListBase.getDataSource = getDataSource;\n /**\n * Created JSON data based the UL and LI element\n *\n * @param {HTMLElement|Element} element - UL element that need to convert as a JSON\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function createJsonFromElement(element, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var curEle = element.cloneNode(true);\n var jsonAr = [];\n curEle.classList.add('json-parent');\n var childs = curEle.querySelectorAll('.json-parent>li');\n curEle.classList.remove('json-parent');\n for (var i = 0; i < childs.length; i++) {\n var li = childs[i];\n var anchor = li.querySelector('a');\n var ul = li.querySelector('ul');\n var json = {};\n var childNodes = anchor ? anchor.childNodes : li.childNodes;\n var keys = Object.keys(childNodes);\n for (var i_1 = 0; i_1 < childNodes.length; i_1++) {\n if (!(childNodes[Number(keys[i_1])]).hasChildNodes()) {\n json[fields.text] = childNodes[Number(keys[i_1])].textContent;\n }\n }\n var attributes_1 = getAllAttributes(li);\n if (attributes_1.id) {\n json[fields.id] = attributes_1.id;\n delete attributes_1.id;\n }\n else {\n json[fields.id] = generateId();\n }\n if (Object.keys(attributes_1).length) {\n json[fields.htmlAttributes] = attributes_1;\n }\n if (anchor) {\n attributes_1 = getAllAttributes(anchor);\n if (Object.keys(attributes_1).length) {\n json[fields.urlAttributes] = attributes_1;\n }\n }\n if (ul) {\n json[fields.child] = createJsonFromElement(ul, options);\n }\n jsonAr.push(json);\n }\n return jsonAr;\n }\n ListBase.createJsonFromElement = createJsonFromElement;\n function typeofData(data) {\n var match = { typeof: null, item: null };\n for (var i = 0; i < data.length; i++) {\n if (!isNullOrUndefined(data[i])) {\n return match = { typeof: typeof data[i], item: data[i] };\n }\n }\n return match;\n }\n function setAttribute(element, elementAttributes) {\n var attr = {};\n merge(attr, elementAttributes);\n if (attr.class) {\n addClass([element], attr.class.split(' '));\n delete attr.class;\n }\n attributes(element, attr);\n }\n function getAllAttributes(element) {\n var attributes = {};\n var attr = element.attributes;\n for (var index = 0; index < attr.length; index++) {\n attributes[attr[index].nodeName] = attr[index].nodeValue;\n }\n return attributes;\n }\n /**\n * Created UL element from content template.\n *\n * @param {string} template - that need to convert and generate li element.\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function renderContentTemplate(createElement, template, dataSource, \n // eslint-disable-next-line\n fields, options, componentInstance) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n var ulElement = createElement('ul', { className: cssClass.ul, attrs: { role: 'presentation' } });\n var curOpt = extend({}, defaultListBaseOptions, options);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var compiledString = compileTemplate(template);\n var liCollection = [];\n var value;\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], curFields);\n var curItem = dataSource[i];\n var isHeader = curItem.isHeader;\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreating(curData);\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], curFields);\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n }\n var li = createElement('li', {\n id: id + '-' + i,\n className: isHeader ? cssClass.group : cssClass.li, attrs: { role: 'presentation' }\n });\n if (isHeader) {\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n li.innerText = curItem;\n }\n else {\n li.innerText = fieldData[curFields.text];\n }\n }\n else {\n var currentID = isHeader ? curOpt.groupTemplateID : curOpt.templateID;\n if (isHeader) {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n // eslint-disable-next-line\n var compiledElement = compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n else {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n // eslint-disable-next-line\n var compiledElement = compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n item: li,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreated(curData);\n }\n liCollection.push(li);\n }\n append(liCollection, ulElement);\n return ulElement;\n }\n ListBase.renderContentTemplate = renderContentTemplate;\n /**\n * Created header items from group template.\n *\n * @param {string} template - that need to convert and generate li element.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {FieldsMapping} fields - Specifies fields for mapping the dataSource.\n *\n * @param {Element[]} headerItems? - Specifies listbase header items.\n */\n // tslint:disable-next-line\n function renderGroupTemplate(groupTemplate, groupDataSource, fields, \n // eslint-disable-next-line\n headerItems, options, componentInstance) {\n var compiledString = compileTemplate(groupTemplate);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var curOpt = extend({}, defaultListBaseOptions, options);\n var category = curFields.groupBy;\n for (var _i = 0, headerItems_1 = headerItems; _i < headerItems_1.length; _i++) {\n var header = headerItems_1[_i];\n var headerData = {};\n headerData[\"\" + category] = header.textContent;\n header.innerHTML = '';\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n // eslint-disable-next-line\n var compiledElement = compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, header);\n if (compiledElement) {\n append(compiledElement, header);\n }\n }\n else {\n append(compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), header);\n }\n }\n return headerItems;\n }\n ListBase.renderGroupTemplate = renderGroupTemplate;\n function generateId() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n ListBase.generateId = generateId;\n function processSubChild(createElement, fieldData, fields, ds, options, element, level) {\n // Get SubList\n var subDS = fieldData[fields.child] || [];\n var hasChildren = fieldData[fields.hasChildren];\n //Create Sub child\n if (subDS.length) {\n hasChildren = true;\n element.classList.add(cssClass.hasChild);\n if (options.processSubChild) {\n var subLi = createListFromJson(createElement, subDS, options, ++level);\n element.appendChild(subLi);\n }\n }\n // Create expand and collapse node\n if (!!options.expandCollapse && hasChildren && !options.template) {\n element.firstElementChild.classList.add(cssClass.iconWrapper);\n var expandElement = options.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', { className: 'e-icons ' + options.expandIconClass })], element.querySelector('.' + cssClass.textContent));\n }\n }\n function generateSingleLevelLI(createElement, item, fieldData, fields, className, innerElements, grpLI, id, index, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var value = item;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number' && typeof item !== 'boolean') {\n dataSource = item;\n text = (typeof fieldData[fields.text] === 'boolean' || typeof fieldData[fields.text] === 'number') ?\n fieldData[fields.text] : (fieldData[fields.text] || '');\n value = fieldData[fields.value];\n }\n var elementID;\n if (!isNullOrUndefined(dataSource) && !isNullOrUndefined(fieldData[fields.id])\n && fieldData[fields.id] !== '') {\n elementID = id;\n }\n else {\n elementID = id + '-' + index;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n id: elementID, attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n // eslint-disable-next-line no-prototype-builtins\n if (dataSource && fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled].toString() === 'false') {\n li.classList.add(cssClass.disabled);\n }\n if (grpLI) {\n li.innerText = text;\n }\n else {\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n // eslint-disable-next-line no-prototype-builtins\n if (dataSource && fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n if (innerElements.length && !curOpt.itemNavigable) {\n append(innerElements, li);\n }\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n li.appendChild(anchorTag(createElement, dataSource, fields, text, innerElements, curOpt.itemNavigable));\n }\n else {\n if (innerElements.length && curOpt.itemNavigable) {\n append(innerElements, li);\n }\n li.appendChild(document.createTextNode(text));\n }\n }\n return li;\n }\n function getModuleClass(moduleName) {\n var moduleClass;\n // eslint-disable-next-line\n return moduleClass = {\n li: \"e-\" + moduleName + \"-item\",\n ul: \"e-\" + moduleName + \"-parent e-ul\",\n group: \"e-\" + moduleName + \"-group-item\",\n icon: \"e-\" + moduleName + \"-icon\",\n text: \"e-\" + moduleName + \"-text\",\n check: \"e-\" + moduleName + \"-check\",\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: \"e-\" + moduleName + \"-url\",\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: \"e-\" + moduleName + \"-img\",\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n };\n }\n function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation) {\n var fieldData = getFieldValues(dataSource, fields);\n var attr = { href: fieldData[fields.url] };\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.urlAttributes) && fieldData[fields.urlAttributes]) {\n merge(attr, fieldData[fields.urlAttributes]);\n attr.href = fieldData[fields.url] ? fieldData[fields.url] :\n fieldData[fields.urlAttributes].href;\n }\n var anchorTag;\n if (!isFullNavigation) {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url, innerHTML: text });\n }\n else {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url });\n var anchorWrapper = createElement('div', { className: cssClass.anchorWrap });\n if (innerElements && innerElements.length) {\n append(innerElements, anchorWrapper);\n }\n anchorWrapper.appendChild(document.createTextNode(text));\n append([anchorWrapper], anchorTag);\n }\n setAttribute(anchorTag, attr);\n return anchorTag;\n }\n // tslint:disable-next-line\n /* tslint:disable:align */\n function generateLI(createElement, item, fieldData, \n // eslint-disable-next-line\n fields, className, options, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var uID;\n var grpLI;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number') {\n dataSource = item;\n text = fieldData[fields.text] || '';\n // tslint:disable-next-line\n uID = (isNullOrUndefined(fieldData['_id'])) ? fieldData[fields.id] : fieldData['_id'];\n // eslint-disable-next-line no-prototype-builtins\n grpLI = (item.hasOwnProperty('isHeader') && item.isHeader)\n ? true : false;\n }\n if (options && options.enableHtmlSanitizer) {\n // eslint-disable-next-line no-self-assign\n text = text;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n if (!isNullOrUndefined(uID) === true) {\n li.setAttribute('data-uid', uID);\n }\n else {\n li.setAttribute('data-uid', generateId());\n }\n if (grpLI && options && options.groupTemplate) {\n var compiledString = compileTemplate(options.groupTemplate);\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n // eslint-disable-next-line\n var compiledElement = compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), li);\n }\n }\n else if (!grpLI && options && options.template) {\n var compiledString = compileTemplate(options.template);\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n // eslint-disable-next-line\n var compiledElement = compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate), li);\n }\n }\n else {\n var innerDiv = createElement('div', {\n className: cssClass.textContent,\n attrs: (ariaAttributes.wrapperRole !== '' ? { role: ariaAttributes.wrapperRole } : {})\n });\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n innerDiv.appendChild(anchorTag(createElement, dataSource, fields, text, null, curOpt.itemNavigable));\n }\n else {\n var element = createElement('span', {\n className: cssClass.text,\n attrs: (ariaAttributes.itemText !== '' ? { role: ariaAttributes.itemText } : {})\n });\n if (options && options.enableHtmlSanitizer) {\n element.innerText = SanitizeHtmlHelper.sanitize(text);\n }\n else {\n element.innerHTML = text;\n }\n innerDiv.appendChild(element);\n }\n li.appendChild(innerDiv);\n }\n return li;\n }\n /**\n * Returns UL element based on the given LI element.\n *\n * @param {HTMLElement[]} liElement - Specifies array of LI element.\n *\n * @param {string} className? - Specifies class name that need to be added in UL element.\n *\n * @param {ListBaseOptions} options? - Specifies ListBase options.\n */\n function generateUL(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n cssClass = getModuleClass(curOpt.moduleName);\n var ulElement = createElement('ul', {\n className: cssClass.ul + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.listRole !== '' ? { role: ariaAttributes.listRole } : {})\n });\n append(liElement, ulElement);\n return ulElement;\n }\n ListBase.generateUL = generateUL;\n /**\n * Returns LI element with additional DIV tag based on the given LI element.\n *\n * @param {liElement} liElement - Specifies LI element.\n *\n * @param {string} className? - Specifies class name that need to be added in created DIV element.\n *\n * @param {ListBaseOptions} options? - Specifies ListBase options.\n */\n function generateIcon(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var expandElement = curOpt.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', {\n className: 'e-icons ' + curOpt.expandIconClass + ' ' +\n (isNullOrUndefined(className) ? '' : className)\n })], liElement.querySelector('.' + cssClass.textContent));\n return liElement;\n }\n ListBase.generateIcon = generateIcon;\n})(ListBase || (ListBase = {}));\n/**\n * Used to get dataSource item from complex data using fields.\n *\n * @param {Object} dataSource - Specifies an JSON or String data.\n *\n * @param {FieldsMapping} fields - Fields that are mapped from the dataSource.\n */\nexport function getFieldValues(dataItem, fields) {\n var fieldData = {};\n if (isNullOrUndefined(dataItem) || typeof (dataItem) === 'string' || typeof (dataItem) === 'number'\n || !isNullOrUndefined(dataItem.isHeader)) {\n return dataItem;\n }\n else {\n for (var _i = 0, _a = Object.keys(fields); _i < _a.length; _i++) {\n var field = _a[_i];\n var dataField = fields[\"\" + field];\n var value = !isNullOrUndefined(dataField) &&\n typeof (dataField) === 'string' ? getValue(dataField, dataItem) : undefined;\n if (!isNullOrUndefined(value)) {\n fieldData[\"\" + dataField] = value;\n }\n }\n }\n return fieldData;\n}\nfunction compileTemplate(template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelector(template)) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return undefined;\n}\n","/**\n * Collision module.\n */\nimport { calculatePosition } from './position';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar parentDocument;\nvar targetContainer;\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {HTMLElement} viewPortElement - specifies the element\n * @param {CollisionCoordinates} axis - specifies the collision coordinates\n * @param {OffsetPosition} position - specifies the position\n * @returns {void}\n */\nexport function fit(element, viewPortElement, axis, position) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: false, Y: false }; }\n if (!axis.Y && !axis.X) {\n return { left: 0, top: 0 };\n }\n var elemData = element.getBoundingClientRect();\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n if (!position) {\n position = calculatePosition(element, 'left', 'top');\n }\n if (axis.X) {\n var containerWidth = targetContainer ? getTargetContainerWidth() : getViewPortWidth();\n var containerLeft = ContainerLeft();\n var containerRight = ContainerRight();\n var overLeft = containerLeft - position.left;\n var overRight = position.left + elemData.width - containerRight;\n if (elemData.width > containerWidth) {\n if (overLeft > 0 && overRight <= 0) {\n position.left = containerRight - elemData.width;\n }\n else if (overRight > 0 && overLeft <= 0) {\n position.left = containerLeft;\n }\n else {\n position.left = overLeft > overRight ? (containerRight - elemData.width) : containerLeft;\n }\n }\n else if (overLeft > 0) {\n position.left += overLeft;\n }\n else if (overRight > 0) {\n position.left -= overRight;\n }\n }\n if (axis.Y) {\n var containerHeight = targetContainer ? getTargetContainerHeight() : getViewPortHeight();\n var containerTop = ContainerTop();\n var containerBottom = ContainerBottom();\n var overTop = containerTop - position.top;\n var overBottom = position.top + elemData.height - containerBottom;\n if (elemData.height > containerHeight) {\n if (overTop > 0 && overBottom <= 0) {\n position.top = containerBottom - elemData.height;\n }\n else if (overBottom > 0 && overTop <= 0) {\n position.top = containerTop;\n }\n else {\n position.top = overTop > overBottom ? (containerBottom - elemData.height) : containerTop;\n }\n }\n else if (overTop > 0) {\n position.top += overTop;\n }\n else if (overBottom > 0) {\n position.top -= overBottom;\n }\n }\n return position;\n}\n/**\n *\n * @param {HTMLElement} element - specifies the html element\n * @param {HTMLElement} viewPortElement - specifies the html element\n * @param {number} x - specifies the number\n * @param {number} y - specifies the number\n * @returns {string[]} - returns the string value\n */\nexport function isCollide(element, viewPortElement, x, y) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n var elemOffset = calculatePosition(element, 'left', 'top');\n if (x) {\n elemOffset.left = x;\n }\n if (y) {\n elemOffset.top = y;\n }\n var data = [];\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n var elementRect = element.getBoundingClientRect();\n var top = elemOffset.top;\n var left = elemOffset.left;\n var right = elemOffset.left + elementRect.width;\n var bottom = elemOffset.top + elementRect.height;\n // eslint-disable-next-line\n var topData = '', leftData = '';\n var yAxis = topCollideCheck(top, bottom);\n var xAxis = leftCollideCheck(left, right);\n if (yAxis.topSide) {\n data.push('top');\n }\n if (xAxis.rightSide) {\n data.push('right');\n }\n if (xAxis.leftSide) {\n data.push('left');\n }\n if (yAxis.bottomSide) {\n data.push('bottom');\n }\n return data;\n}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {HTMLElement} target - specifies the element\n * @param {number} offsetX - specifies the number\n * @param {number} offsetY - specifies the number\n * @param {string} positionX - specifies the string value\n * @param {string} positionY - specifies the string value\n * @param {HTMLElement} viewPortElement - specifies the element\n * @param {CollisionCoordinates} axis - specifies the collision axis\n * @param {boolean} fixedParent - specifies the boolean\n * @returns {void}\n */\nexport function flip(element, target, offsetX, offsetY, positionX, positionY, viewPortElement, \n/* eslint-disable */\naxis, fixedParent) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: true, Y: true }; }\n if (!target || !element || !positionX || !positionY || (!axis.X && !axis.Y)) {\n return;\n }\n var tEdge = { TL: null,\n TR: null,\n BL: null,\n BR: null\n }, eEdge = {\n TL: null,\n TR: null,\n BL: null,\n BR: null\n /* eslint-enable */\n };\n var elementRect;\n if (window.getComputedStyle(element).display === 'none') {\n var oldVisibility = element.style.visibility;\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n elementRect = element.getBoundingClientRect();\n element.style.removeProperty('display');\n element.style.visibility = oldVisibility;\n }\n else {\n elementRect = element.getBoundingClientRect();\n }\n var pos = {\n posX: positionX, posY: positionY, offsetX: offsetX, offsetY: offsetY, position: { left: 0, top: 0 }\n };\n targetContainer = viewPortElement;\n parentDocument = target.ownerDocument;\n updateElementData(target, tEdge, pos, fixedParent, elementRect);\n setPosition(eEdge, pos, elementRect);\n if (axis.X) {\n leftFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n if (axis.Y && tEdge.TL.top > -1) {\n topFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n setPopup(element, pos, elementRect);\n}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client rect\n * @returns {void}\n */\nfunction setPopup(element, pos, elementRect) {\n //eslint-disable-next-line\n var left = 0, top = 0;\n if (element.offsetParent != null\n && (getComputedStyle(element.offsetParent).position === 'absolute' ||\n getComputedStyle(element.offsetParent).position === 'relative')) {\n var data = calculatePosition(element.offsetParent, 'left', 'top', false, elementRect);\n left = data.left;\n top = data.top;\n }\n var scaleX = 1;\n var scaleY = 1;\n if (element.offsetParent) {\n var transformStyle = getComputedStyle(element.offsetParent).transform;\n if (transformStyle !== 'none') {\n var matrix = new DOMMatrix(transformStyle);\n scaleX = matrix.a;\n scaleY = matrix.d;\n }\n }\n element.style.top = ((pos.position.top / scaleY) + pos.offsetY - (top)) + 'px';\n element.style.left = ((pos.position.left / scaleX) + pos.offsetX - (left)) + 'px';\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifies the offset\n * @param {PositionLocation} pos - specifies theloaction\n * @param {boolean} fixedParent - specifies the boolean\n * @param {ClientRect} elementRect - specifies the client rect\n * @returns {void}\n */\nfunction updateElementData(target, edge, pos, fixedParent, elementRect) {\n pos.position = calculatePosition(target, pos.posX, pos.posY, fixedParent, elementRect);\n edge.TL = calculatePosition(target, 'left', 'top', fixedParent, elementRect);\n edge.TR = calculatePosition(target, 'right', 'top', fixedParent, elementRect);\n edge.BR = calculatePosition(target, 'left', 'bottom', fixedParent, elementRect);\n edge.BL = calculatePosition(target, 'right', 'bottom', fixedParent, elementRect);\n}\n/**\n *\n * @param {EdgeOffset} eStatus - specifies the status\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client\n * @returns {void}\n */\nfunction setPosition(eStatus, pos, elementRect) {\n eStatus.TL = { top: pos.position.top + pos.offsetY, left: pos.position.left + pos.offsetX };\n eStatus.TR = { top: eStatus.TL.top, left: eStatus.TL.left + elementRect.width };\n eStatus.BL = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left };\n eStatus.BR = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left + elementRect.width };\n}\n/**\n *\n * @param {number} left - specifies the number\n * @param {number} right - specifies the number\n * @returns {LeftCorners} - returns the value\n */\nfunction leftCollideCheck(left, right) {\n //eslint-disable-next-line\n var leftSide = false, rightSide = false;\n if (((left - getBodyScrollLeft()) < ContainerLeft())) {\n leftSide = true;\n }\n if (right > ContainerRight()) {\n rightSide = true;\n }\n return { leftSide: leftSide, rightSide: rightSide };\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifes the element\n * @param {EdgeOffset} tEdge - specifies the edge offset\n * @param {PositionLocation} pos - specifes the location\n * @param {ClientRect} elementRect - specifies the client\n * @param {boolean} deepCheck - specifies the boolean value\n * @returns {void}\n */\nfunction leftFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = leftCollideCheck(edge.TL.left, edge.TR.left);\n if ((tEdge.TL.left - getBodyScrollLeft()) <= ContainerLeft()) {\n collideSide.leftSide = false;\n }\n if (tEdge.TR.left > ContainerRight()) {\n collideSide.rightSide = false;\n }\n if ((collideSide.leftSide && !collideSide.rightSide) || (!collideSide.leftSide && collideSide.rightSide)) {\n if (pos.posX === 'right') {\n pos.posX = 'left';\n }\n else {\n pos.posX = 'right';\n }\n pos.offsetX = pos.offsetX + elementRect.width;\n pos.offsetX = -1 * pos.offsetX;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n leftFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifies the offset\n * @param {EdgeOffset} tEdge - specifies the offset\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client rect\n * @param {boolean} deepCheck - specifies the boolean\n * @returns {void}\n */\nfunction topFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = topCollideCheck(edge.TL.top, edge.BL.top);\n if ((tEdge.TL.top - getBodyScrollTop()) <= ContainerTop()) {\n collideSide.topSide = false;\n }\n if (tEdge.BL.top >= ContainerBottom() && target.getBoundingClientRect().bottom < window.innerHeight) {\n collideSide.bottomSide = false;\n }\n if ((collideSide.topSide && !collideSide.bottomSide) || (!collideSide.topSide && collideSide.bottomSide)) {\n if (pos.posY === 'top') {\n pos.posY = 'bottom';\n }\n else {\n pos.posY = 'top';\n }\n pos.offsetY = pos.offsetY + elementRect.height;\n pos.offsetY = -1 * pos.offsetY;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false, elementRect);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n topFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\n/**\n *\n * @param {number} top - specifies the number\n * @param {number} bottom - specifies the number\n * @returns {TopCorners} - retyrns the value\n */\nfunction topCollideCheck(top, bottom) {\n //eslint-disable-next-line\n var topSide = false, bottomSide = false;\n if ((top - getBodyScrollTop()) < ContainerTop()) {\n topSide = true;\n }\n if (bottom > ContainerBottom()) {\n bottomSide = true;\n }\n return { topSide: topSide, bottomSide: bottomSide };\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerWidth() {\n return targetContainer.getBoundingClientRect().width;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerHeight() {\n return targetContainer.getBoundingClientRect().height;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerLeft() {\n return targetContainer.getBoundingClientRect().left;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerTop() {\n return targetContainer.getBoundingClientRect().top;\n}\n//eslint-disable-next-line\nfunction ContainerTop() {\n if (targetContainer) {\n return getTargetContainerTop();\n }\n return 0;\n}\n//eslint-disable-next-line\nfunction ContainerLeft() {\n if (targetContainer) {\n return getTargetContainerLeft();\n }\n return 0;\n}\n//eslint-disable-next-line\nfunction ContainerRight() {\n if (targetContainer) {\n return (getBodyScrollLeft() + getTargetContainerLeft() + getTargetContainerWidth());\n }\n return (getBodyScrollLeft() + getViewPortWidth());\n}\n//eslint-disable-next-line\nfunction ContainerBottom() {\n if (targetContainer) {\n return (getBodyScrollTop() + getTargetContainerTop() + getTargetContainerHeight());\n }\n return (getBodyScrollTop() + getViewPortHeight());\n}\n/**\n * @returns {void}\n */\nfunction getBodyScrollTop() {\n // if(targetContainer)\n // return targetContainer.scrollTop;\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\n/**\n * @returns {void}\n */\nfunction getBodyScrollLeft() {\n // if(targetContainer)\n // return targetContainer.scrollLeft;\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\n/**\n * @returns {void}\n */\nfunction getViewPortHeight() {\n return window.innerHeight;\n}\n/**\n * @returns {void}\n */\nfunction getViewPortWidth() {\n var windowWidth = window.innerWidth;\n var documentReact = document.documentElement.getBoundingClientRect();\n var offsetWidth = (isNullOrUndefined(document.documentElement)) ? 0 : documentReact.width;\n return windowWidth - (windowWidth - offsetWidth);\n}\nexport function destroy() {\n targetContainer = null;\n parentDocument = null;\n}\n","/**\n * Position library\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar elementRect;\nvar popupRect;\nvar element;\nvar parentDocument;\nvar fixedParent = false;\n/**\n *\n * @param {HTMLElement} anchor - specifies the element\n * @param {HTMLElement} element - specifies the element\n * @returns {OffsetPosition} - returns the value\n */\nexport function calculateRelativeBasedPosition(anchor, element) {\n var fixedElement = false;\n var anchorPos = { left: 0, top: 0 };\n var tempAnchor = anchor;\n if (!anchor || !element) {\n return anchorPos;\n }\n if (isNullOrUndefined(element.offsetParent) && element.style.position === 'fixed') {\n fixedElement = true;\n }\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left += anchor.offsetLeft;\n anchorPos.top += anchor.offsetTop;\n anchor = anchor.offsetParent;\n }\n anchor = tempAnchor;\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left -= anchor.scrollLeft;\n anchorPos.top -= anchor.scrollTop;\n anchor = anchor.parentElement;\n }\n return anchorPos;\n}\n/**\n *\n * @param {Element} currentElement - specifies the element\n * @param {string} positionX - specifies the position\n * @param {string} positionY - specifies the position\n * @param {boolean} parentElement - specifies the boolean\n * @param {ClientRect} targetValues - specifies the client\n * @returns {OffsetPosition} - returns the position\n */\nexport function calculatePosition(currentElement, positionX, positionY, parentElement, targetValues) {\n popupRect = undefined;\n popupRect = targetValues;\n fixedParent = parentElement ? true : false;\n if (!currentElement) {\n return { left: 0, top: 0 };\n }\n if (!positionX) {\n positionX = 'left';\n }\n if (!positionY) {\n positionY = 'top';\n }\n parentDocument = currentElement.ownerDocument;\n element = currentElement;\n var pos = { left: 0, top: 0 };\n return updatePosition(positionX.toLowerCase(), positionY.toLowerCase(), pos);\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosx(value, pos) {\n pos.left = value;\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosy(value, pos) {\n pos.top = value;\n}\n/**\n *\n * @param {string} posX - specifies the position\n * @param {string} posY - specifies the position\n * @param {OffsetPosition} pos - specifies the position\n * @returns {OffsetPosition} - returns the postion\n */\nfunction updatePosition(posX, posY, pos) {\n elementRect = element.getBoundingClientRect();\n switch (posY + posX) {\n case 'topcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'topright':\n setPosx(getElementRight(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'centercenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerright':\n setPosx(getElementRight(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'bottomcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomright':\n setPosx(getElementRight(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementBottom(), pos);\n break;\n default:\n case 'topleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementTop(), pos);\n break;\n }\n element = null;\n return pos;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollTop() {\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollLeft() {\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementBottom() {\n return fixedParent ? elementRect.bottom : elementRect.bottom + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementVCenter() {\n return getElementTop() + (elementRect.height / 2);\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementTop() {\n return fixedParent ? elementRect.top : elementRect.top + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementLeft() {\n return elementRect.left + getBodyScrollLeft();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementRight() {\n var popupWidth = (element && (element.classList.contains('e-date-wrapper') || element.classList.contains('e-datetime-wrapper') || element.classList.contains('e-date-range-wrapper') || element.classList.contains('e-multiselect'))) ? (popupRect ? popupRect.width : 0) :\n (popupRect && (elementRect.width >= popupRect.width) ? popupRect.width : 0);\n return elementRect.right + getBodyScrollLeft() - popupWidth;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementHCenter() {\n return getElementLeft() + (elementRect.width / 2);\n}\n","/**\n * Resize library\n */\nimport { isNullOrUndefined as isNOU, createElement, EventHandler, detach, Browser } from '@syncfusion/ej2-base';\n/* eslint-disable */\nvar elementClass = ['north-west', 'north', 'north-east', 'west', 'east', 'south-west', 'south', 'south-east'];\nvar RESIZE_HANDLER = 'e-resize-handle';\nvar FOCUSED_HANDLER = 'e-focused-handle';\nvar DIALOG_RESIZABLE = 'e-dlg-resizable';\nvar RESTRICT_LEFT = ['e-restrict-left'];\nvar RESIZE_WITHIN_VIEWPORT = 'e-resize-viewport';\nvar dialogBorderResize = ['north', 'west', 'east', 'south'];\nvar targetElement;\nvar selectedHandler;\nvar originalWidth = 0;\nvar originalHeight = 0;\nvar originalX = 0;\nvar originalY = 0;\nvar originalMouseX = 0;\nvar originalMouseY = 0;\nvar minHeight;\nvar maxHeight;\nvar minWidth;\nvar maxWidth;\nvar containerElement;\nvar resizeStart = null;\nvar resize = null;\nvar resizeEnd = null;\n/* eslint-enable */\nvar resizeWestWidth;\nvar setLeft = true;\nvar previousWidth = 0;\nvar setWidth = true;\n// eslint-disable-next-line\nvar proxy;\n/**\n *\n * @param {ResizeArgs} args - specifies the resize args\n * @returns {void}\n */\nexport function createResize(args) {\n resizeStart = args.resizeBegin;\n resize = args.resizing;\n resizeEnd = args.resizeComplete;\n targetElement = getDOMElement(args.element);\n containerElement = getDOMElement(args.boundary);\n var directions = args.direction.split(' ');\n for (var i = 0; i < directions.length; i++) {\n if (dialogBorderResize.indexOf(directions[i]) >= 0 && directions[i]) {\n setBorderResizeElm(directions[i]);\n }\n else if (directions[i].trim() !== '') {\n var resizeHandler = createElement('div', { className: 'e-icons ' + RESIZE_HANDLER + ' ' + 'e-' + directions[i] });\n targetElement.appendChild(resizeHandler);\n }\n }\n minHeight = args.minHeight;\n minWidth = args.minWidth;\n maxWidth = args.maxWidth;\n maxHeight = args.maxHeight;\n if (args.proxy && args.proxy.element && args.proxy.element.classList.contains('e-dialog')) {\n wireEvents(args.proxy);\n }\n else {\n wireEvents();\n }\n}\n/**\n *\n * @param {string} direction - specifies the string\n * @returns {void}\n */\nfunction setBorderResizeElm(direction) {\n calculateValues();\n var borderBottom = createElement('span', {\n attrs: {\n 'unselectable': 'on', 'contenteditable': 'false'\n }\n });\n borderBottom.setAttribute('class', 'e-dialog-border-resize e-' + direction);\n if (direction === 'south') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.bottom = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'north') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.top = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'east') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.right = '0px';\n borderBottom.style.top = '0px';\n }\n if (direction === 'west') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.left = '0px';\n borderBottom.style.top = '0px';\n }\n targetElement.appendChild(borderBottom);\n}\n/**\n *\n * @param {string} element - specifies the element\n * @returns {HTMLElement} - returns the element\n */\nfunction getDOMElement(element) {\n var domElement;\n if (!isNOU(element)) {\n if (typeof (element) === 'string') {\n domElement = document.querySelector(element);\n }\n else {\n domElement = element;\n }\n }\n return domElement;\n}\n// eslint-disable-next-line\nfunction wireEvents(args) {\n if (isNOU(args)) {\n args = this;\n }\n var resizers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < resizers.length; i++) {\n selectedHandler = resizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, args);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, args);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNOU(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n selectedHandler = borderResizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, args);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, args);\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {string} e - specifies the string\n * @returns {string} - returns the string\n */\nfunction getEventType(e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the mouse event\n * @returns {void}\n */\nfunction onMouseDown(e) {\n e.preventDefault();\n targetElement = e.target.parentElement;\n calculateValues();\n originalMouseX = e.pageX;\n originalMouseY = e.pageY;\n e.target.classList.add(FOCUSED_HANDLER);\n if (!isNOU(resizeStart)) {\n proxy = this;\n if (resizeStart(e, proxy) === true) {\n return;\n }\n }\n if (this.targetEle && targetElement && targetElement.querySelector('.' + DIALOG_RESIZABLE)) {\n containerElement = this.target === ('body' || 'document.body' || document.body) ? null : this.targetEle;\n maxWidth = this.targetEle.clientWidth;\n maxHeight = this.targetEle.clientHeight;\n }\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.add(target, 'mousemove', onMouseMove, this);\n EventHandler.add(document, 'mouseup', onMouseUp, this);\n for (var i = 0; i < RESTRICT_LEFT.length; i++) {\n if (targetElement.classList.contains(RESTRICT_LEFT[i])) {\n setLeft = false;\n }\n else {\n setLeft = true;\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onMouseUp(e) {\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNOU(containerElement)) ? document : containerElement;\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.remove(target, 'mousemove', onMouseMove);\n EventHandler.remove(target, touchMoveEvent, onMouseMove);\n EventHandler.remove(target, eventName, onMouseMove);\n if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n document.body.querySelector('.' + FOCUSED_HANDLER).classList.remove(FOCUSED_HANDLER);\n }\n if (!isNOU(resizeEnd)) {\n proxy = this;\n resizeEnd(e, proxy);\n }\n EventHandler.remove(document, 'mouseup', onMouseUp);\n EventHandler.remove(document, touchEndEvent, onMouseUp);\n}\n/* istanbul ignore next */\n/**\n * @returns {void}\n */\nfunction calculateValues() {\n originalWidth = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('width').replace('px', ''));\n originalHeight = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('height').replace('px', ''));\n originalX = targetElement.getBoundingClientRect().left;\n originalY = targetElement.getBoundingClientRect().top;\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onTouchStart(e) {\n targetElement = e.target.parentElement;\n calculateValues();\n var dialogResizeElement = targetElement.classList.contains('e-dialog');\n if ((e.target.classList.contains(RESIZE_HANDLER) || e.target.classList.contains('e-dialog-border-resize')) && dialogResizeElement) {\n e.target.classList.add(FOCUSED_HANDLER);\n }\n var coordinates = e.touches ? e.changedTouches[0] : e;\n originalMouseX = coordinates.pageX;\n originalMouseY = coordinates.pageY;\n if (!isNOU(resizeStart)) {\n proxy = this;\n if (resizeStart(e, proxy) === true) {\n return;\n }\n }\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.add(target, touchMoveEvent, onMouseMove, this);\n EventHandler.add(document, touchEndEvent, onMouseUp, this);\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onMouseMove(e) {\n if (e.target.classList.contains(RESIZE_HANDLER) && e.target.classList.contains(FOCUSED_HANDLER)) {\n selectedHandler = e.target;\n }\n else if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n selectedHandler = document.body.querySelector('.' + FOCUSED_HANDLER);\n }\n if (!isNOU(selectedHandler)) {\n var resizeTowards = '';\n for (var i = 0; i < elementClass.length; i++) {\n if (selectedHandler.classList.contains('e-' + elementClass[i])) {\n resizeTowards = elementClass[i];\n }\n }\n if (!isNOU(resize)) {\n proxy = this;\n resize(e, proxy);\n }\n switch (resizeTowards) {\n case 'south':\n resizeSouth(e);\n break;\n case 'north':\n resizeNorth(e);\n break;\n case 'west':\n resizeWest(e);\n break;\n case 'east':\n resizeEast(e);\n break;\n case 'south-east':\n resizeSouth(e);\n resizeEast(e);\n break;\n case 'south-west':\n resizeSouth(e);\n resizeWest(e);\n break;\n case 'north-east':\n resizeNorth(e);\n resizeEast(e);\n break;\n case 'north-west':\n resizeNorth(e);\n resizeWest(e);\n break;\n default: break;\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {HTMLElement} element - specifies the eleemnt\n * @returns {ClientRect} - returns the client\n */\nfunction getClientRectValues(element) {\n return element.getBoundingClientRect();\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeSouth(e) {\n var documentHeight = document.documentElement.clientHeight;\n var calculateValue = false;\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var currentpageY = coordinates.pageY;\n var targetRectValues = getClientRectValues(targetElement);\n var containerRectValues;\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement)) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && ((documentHeight - currentpageY) >= 0 || (targetRectValues.top < 0))) {\n calculateValue = true;\n }\n var calculatedHeight = originalHeight + (currentpageY - originalMouseY);\n calculatedHeight = (calculatedHeight > minHeight) ? calculatedHeight : minHeight;\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = containerRectValues.top;\n }\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetHeight - containerElement.clientHeight;\n var topWithoutborder = (targetRectValues.top - containerTop) - (borderValue / 2);\n topWithoutborder = (topWithoutborder < 0) ? 0 : topWithoutborder;\n if (targetRectValues.top > 0 && (topWithoutborder + calculatedHeight) > maxHeight) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.height = (maxHeight - parseInt(topWithoutborder.toString(), 10)) + 'px';\n return;\n }\n var targetTop = 0;\n if (calculateValue) {\n if (targetRectValues.top < 0 && (documentHeight + (targetRectValues.height + targetRectValues.top) > 0)) {\n targetTop = targetRectValues.top;\n if ((calculatedHeight + targetTop) <= 30) {\n calculatedHeight = (targetRectValues.height - (targetRectValues.height + targetRectValues.top)) + 30;\n }\n }\n if (((calculatedHeight + targetRectValues.top) >= maxHeight)) {\n targetElement.style.height = targetRectValues.height +\n (documentHeight - (targetRectValues.height + targetRectValues.top)) + 'px';\n }\n var calculatedTop = (isNOU(containerElement)) ? targetTop : topWithoutborder;\n if (calculatedHeight >= minHeight && ((calculatedHeight + calculatedTop) <= maxHeight)) {\n targetElement.style.height = calculatedHeight + 'px';\n }\n }\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeNorth(e) {\n var calculateValue = false;\n var boundaryRectValues;\n var pageY = (getEventType(e.type) === 'mouse') ? e.pageY : e.touches[0].pageY;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement)) {\n boundaryRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement) && (targetRectValues.top - boundaryRectValues.top) > 0) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && pageY > 0) {\n calculateValue = true;\n }\n var currentHeight = originalHeight - (pageY - originalMouseY);\n if (calculateValue) {\n if (currentHeight >= minHeight && currentHeight <= maxHeight) {\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = boundaryRectValues.top;\n }\n var top_1 = (originalY - containerTop) + (pageY - originalMouseY);\n top_1 = top_1 > 0 ? top_1 : 1;\n targetElement.style.height = currentHeight + 'px';\n targetElement.style.top = top_1 + 'px';\n }\n }\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeWest(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var rectValues;\n if (!isNOU(containerElement)) {\n rectValues = getClientRectValues(containerElement);\n }\n var pageX = (getEventType(e.type) === 'mouse') ? e.pageX : e.touches[0].pageX;\n var targetRectValues = getClientRectValues(targetElement);\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetWidth - containerElement.clientWidth;\n /* eslint-disable */\n var left = isNOU(containerElement) ? 0 : rectValues.left;\n var containerWidth = isNOU(containerElement) ? 0 : rectValues.width;\n /* eslint-enable */\n if (isNOU(resizeWestWidth)) {\n if (!isNOU(containerElement)) {\n resizeWestWidth = (((targetRectValues.left - left) - borderValue / 2)) + targetRectValues.width;\n resizeWestWidth = resizeWestWidth + (containerWidth - borderValue - resizeWestWidth);\n }\n else {\n resizeWestWidth = documentWidth;\n }\n }\n if (!isNOU(containerElement) &&\n (Math.floor((targetRectValues.left - rectValues.left) + targetRectValues.width +\n (rectValues.right - targetRectValues.right)) - borderValue) <= maxWidth) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && pageX >= 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth - (pageX - originalMouseX);\n if (setLeft) {\n calculatedWidth = (calculatedWidth > resizeWestWidth) ? resizeWestWidth : calculatedWidth;\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = rectValues.left;\n }\n var left_1 = (originalX - containerLeft) + (pageX - originalMouseX);\n left_1 = (left_1 > 0) ? left_1 : 1;\n if (calculatedWidth !== previousWidth && setWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n if (setLeft) {\n targetElement.style.left = left_1 + 'px';\n if (left_1 === 1) {\n setWidth = false;\n }\n else {\n setWidth = true;\n }\n }\n }\n }\n previousWidth = calculatedWidth;\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeEast(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var containerRectValues;\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var pageX = coordinates.pageX;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement) && (((targetRectValues.left - containerRectValues.left) + targetRectValues.width) <= maxWidth\n || (targetRectValues.right - containerRectValues.left) >= targetRectValues.width)) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && (documentWidth - pageX) > 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth + (pageX - originalMouseX);\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = containerRectValues.left;\n }\n if (((targetRectValues.left - containerLeft) + calculatedWidth) > maxWidth) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.width = maxWidth - (targetRectValues.left - containerLeft) + 'px';\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {number} minimumHeight - specifies the number\n * @returns {void}\n */\nexport function setMinHeight(minimumHeight) {\n minHeight = minimumHeight;\n}\n/**\n *\n * @param {number} value - specifies the number value\n * @returns {void}\n */\nexport function setMaxWidth(value) {\n maxWidth = value;\n}\n/**\n *\n * @param {number} value - specifies the number value\n * @returns {void}\n */\nexport function setMaxHeight(value) {\n maxHeight = value;\n}\n/**\n * @returns {void}\n */\nexport function removeResize() {\n var handlers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < handlers.length; i++) {\n detach(handlers[i]);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNOU(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n detach(borderResizers[i]);\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, Collection, L10n, Complex, compile, createElement, animationMode } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, detach, attributes, prepend, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, isBlazor } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, append, EventHandler, Draggable, extend } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, Browser } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup, PositionData, getZindexPartial } from '../popup/popup';\nimport { createResize, removeResize, setMinHeight, setMaxWidth, setMaxHeight } from '../common/resize';\nvar ButtonProps = /** @class */ (function (_super) {\n __extends(ButtonProps, _super);\n function ButtonProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], ButtonProps.prototype, \"isFlat\", void 0);\n __decorate([\n Property()\n ], ButtonProps.prototype, \"buttonModel\", void 0);\n __decorate([\n Property('Button')\n ], ButtonProps.prototype, \"type\", void 0);\n __decorate([\n Event()\n ], ButtonProps.prototype, \"click\", void 0);\n return ButtonProps;\n}(ChildProperty));\nexport { ButtonProps };\n/**\n * Configures the animation properties for both open and close the dialog.\n */\nvar AnimationSettings = /** @class */ (function (_super) {\n __extends(AnimationSettings, _super);\n function AnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Fade')\n ], AnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], AnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property(0)\n ], AnimationSettings.prototype, \"delay\", void 0);\n return AnimationSettings;\n}(ChildProperty));\nexport { AnimationSettings };\nvar ROOT = 'e-dialog';\nvar RTL = 'e-rtl';\nvar DLG_HEADER_CONTENT = 'e-dlg-header-content';\nvar DLG_HEADER = 'e-dlg-header';\nvar DLG_FOOTER_CONTENT = 'e-footer-content';\nvar MODAL_DLG = 'e-dlg-modal';\nvar DLG_CONTENT = 'e-dlg-content';\nvar DLG_CLOSE_ICON = 'e-icon-dlg-close';\nvar DLG_OVERLAY = 'e-dlg-overlay';\nvar DLG_TARGET = 'e-dlg-target';\nvar DLG_CONTAINER = 'e-dlg-container';\nvar SCROLL_DISABLED = 'e-scroll-disabled';\nvar DLG_PRIMARY_BUTTON = 'e-primary';\nvar ICON = 'e-icons';\nvar POPUP_ROOT = 'e-popup';\nvar DEVICE = 'e-device';\nvar FULLSCREEN = 'e-dlg-fullscreen';\nvar DLG_CLOSE_ICON_BTN = 'e-dlg-closeicon-btn';\nvar DLG_HIDE = 'e-popup-close';\nvar DLG_SHOW = 'e-popup-open';\nvar DLG_UTIL_DEFAULT_TITLE = 'Information';\nvar DLG_UTIL_ROOT = 'e-scroll-disabled';\nvar DLG_UTIL_ALERT = 'e-alert-dialog';\nvar DLG_UTIL_CONFIRM = 'e-confirm-dialog';\nvar DLG_RESIZABLE = 'e-dlg-resizable';\nvar DLG_RESTRICT_LEFT_VALUE = 'e-restrict-left';\nvar DLG_RESTRICT_WIDTH_VALUE = 'e-resize-viewport';\nvar DLG_REF_ELEMENT = 'e-dlg-ref-element';\nvar DLG_USER_ACTION_CLOSED = 'user action';\nvar DLG_CLOSE_ICON_CLOSED = 'close icon';\nvar DLG_ESCAPE_CLOSED = 'escape';\nvar DLG_OVERLAYCLICK_CLOSED = 'overlayClick';\nvar DLG_DRAG = 'e-draggable';\n/**\n * Represents the dialog component that displays the information and get input from the user.\n * Two types of dialog components are `Modal and Modeless (non-modal)` depending on its interaction with parent application.\n * ```html\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar Dialog = /** @class */ (function (_super) {\n __extends(Dialog, _super);\n /*\n * * Constructor for creating the widget\n *\n * @param\n * @param\n * @hidden\n */\n function Dialog(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n *Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.render = function () {\n this.initialize();\n this.initRender();\n this.wireEvents();\n if (this.width === '100%') {\n this.element.style.width = '';\n }\n if (this.minHeight !== '') {\n this.element.style.minHeight = formatUnit(this.minHeight);\n }\n if (this.enableResize) {\n this.setResize();\n if (this.animationSettings.effect === 'None') {\n this.getMinHeight();\n }\n }\n this.renderComplete();\n };\n Dialog.prototype.initializeValue = function () {\n this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n };\n /**\n *Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.preRender = function () {\n var _this = this;\n this.initializeValue();\n this.headerContent = null;\n this.allowMaxHeight = true;\n this.preventVisibility = true;\n this.clonedEle = this.element.cloneNode(true);\n this.closeIconClickEventHandler = function (event) {\n _this.dlgClosedBy = DLG_CLOSE_ICON_CLOSED;\n _this.hide(event);\n };\n this.dlgOverlayClickEventHandler = function (event) {\n _this.dlgClosedBy = DLG_OVERLAYCLICK_CLOSED;\n event.preventFocus = false;\n _this.trigger('overlayClick', event, function (overlayClickEventArgs) {\n if (!overlayClickEventArgs.preventFocus) {\n _this.focusContent();\n }\n _this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n });\n };\n var localeText = { close: 'Close' };\n this.l10n = new L10n('dialog', localeText, this.locale);\n this.checkPositionData();\n if (isNullOrUndefined(this.target)) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.target = document.body;\n this.isProtectedOnChange = prevOnChange;\n }\n };\n Dialog.prototype.updatePersistData = function () {\n if (this.enablePersistence) {\n this.setProperties({ width: parseFloat(this.element.style.width), height: parseFloat(this.element.style.height),\n position: { X: parseFloat(this.dragObj.element.style.left), Y: parseFloat(this.dragObj.element.style.top) } }, true);\n }\n };\n Dialog.prototype.isNumberValue = function (value) {\n var isNumber = /^[-+]?\\d*\\.?\\d+$/.test(value);\n return isNumber;\n };\n Dialog.prototype.checkPositionData = function () {\n if (!isNullOrUndefined(this.position)) {\n if (!isNullOrUndefined(this.position.X) && (typeof (this.position.X) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.X);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.X = parseFloat(this.position.X);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n if (!isNullOrUndefined(this.position.Y) && (typeof (this.position.Y) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.Y);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.Y = parseFloat(this.position.Y);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n }\n };\n Dialog.prototype.getEle = function (list, selector) {\n var element = undefined;\n for (var i = 0; i < list.length; i++) {\n if (list[i].classList.contains(selector)) {\n element = list[i];\n break;\n }\n }\n return element;\n };\n /* istanbul ignore next */\n Dialog.prototype.getMinHeight = function () {\n var computedHeaderHeight = '0px';\n var computedFooterHeight = '0px';\n if (!isNullOrUndefined(this.element.querySelector('.' + DLG_HEADER_CONTENT))) {\n computedHeaderHeight = getComputedStyle(this.headerContent).height;\n }\n var footerEle = this.getEle(this.element.children, DLG_FOOTER_CONTENT);\n if (!isNullOrUndefined(footerEle)) {\n computedFooterHeight = getComputedStyle(footerEle).height;\n }\n var headerHeight = parseInt(computedHeaderHeight.slice(0, computedHeaderHeight.indexOf('p')), 10);\n var footerHeight = parseInt(computedFooterHeight.slice(0, computedFooterHeight.indexOf('p')), 10);\n setMinHeight(headerHeight + 30 + (isNaN(footerHeight) ? 0 : footerHeight));\n return (headerHeight + 30 + footerHeight);\n };\n Dialog.prototype.onResizeStart = function (args, dialogObj) {\n dialogObj.trigger('resizeStart', args);\n return args.cancel;\n };\n Dialog.prototype.onResizing = function (args, dialogObj) {\n dialogObj.trigger('resizing', args);\n };\n Dialog.prototype.onResizeComplete = function (args, dialogObj) {\n dialogObj.trigger('resizeStop', args);\n this.updatePersistData();\n };\n Dialog.prototype.setResize = function () {\n if (this.enableResize) {\n if (this.isBlazorServerRender() && !isNullOrUndefined(this.element.querySelector('.e-icons.e-resize-handle'))) {\n return;\n }\n this.element.classList.add(DLG_RESIZABLE);\n var computedHeight = getComputedStyle(this.element).minHeight;\n var computedWidth = getComputedStyle(this.element).minWidth;\n var direction = '';\n for (var i = 0; i < this.resizeHandles.length; i++) {\n if (this.resizeHandles[i] === 'All') {\n direction = 'south north east west north-east north-west south-east south-west';\n break;\n }\n else {\n var directionValue = '';\n switch (this.resizeHandles[i].toString()) {\n case 'SouthEast':\n directionValue = 'south-east';\n break;\n case 'SouthWest':\n directionValue = 'south-west';\n break;\n case 'NorthEast':\n directionValue = 'north-east';\n break;\n case 'NorthWest':\n directionValue = 'north-west';\n break;\n default:\n directionValue = this.resizeHandles[i].toString();\n break;\n }\n direction += directionValue.toLocaleLowerCase() + ' ';\n }\n }\n if (this.enableRtl && direction.trim() === 'south-east') {\n direction = 'south-west';\n }\n else if (this.enableRtl && direction.trim() === 'south-west') {\n direction = 'south-east';\n }\n if (this.isModal && this.enableRtl) {\n this.element.classList.add(DLG_RESTRICT_LEFT_VALUE);\n }\n else if (this.isModal && this.target === document.body) {\n this.element.classList.add(DLG_RESTRICT_WIDTH_VALUE);\n }\n createResize({\n element: this.element,\n direction: direction,\n minHeight: parseInt(computedHeight.slice(0, computedWidth.indexOf('p')), 10),\n maxHeight: this.targetEle.clientHeight,\n minWidth: parseInt(computedWidth.slice(0, computedWidth.indexOf('p')), 10),\n maxWidth: this.targetEle.clientWidth,\n boundary: this.target === document.body ? null : this.targetEle,\n resizeBegin: this.onResizeStart.bind(this),\n resizeComplete: this.onResizeComplete.bind(this),\n resizing: this.onResizing.bind(this),\n proxy: this\n });\n this.wireWindowResizeEvent();\n }\n else {\n removeResize();\n this.unWireWindowResizeEvent();\n if (this.isModal) {\n this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n }\n else {\n this.element.classList.remove(DLG_RESTRICT_WIDTH_VALUE);\n }\n this.element.classList.remove(DLG_RESIZABLE);\n }\n };\n Dialog.prototype.getFocusElement = function (target) {\n var value = 'input,select,textarea,button:enabled,a,[contenteditable=\"true\"],[tabindex]';\n var items = target.querySelectorAll(value);\n return { element: items[items.length - 1] };\n };\n /* istanbul ignore next */\n Dialog.prototype.keyDown = function (event) {\n var _this = this;\n if (event.keyCode === 9) {\n if (this.isModal) {\n var buttonObj = void 0;\n if (!isNullOrUndefined(this.btnObj)) {\n buttonObj = this.btnObj[this.btnObj.length - 1];\n }\n if ((isNullOrUndefined(this.btnObj)) && (!isNullOrUndefined(this.ftrTemplateContent))) {\n buttonObj = this.getFocusElement(this.ftrTemplateContent);\n }\n if (isNullOrUndefined(this.btnObj) && isNullOrUndefined(this.ftrTemplateContent) && !isNullOrUndefined(this.contentEle)) {\n buttonObj = this.getFocusElement(this.contentEle);\n }\n if (!isNullOrUndefined(buttonObj) && document.activeElement === buttonObj.element && !event.shiftKey) {\n event.preventDefault();\n this.focusableElements(this.element).focus();\n }\n if (document.activeElement === this.focusableElements(this.element) && event.shiftKey) {\n event.preventDefault();\n if (!isNullOrUndefined(buttonObj)) {\n buttonObj.element.focus();\n }\n }\n }\n }\n var element = document.activeElement;\n var isTagName = (['input', 'textarea'].indexOf(element.tagName.toLowerCase()) > -1);\n var isContentEdit = false;\n if (!isTagName) {\n isContentEdit = element.hasAttribute('contenteditable') && element.getAttribute('contenteditable') === 'true';\n }\n if (event.keyCode === 27 && this.closeOnEscape) {\n this.dlgClosedBy = DLG_ESCAPE_CLOSED;\n var query = document.querySelector('.e-popup-open:not(.e-dialog)');\n // 'document.querySelector' is used to find the elements rendered based on body\n if (!(!isNullOrUndefined(query) && !query.classList.contains('e-toolbar-pop'))) {\n this.hide(event);\n }\n }\n if ((event.keyCode === 13 && !event.ctrlKey && element.tagName.toLowerCase() !== 'textarea' &&\n isTagName && !isNullOrUndefined(this.primaryButtonEle)) ||\n (event.keyCode === 13 && event.ctrlKey && (element.tagName.toLowerCase() === 'textarea' ||\n isContentEdit)) && !isNullOrUndefined(this.primaryButtonEle)) {\n var buttonIndex_1;\n var firstPrimary = this.buttons.some(function (data, index) {\n buttonIndex_1 = index;\n // eslint-disable-next-line\n var buttonModel = data.buttonModel;\n return !isNullOrUndefined(buttonModel) && buttonModel.isPrimary === true;\n });\n if (firstPrimary && typeof (this.buttons[buttonIndex_1].click) === 'function') {\n setTimeout(function () {\n _this.buttons[buttonIndex_1].click.call(_this, event);\n });\n }\n }\n };\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.initialize = function () {\n if (!isNullOrUndefined(this.target)) {\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n }\n if (!this.isBlazorServerRender()) {\n addClass([this.element], ROOT);\n }\n if (Browser.isDevice) {\n addClass([this.element], DEVICE);\n }\n if (!this.isBlazorServerRender()) {\n this.setCSSClass();\n }\n this.setMaxHeight();\n };\n /**\n * Initialize the rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.initRender = function () {\n var _this = this;\n this.initialRender = true;\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { role: 'dialog' });\n }\n if (this.zIndex === 1000) {\n this.setzIndex(this.element, false);\n this.calculatezIndex = true;\n }\n else {\n this.calculatezIndex = false;\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.element.getElementsByClassName('e-dlg-header-content')[0];\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.contentEle)) {\n this.contentEle = this.element.querySelector('#' + this.element.id + '_dialog-content');\n }\n if (!this.isBlazorServerRender()) {\n this.setTargetContent();\n if (this.header !== '' && !isNullOrUndefined(this.header)) {\n this.setHeader();\n }\n this.renderCloseIcon();\n this.setContent();\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setFooterTemplate();\n }\n else if (!isNullOrUndefined(this.buttons[0].buttonModel)) {\n this.setButton();\n }\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n this.setButton();\n }\n }\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { 'aria-modal': (this.isModal ? 'true' : 'false') });\n if (this.isModal) {\n this.setIsModal();\n }\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.dlgContainer)) {\n this.dlgContainer = this.element.parentElement;\n for (var i = 0, childNodes = this.dlgContainer.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains('e-dlg-overlay')) {\n this.dlgOverlay = childNodes[i];\n }\n }\n }\n if (this.element.classList.contains(DLG_UTIL_ALERT) !== true && this.element.classList.contains(DLG_UTIL_CONFIRM) !== true\n && !isNullOrUndefined(this.element.parentElement)) {\n var parentEle = this.isModal ? this.dlgContainer.parentElement : this.element.parentElement;\n this.refElement = this.createElement('div', { className: DLG_REF_ELEMENT });\n parentEle.insertBefore(this.refElement, (this.isModal ? this.dlgContainer : this.element));\n }\n if (!isNullOrUndefined(this.targetEle)) {\n // eslint-disable-next-line\n this.isModal ? this.targetEle.appendChild(this.dlgContainer) : this.targetEle.appendChild(this.element);\n }\n this.popupObj = new Popup(this.element, {\n height: this.height,\n width: this.width,\n zIndex: this.zIndex,\n relateTo: this.target,\n actionOnScroll: 'none',\n enableRtl: this.enableRtl,\n // eslint-disable-next-line\n open: function (event) {\n var eventArgs = {\n container: _this.isModal ? _this.dlgContainer : _this.element,\n element: _this.element,\n target: _this.target,\n preventFocus: false\n };\n if (_this.enableResize) {\n _this.resetResizeIcon();\n }\n _this.trigger('open', eventArgs, function (openEventArgs) {\n if (!openEventArgs.preventFocus) {\n _this.focusContent();\n }\n });\n },\n // eslint-disable-next-line\n close: function (event) {\n if (_this.isModal) {\n addClass([_this.dlgOverlay], 'e-fade');\n }\n _this.unBindEvent(_this.element);\n if (_this.isModal) {\n _this.dlgContainer.style.display = 'none';\n }\n _this.trigger('close', _this.closeArgs);\n var activeEle = document.activeElement;\n if (!isNullOrUndefined(activeEle) && !isNullOrUndefined((activeEle).blur)) {\n activeEle.blur();\n }\n if (!isNullOrUndefined(_this.storeActiveElement) && !isNullOrUndefined(_this.storeActiveElement.focus)) {\n _this.storeActiveElement.focus();\n }\n }\n });\n this.positionChange();\n this.setEnableRTL();\n if (!this.isBlazorServerRender()) {\n addClass([this.element], DLG_HIDE);\n if (this.isModal) {\n this.setOverlayZindex();\n }\n }\n if (this.visible) {\n this.show();\n if (this.isModal) {\n var targetType = this.getTargetContainer(this.target);\n if (targetType instanceof Element) {\n var computedStyle = window.getComputedStyle(targetType);\n if (computedStyle.getPropertyValue('direction') === 'rtl') {\n this.setPopupPosition();\n }\n }\n }\n }\n else {\n if (this.isModal) {\n this.dlgOverlay.style.display = 'none';\n }\n }\n this.initialRender = false;\n };\n Dialog.prototype.getTargetContainer = function (targetValue) {\n var targetElement = null;\n if (typeof targetValue === 'string') {\n if (targetValue.startsWith('#')) {\n targetElement = document.getElementById(targetValue.substring(1));\n }\n else if (targetValue.startsWith('.')) {\n var elements = document.getElementsByClassName(targetValue.substring(1));\n targetElement = elements.length > 0 ? elements[0] : null;\n }\n else {\n if (!(targetValue instanceof HTMLElement) && targetValue !== document.body) {\n targetElement = document.querySelector(targetValue);\n }\n }\n }\n else if (targetValue instanceof HTMLElement) {\n targetElement = targetValue;\n }\n return targetElement;\n };\n Dialog.prototype.resetResizeIcon = function () {\n var dialogConHeight = this.getMinHeight();\n if (this.targetEle.offsetHeight < dialogConHeight) {\n var className = this.enableRtl ? 'e-south-west' : 'e-south-east';\n var resizeIcon = this.element.querySelector('.' + className);\n if (!isNullOrUndefined(resizeIcon)) {\n resizeIcon.style.bottom = '-' + dialogConHeight.toString() + 'px';\n }\n }\n };\n Dialog.prototype.setOverlayZindex = function (zIndexValue) {\n var zIndex;\n if (isNullOrUndefined(zIndexValue)) {\n zIndex = parseInt(this.element.style.zIndex, 10) ? parseInt(this.element.style.zIndex, 10) : this.zIndex;\n }\n else {\n zIndex = zIndexValue;\n }\n this.dlgOverlay.style.zIndex = (zIndex - 1).toString();\n this.dlgContainer.style.zIndex = zIndex.toString();\n };\n Dialog.prototype.positionChange = function () {\n if (this.isModal) {\n if (!isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y))) {\n this.setPopupPosition();\n }\n else if ((!isNaN(parseFloat(this.position.X)) && isNaN(parseFloat(this.position.Y)))\n || (isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y)))) {\n this.setPopupPosition();\n }\n else {\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n this.dlgContainer.classList.add('e-dlg-' + this.position.X + '-' + this.position.Y);\n }\n }\n else {\n this.setPopupPosition();\n }\n };\n Dialog.prototype.setPopupPosition = function () {\n this.popupObj.setProperties({\n position: {\n X: this.position.X, Y: this.position.Y\n }\n });\n };\n Dialog.prototype.setAllowDragging = function () {\n var _this = this;\n var handleContent = '.' + DLG_HEADER_CONTENT;\n if (!this.element.classList.contains(DLG_DRAG)) {\n this.dragObj = new Draggable(this.element, {\n clone: false,\n isDragScroll: true,\n abort: '.e-dlg-closeicon-btn',\n handle: handleContent,\n dragStart: function (event) {\n _this.trigger('dragStart', event, function (dragEventArgs) {\n if (isBlazor()) {\n dragEventArgs.bindEvents(event.dragElement);\n }\n });\n },\n dragStop: function (event) {\n if (_this.isModal) {\n if (!isNullOrUndefined(_this.position)) {\n _this.dlgContainer.classList.remove('e-dlg-' + _this.position.X + '-' + _this.position.Y);\n }\n // Reset the dialog position after drag completion.\n var targetType = _this.getTargetContainer(_this.target);\n if (targetType instanceof Element) {\n var computedStyle = window.getComputedStyle(targetType);\n if (computedStyle.getPropertyValue('direction') === 'rtl') {\n _this.element.style.position = 'absolute';\n }\n else {\n _this.element.style.position = 'relative';\n }\n }\n else {\n _this.element.style.position = 'relative';\n }\n }\n _this.trigger('dragStop', event);\n _this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n _this.updatePersistData();\n },\n drag: function (event) {\n _this.trigger('drag', event);\n }\n });\n if (!isNullOrUndefined(this.targetEle)) {\n this.dragObj.dragArea = this.targetEle;\n }\n }\n };\n Dialog.prototype.setButton = function () {\n if (!this.isBlazorServerRender()) {\n this.buttonContent = [];\n this.btnObj = [];\n // eslint-disable-next-line\n var primaryBtnFlag = true;\n for (var i = 0; i < this.buttons.length; i++) {\n var buttonType = !isNullOrUndefined(this.buttons[i].type) ? this.buttons[i].type.toLowerCase() : 'button';\n var btn = this.createElement('button', { className: this.cssClass, attrs: { type: buttonType } });\n this.buttonContent.push(btn.outerHTML);\n }\n this.setFooterTemplate();\n }\n var footerBtn;\n for (var i = 0, childNodes = this.element.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(DLG_FOOTER_CONTENT)) {\n footerBtn = childNodes[i].querySelectorAll('button');\n }\n }\n for (var i = 0; i < this.buttons.length; i++) {\n if (!this.isBlazorServerRender()) {\n this.btnObj[i] = new Button(this.buttons[i].buttonModel);\n }\n if (this.isBlazorServerRender()) {\n this.ftrTemplateContent = this.element.querySelector('.' + DLG_FOOTER_CONTENT);\n }\n if (!isNullOrUndefined(this.ftrTemplateContent) && footerBtn.length > 0) {\n if (typeof (this.buttons[i].click) === 'function') {\n EventHandler.add(footerBtn[i], 'click', this.buttons[i].click, this);\n }\n if (typeof (this.buttons[i].click) === 'object') {\n EventHandler.add(footerBtn[i], 'click', this.buttonClickHandler.bind(this, i), this);\n }\n }\n if (!this.isBlazorServerRender() && !isNullOrUndefined(this.ftrTemplateContent)) {\n this.btnObj[i].appendTo(this.ftrTemplateContent.children[i]);\n if (this.buttons[i].isFlat) {\n this.btnObj[i].element.classList.add('e-flat');\n }\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n }\n };\n Dialog.prototype.buttonClickHandler = function (index) {\n this.trigger('buttons[' + index + '].click', {});\n };\n Dialog.prototype.setContent = function () {\n this.contentEle = this.createElement('div', { className: DLG_CONTENT, id: this.element.id + '_dialog-content' });\n if (this.headerEle) {\n attributes(this.element, { 'aria-describedby': this.element.id + '_title' + ' ' + this.element.id + '_dialog-content' });\n }\n else {\n attributes(this.element, { 'aria-describedby': this.element.id + '_dialog-content' });\n }\n if (this.innerContentElement) {\n this.contentEle.appendChild(this.innerContentElement);\n }\n else if (!isNullOrUndefined(this.content) && this.content !== '' || !this.initialRender) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (typeof (this.content) === 'string' && !isBlazor()) {\n this.setTemplate(this.content, this.contentEle, 'content');\n }\n else if (this.content instanceof HTMLElement) {\n this.contentEle.appendChild(this.content);\n }\n else {\n this.setTemplate(this.content, this.contentEle, 'content');\n }\n }\n if (!isNullOrUndefined(this.headerContent)) {\n this.element.insertBefore(this.contentEle, this.element.children[1]);\n }\n else {\n this.element.insertBefore(this.contentEle, this.element.children[0]);\n }\n if (this.height === 'auto') {\n if (!this.isBlazorServerRender() && Browser.isIE && this.element.style.width === '' && !isNullOrUndefined(this.width)) {\n this.element.style.width = formatUnit(this.width);\n }\n this.setMaxHeight();\n }\n };\n Dialog.prototype.setTemplate = function (template, toElement, prop) {\n var templateFn;\n var templateProps;\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (toElement.classList.contains(DLG_HEADER)) {\n templateProps = this.element.id + 'header';\n }\n else if (toElement.classList.contains(DLG_FOOTER_CONTENT)) {\n templateProps = this.element.id + 'footerTemplate';\n }\n else {\n templateProps = this.element.id + 'content';\n }\n var templateValue;\n if (!isNullOrUndefined(template.outerHTML)) {\n toElement.appendChild(template);\n }\n else if ((typeof template === 'string') || (typeof template !== 'string') || (isBlazor() && !this.isStringTemplate)) {\n if ((typeof template === 'string')) {\n template = this.sanitizeHelper(template);\n }\n if (this.isVue || typeof template !== 'string') {\n templateFn = compile(template);\n templateValue = template;\n }\n else {\n toElement.innerHTML = template;\n }\n }\n var fromElements = [];\n if (!isNullOrUndefined(templateFn)) {\n var isString = (isBlazor() &&\n !this.isStringTemplate && (templateValue).indexOf('
    Blazor') === 0) ?\n this.isStringTemplate : true;\n for (var _i = 0, _a = templateFn({}, this, prop, templateProps, isString); _i < _a.length; _i++) {\n var item = _a[_i];\n fromElements.push(item);\n }\n append([].slice.call(fromElements), toElement);\n }\n };\n /*\n * @returns {void}\n * @hidden\n * @value\n */\n Dialog.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var dialogItem = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(dialogItem, dialogItem, beforeEvent);\n this.trigger('beforeSanitizeHtml', dialogItem);\n if (dialogItem.cancel && !isNullOrUndefined(dialogItem.helper)) {\n value = dialogItem.helper(value);\n }\n else if (!dialogItem.cancel) {\n value = SanitizeHtmlHelper.serializeValue(dialogItem, value);\n }\n }\n return value;\n };\n Dialog.prototype.setMaxHeight = function () {\n if (!this.allowMaxHeight) {\n return;\n }\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) && (this.targetEle.offsetHeight < window.innerHeight) ?\n (this.targetEle.offsetHeight - 20) + 'px' : (window.innerHeight - 20) + 'px';\n this.element.style.display = display;\n if (Browser.isIE && this.height === 'auto' && !isNullOrUndefined(this.contentEle)\n && this.element.offsetHeight < this.contentEle.offsetHeight) {\n this.element.style.height = 'inherit';\n }\n };\n Dialog.prototype.setEnableRTL = function () {\n if (!this.isBlazorServerRender()) {\n // eslint-disable-next-line\n this.enableRtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\n }\n if (!isNullOrUndefined(this.element.querySelector('.e-resize-handle'))) {\n removeResize();\n this.setResize();\n }\n };\n Dialog.prototype.setTargetContent = function () {\n var _this = this;\n if (isNullOrUndefined(this.content) || this.content === '') {\n var isContent = this.element.innerHTML.replace(/\\s|<(\\/?|\\/?)(!--!--)>/g, '') !== '';\n if (this.element.children.length > 0 || isContent) {\n this.innerContentElement = document.createDocumentFragment();\n [].slice.call(this.element.childNodes).forEach(function (el) {\n if (el.nodeType !== 8) {\n _this.innerContentElement.appendChild(el);\n }\n });\n }\n }\n };\n Dialog.prototype.setHeader = function () {\n if (this.headerEle) {\n this.headerEle.innerHTML = '';\n }\n else {\n this.headerEle = this.createElement('div', { id: this.element.id + '_title', className: DLG_HEADER });\n }\n this.createHeaderContent();\n this.headerContent.appendChild(this.headerEle);\n this.setTemplate(this.header, this.headerEle, 'header');\n attributes(this.element, { 'aria-describedby': this.element.id + '_title' });\n attributes(this.element, { 'aria-label': \"dialog\" });\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n };\n Dialog.prototype.setFooterTemplate = function () {\n if (this.ftrTemplateContent) {\n this.ftrTemplateContent.innerHTML = '';\n }\n else {\n this.ftrTemplateContent = this.createElement('div', {\n className: DLG_FOOTER_CONTENT\n });\n }\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setTemplate(this.footerTemplate, this.ftrTemplateContent, 'footerTemplate');\n }\n else {\n this.ftrTemplateContent.innerHTML = this.buttonContent.join('');\n }\n this.element.appendChild(this.ftrTemplateContent);\n };\n Dialog.prototype.createHeaderContent = function () {\n if (isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.createElement('div', { id: this.element.id + '_dialog-header', className: DLG_HEADER_CONTENT });\n }\n };\n Dialog.prototype.renderCloseIcon = function () {\n if (this.showCloseIcon) {\n this.closeIcon = this.createElement('button', { className: DLG_CLOSE_ICON_BTN, attrs: { type: 'button' } });\n this.closeIconBtnObj = new Button({ cssClass: 'e-flat', iconCss: DLG_CLOSE_ICON + ' ' + ICON });\n this.closeIconTitle();\n if (!isNullOrUndefined(this.headerContent)) {\n prepend([this.closeIcon], this.headerContent);\n }\n else {\n this.createHeaderContent();\n prepend([this.closeIcon], this.headerContent);\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n }\n this.closeIconBtnObj.appendTo(this.closeIcon);\n }\n };\n Dialog.prototype.closeIconTitle = function () {\n this.l10n.setLocale(this.locale);\n var closeIconTitle = this.l10n.getConstant('close');\n this.closeIcon.setAttribute('title', closeIconTitle);\n this.closeIcon.setAttribute('aria-label', closeIconTitle);\n };\n Dialog.prototype.setCSSClass = function (oldCSSClass) {\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n if (this.isModal && !isNullOrUndefined(this.dlgContainer)) {\n removeClass([this.dlgContainer], oldCSSClass.split(' '));\n }\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n if (this.isModal && !isNullOrUndefined(this.dlgContainer)) {\n addClass([this.dlgContainer], this.cssClass.split(' '));\n }\n }\n };\n Dialog.prototype.setIsModal = function () {\n this.dlgContainer = this.createElement('div', { className: DLG_CONTAINER });\n this.setCSSClass();\n this.element.classList.remove(DLG_SHOW);\n this.element.parentNode.insertBefore(this.dlgContainer, this.element);\n this.dlgContainer.appendChild(this.element);\n addClass([this.element], MODAL_DLG);\n this.dlgOverlay = this.createElement('div', { className: DLG_OVERLAY });\n this.dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.dlgContainer.appendChild(this.dlgOverlay);\n };\n Dialog.prototype.getValidFocusNode = function (items) {\n var node;\n for (var u = 0; u < items.length; u++) {\n node = items[u];\n if ((node.clientHeight > 0 || (node.tagName.toLowerCase() === 'a' && node.hasAttribute('href'))) && node.tabIndex > -1 &&\n !node.disabled && !this.disableElement(node, '[disabled],[aria-disabled=\"true\"],[type=\"hidden\"]')) {\n return node;\n }\n else {\n node = null;\n }\n }\n return node;\n };\n Dialog.prototype.focusableElements = function (content) {\n if (!isNullOrUndefined(content)) {\n var value = 'input,select,textarea,button,a,[contenteditable=\"true\"],[tabindex]';\n var items = content.querySelectorAll(value);\n return this.getValidFocusNode(items);\n }\n return null;\n };\n Dialog.prototype.getAutoFocusNode = function (container) {\n var node = container.querySelector('.' + DLG_CLOSE_ICON_BTN);\n var value = '[autofocus]';\n var items = container.querySelectorAll(value);\n var validNode = this.getValidFocusNode(items);\n if (isBlazor()) {\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n if (!isNullOrUndefined(validNode)) {\n node = validNode;\n }\n else {\n validNode = this.focusableElements(this.contentEle);\n if (!isNullOrUndefined(validNode)) {\n return node = validNode;\n }\n else if (!isNullOrUndefined(this.primaryButtonEle)) {\n return this.element.querySelector('.' + DLG_PRIMARY_BUTTON);\n }\n }\n return node;\n };\n Dialog.prototype.disableElement = function (element, t) {\n var elementMatch = element ? element.matches || element.webkitMatchesSelector || element.msGetRegionContent : null;\n if (elementMatch) {\n for (; element; element = element.parentNode) {\n if (element instanceof Element && elementMatch.call(element, t)) {\n /* istanbul ignore next */\n return element;\n }\n }\n }\n return null;\n };\n Dialog.prototype.focusContent = function () {\n var element = this.getAutoFocusNode(this.element);\n var node = !isNullOrUndefined(element) ? element : this.element;\n var userAgent = Browser.userAgent;\n if (userAgent.indexOf('MSIE ') > 0 || userAgent.indexOf('Trident/') > 0) {\n this.element.focus();\n }\n node.focus();\n this.unBindEvent(this.element);\n this.bindEvent(this.element);\n };\n Dialog.prototype.bindEvent = function (element) {\n EventHandler.add(element, 'keydown', this.keyDown, this);\n };\n Dialog.prototype.unBindEvent = function (element) {\n EventHandler.remove(element, 'keydown', this.keyDown);\n };\n Dialog.prototype.updateSanitizeContent = function () {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = this.sanitizeHelper(this.content);\n }\n };\n Dialog.prototype.isBlazorServerRender = function () {\n return isBlazor() && this.isServerRendered;\n };\n /**\n * Module required function\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.getModuleName = function () {\n return 'dialog';\n };\n /**\n * Called internally if any of the property value changed\n *\n * @param {DialogModel} newProp - specifies the new property\n * @param {DialogModel} oldProp - specifies the old property\n * @private\n * @returns {void}\n */\n Dialog.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (!isNullOrUndefined(this.content) && this.content !== '') {\n if (this.isBlazorServerRender()) {\n this.contentEle = this.element.querySelector('.e-dlg-content');\n }\n if (!isNullOrUndefined(this.contentEle) && this.contentEle.getAttribute('role') !== 'dialog') {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = '';\n }\n if (typeof (this.content) === 'function') {\n this.clearTemplate(['content']);\n detach(this.contentEle);\n this.contentEle = null;\n this.setContent();\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n typeof (this.content) === 'string' ? (this.isBlazorServerRender() && (this.contentEle.innerText === '')) ?\n this.contentEle.insertAdjacentHTML('beforeend', this.sanitizeHelper(this.content)) :\n this.updateSanitizeContent() : this.contentEle.appendChild(this.content);\n }\n this.setMaxHeight();\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-content'))) {\n this.setContent();\n }\n }\n }\n else if (!isNullOrUndefined(this.contentEle)) {\n detach(this.contentEle);\n this.contentEle = null;\n }\n break;\n case 'header':\n if (this.header === '' || isNullOrUndefined(this.header)) {\n if (this.headerEle) {\n detach(this.headerEle);\n this.headerEle = null;\n }\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-header-content'))) {\n this.setHeader();\n }\n }\n break;\n case 'footerTemplate':\n if (this.footerTemplate === '' || isNullOrUndefined(this.footerTemplate)) {\n if (!this.ftrTemplateContent) {\n return;\n }\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n this.buttons = [{}];\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-footer-content'))) {\n this.setFooterTemplate();\n }\n this.buttons = [{}];\n }\n break;\n case 'showCloseIcon':\n if (this.element.getElementsByClassName(DLG_CLOSE_ICON).length > 0) {\n if (!this.showCloseIcon && (this.header === '' || isNullOrUndefined(this.header))) {\n detach(this.headerContent);\n this.headerContent = null;\n }\n else if (!this.showCloseIcon) {\n detach(this.closeIcon);\n }\n else {\n if (this.isBlazorServerRender()) {\n this.wireEvents();\n }\n }\n }\n else {\n if (!this.isBlazorServerRender()) {\n this.renderCloseIcon();\n }\n this.wireEvents();\n }\n break;\n case 'locale':\n if (this.showCloseIcon) {\n this.closeIconTitle();\n }\n break;\n case 'visible':\n // eslint-disable-next-line\n this.visible ? this.show() : this.hide();\n break;\n case 'isModal':\n this.updateIsModal();\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n this.updatePersistData();\n break;\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n this.updatePersistData();\n break;\n case 'zIndex':\n this.popupObj.zIndex = this.zIndex;\n if (this.isModal) {\n this.setOverlayZindex(this.zIndex);\n }\n if (this.element.style.zIndex !== this.zIndex.toString()) {\n this.calculatezIndex = false;\n }\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'buttons': {\n var buttonCount = this.buttons.length;\n if (!isNullOrUndefined(this.ftrTemplateContent) && !this.isBlazorServerRender()) {\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n }\n for (var i = 0; i < buttonCount; i++) {\n if (!isNullOrUndefined(this.buttons[i].buttonModel)) {\n this.footerTemplate = '';\n this.setButton();\n }\n }\n break;\n }\n case 'allowDragging':\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n else {\n this.dragObj.destroy();\n }\n break;\n case 'target':\n this.setTarget(newProp.target);\n break;\n case 'position':\n this.checkPositionData();\n if (this.isModal) {\n var positionX = !isNullOrUndefined(oldProp.position) && !isNullOrUndefined(oldProp.position.X) ? oldProp.position.X : this.position.X;\n var positionY = !isNullOrUndefined(oldProp.position) && !isNullOrUndefined(oldProp.position.Y) ? oldProp.position.Y : this.position.Y;\n if (this.dlgContainer.classList.contains('e-dlg-' + positionX + '-' + positionY)) {\n this.dlgContainer.classList.remove('e-dlg-' + positionX + '-' + positionY);\n }\n }\n this.positionChange();\n this.updatePersistData();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'enableResize':\n this.setResize();\n break;\n case 'minHeight':\n if (this.minHeight !== '') {\n this.element.style.minHeight = formatUnit(this.minHeight);\n }\n break;\n }\n }\n };\n Dialog.prototype.setTarget = function (target) {\n this.popupObj.relateTo = target;\n this.target = target;\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n if (this.dragObj) {\n this.dragObj.dragArea = this.targetEle;\n }\n this.setMaxHeight();\n if (this.isModal) {\n this.updateIsModal();\n }\n if (this.enableResize) {\n this.setResize();\n }\n };\n Dialog.prototype.updateIsModal = function () {\n this.element.setAttribute('aria-modal', this.isModal ? 'true' : 'false');\n if (this.isModal) {\n if (isNullOrUndefined(this.dlgOverlay)) {\n this.setIsModal();\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n if (!isNullOrUndefined(this.targetEle)) {\n this.targetEle.appendChild(this.dlgContainer);\n }\n }\n }\n else {\n removeClass([this.element], MODAL_DLG);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n detach(this.dlgOverlay);\n while (this.dlgContainer.firstChild) {\n this.dlgContainer.parentElement.insertBefore(this.dlgContainer.firstChild, this.dlgContainer);\n }\n this.dlgContainer.parentElement.removeChild(this.dlgContainer);\n }\n if (this.visible) {\n this.show();\n }\n this.positionChange();\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n Dialog.prototype.setzIndex = function (zIndexElement, setPopupZindex) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n var currentzIndex = getZindexPartial(zIndexElement);\n this.zIndex = currentzIndex > this.zIndex ? currentzIndex : this.zIndex;\n this.isProtectedOnChange = prevOnChange;\n if (setPopupZindex) {\n this.popupObj.zIndex = this.zIndex;\n }\n };\n Dialog.prototype.windowResizeHandler = function () {\n setMaxWidth(this.targetEle.clientWidth);\n setMaxHeight(this.targetEle.clientHeight);\n this.setMaxHeight();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.getPersistData = function () {\n return this.addOnPersist(['width', 'height', 'position']);\n };\n Dialog.prototype.removeAllChildren = function (element) {\n while (element.children[0]) {\n this.removeAllChildren(element.children[0]);\n element.removeChild(element.children[0]);\n }\n };\n /**\n * To destroy the widget\n *\n * @returns {void}\n */\n Dialog.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n var classArray = [RTL, MODAL_DLG, DLG_RESIZABLE, DLG_RESTRICT_LEFT_VALUE, FULLSCREEN, DEVICE];\n var attrs = ['role', 'aria-modal', 'aria-labelledby', 'aria-describedby', 'aria-grabbed', 'tabindex', 'style'];\n removeClass([this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n if (!isNullOrUndefined(this.element) && this.element.classList.contains(FULLSCREEN)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n if (this.isModal) {\n removeClass([(!isNullOrUndefined(this.targetEle) ? this.targetEle : document.body)], SCROLL_DISABLED);\n }\n this.unWireEvents();\n if (!isNullOrUndefined(this.btnObj)) {\n for (var i = 0; i < this.btnObj.length; i++) {\n this.btnObj[i].destroy();\n }\n }\n if (!isNullOrUndefined(this.closeIconBtnObj)) {\n this.closeIconBtnObj.destroy();\n }\n if (!isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n if (!isNullOrUndefined(this.popupObj.element) && this.popupObj.element.classList.contains(POPUP_ROOT)) {\n this.popupObj.destroy();\n }\n removeClass([this.element], classArray);\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n removeClass([this.element], this.cssClass.split(' '));\n }\n if (!isNullOrUndefined(this.refElement) && !isNullOrUndefined(this.refElement.parentElement)) {\n this.refElement.parentElement.insertBefore((this.isModal ? this.dlgContainer : this.element), this.refElement);\n detach(this.refElement);\n this.refElement = undefined;\n }\n if (this.isModal && !this.isBlazorServerRender()) {\n detach(this.dlgOverlay);\n this.dlgContainer.parentNode.insertBefore(this.element, this.dlgContainer);\n detach(this.dlgContainer);\n }\n if (!this.isBlazorServerRender()) {\n this.element.innerHTML = this.clonedEle.innerHTML;\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.element.children)) {\n for (var i = 0; i <= this.element.children.length; i++) {\n i = i - i;\n detach(this.element.children[i]);\n }\n }\n }\n for (var i = 0; i < attrs.length; i++) {\n this.element.removeAttribute(attrs[i]);\n }\n this.ftrTemplateContent = null;\n this.headerContent = null;\n if (!isNullOrUndefined(this.contentEle)) {\n this.removeAllChildren(this.contentEle);\n }\n this.contentEle = null;\n if (!this.isBlazorServerRender()) {\n _super.prototype.destroy.call(this);\n }\n else {\n this.isDestroyed = true;\n }\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n };\n Dialog.prototype.wireWindowResizeEvent = function () {\n this.boundWindowResizeHandler = this.windowResizeHandler.bind(this);\n window.addEventListener('resize', this.boundWindowResizeHandler);\n };\n Dialog.prototype.unWireWindowResizeEvent = function () {\n window.removeEventListener('resize', this.boundWindowResizeHandler);\n this.boundWindowResizeHandler = null;\n };\n /**\n * Binding event to the element while widget creation\n *\n * @returns {void}\n * @hidden\n */\n Dialog.prototype.wireEvents = function () {\n if (this.isBlazorServerRender() && this.showCloseIcon) {\n this.closeIcon = this.element.getElementsByClassName('e-dlg-closeicon-btn')[0];\n }\n if (this.showCloseIcon) {\n EventHandler.add(this.closeIcon, 'click', this.closeIconClickEventHandler, this);\n }\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n /**\n * Unbinding event to the element while widget destroy\n *\n * @returns {void}\n * @hidden\n */\n Dialog.prototype.unWireEvents = function () {\n if (this.showCloseIcon) {\n EventHandler.remove(this.closeIcon, 'click', this.closeIconClickEventHandler);\n }\n if (this.isModal) {\n EventHandler.remove(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler);\n }\n if (this.buttons.length > 0 && !isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n for (var i = 0; i < this.buttons.length; i++) {\n if (typeof (this.buttons[i].click) === 'function') {\n EventHandler.remove(this.ftrTemplateContent.children[i], 'click', this.buttons[i].click);\n }\n }\n }\n };\n /**\n * Refreshes the dialog's position when the user changes its header and footer height/width dynamically.\n *\n * @returns {void}\n */\n Dialog.prototype.refreshPosition = function () {\n this.popupObj.refreshPosition();\n if (this.element.classList.contains(MODAL_DLG)) {\n this.positionChange();\n }\n };\n /**\n * Returns the current width and height of the Dialog\n *\n * @returns {DialogDimension}- returns the dialog element Dimension.\n * @public\n */\n Dialog.prototype.getDimension = function () {\n var dialogWidth = this.element.offsetWidth;\n var dialogHeight = this.element.offsetHeight;\n return { width: dialogWidth, height: dialogHeight };\n };\n /**\n * Opens the dialog if it is in hidden state.\n * To open the dialog with full screen width, set the parameter to true.\n *\n * @param { boolean } isFullScreen - Enable the fullScreen Dialog.\n * @returns {void}\n */\n Dialog.prototype.show = function (isFullScreen) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (!this.element.classList.contains(DLG_SHOW) || (!isNullOrUndefined(isFullScreen))) {\n if (!isNullOrUndefined(isFullScreen)) {\n this.fullScreen(isFullScreen);\n }\n var eventArgs_1 = isBlazor() ? {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n maxHeight: this.element.style.maxHeight\n } : {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n target: this.target,\n maxHeight: this.element.style.maxHeight\n };\n this.trigger('beforeOpen', eventArgs_1, function (beforeOpenArgs) {\n if (!beforeOpenArgs.cancel) {\n if (_this.element.style.maxHeight !== eventArgs_1.maxHeight) {\n _this.allowMaxHeight = false;\n _this.element.style.maxHeight = eventArgs_1.maxHeight;\n }\n if (_this.enableResize && _this.boundWindowResizeHandler == null && !_this.initialRender) {\n _this.wireWindowResizeEvent();\n }\n _this.storeActiveElement = document.activeElement;\n _this.element.tabIndex = -1;\n if (_this.isModal && (!isNullOrUndefined(_this.dlgOverlay))) {\n _this.dlgOverlay.style.display = 'block';\n _this.dlgContainer.style.display = 'flex';\n removeClass([_this.dlgOverlay], 'e-fade');\n if (!isNullOrUndefined(_this.targetEle)) {\n if (_this.targetEle === document.body) {\n _this.dlgContainer.style.position = 'fixed';\n }\n else {\n _this.dlgContainer.style.position = 'absolute';\n }\n _this.dlgOverlay.style.position = 'absolute';\n var targetType = _this.getTargetContainer(_this.target);\n if (targetType instanceof Element) {\n var computedStyle = window.getComputedStyle(targetType);\n if (computedStyle.getPropertyValue('direction') === 'rtl') {\n _this.element.style.position = 'absolute';\n }\n else {\n _this.element.style.position = 'relative';\n }\n }\n else {\n _this.element.style.position = 'relative';\n }\n addClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n else {\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n var openAnimation = {\n name: (_this.animationSettings.effect === 'None' && animationMode === 'Enable') ? 'Zoom' + 'In' : _this.animationSettings.effect + 'In',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n var zIndexElement = (_this.isModal) ? _this.element.parentElement : _this.element;\n if (_this.calculatezIndex) {\n _this.setzIndex(zIndexElement, true);\n setStyleAttribute(_this.element, { 'zIndex': _this.zIndex });\n if (_this.isModal) {\n _this.setOverlayZindex(_this.zIndex);\n }\n }\n // eslint-disable-next-line\n (_this.animationSettings.effect === 'None' && animationMode === 'Enable') ? _this.popupObj.show(openAnimation) : ((_this.animationSettings.effect === 'None') ? _this.popupObj.show() : _this.popupObj.show(openAnimation));\n _this.dialogOpen = true;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = true;\n _this.preventVisibility = true;\n _this.isProtectedOnChange = prevOnChange;\n }\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Closes the dialog if it is in visible state.\n *\n * @param { Event } event - specifies the event\n * @returns {void}\n */\n Dialog.prototype.hide = function (event) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (this.preventVisibility) {\n var eventArgs = isBlazor() ? {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event\n } : {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n target: this.target,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event,\n closedBy: this.dlgClosedBy\n };\n this.closeArgs = eventArgs;\n this.trigger('beforeClose', eventArgs, function (beforeCloseArgs) {\n if (!beforeCloseArgs.cancel) {\n if (_this.isModal) {\n if (!isNullOrUndefined(_this.targetEle)) {\n removeClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n if (_this.enableResize) {\n _this.unWireWindowResizeEvent();\n }\n if (document.body.classList.contains(DLG_TARGET) &&\n document.body.classList.contains(SCROLL_DISABLED)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n var closeAnimation = {\n name: (_this.animationSettings.effect === 'None' && animationMode === 'Enable') ? 'Zoom' + 'Out' : _this.animationSettings.effect + 'Out',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n // eslint-disable-next-line\n (_this.animationSettings.effect === 'None' && animationMode === 'Enable') ? _this.popupObj.hide(closeAnimation) : ((_this.animationSettings.effect === 'None') ? _this.popupObj.hide() : _this.popupObj.hide(closeAnimation));\n _this.dialogOpen = false;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = false;\n _this.preventVisibility = false;\n _this.isProtectedOnChange = prevOnChange;\n }\n _this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n });\n }\n };\n // eslint-disable-next-line\n /**\n * Specifies to view the Full screen Dialog.\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.fullScreen = function (args) {\n /* eslint-disable */\n var top = this.element.offsetTop;\n var left = this.element.offsetLeft;\n /* eslint-enable */\n if (args) {\n if (!this.isModal) {\n this.element.style.top = document.scrollingElement.scrollTop + 'px';\n }\n addClass([this.element], FULLSCREEN);\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) ?\n (this.targetEle.offsetHeight) + 'px' : (window.innerHeight) + 'px';\n this.element.style.display = display;\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && !isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n }\n else {\n removeClass([this.element], FULLSCREEN);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n }\n return args;\n };\n /**\n * Returns the dialog button instances.\n * Based on that, you can dynamically change the button states.\n *\n * @param { number } index - Index of the button.\n * @returns {Button} - returns the button element\n */\n Dialog.prototype.getButtons = function (index) {\n if (!isNullOrUndefined(index)) {\n return this.btnObj[index];\n }\n return this.btnObj;\n };\n __decorate([\n Property('')\n ], Dialog.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"showCloseIcon\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"isModal\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"header\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"enableResize\", void 0);\n __decorate([\n Property(['South-East'])\n ], Dialog.prototype, \"resizeHandles\", void 0);\n __decorate([\n Property('auto')\n ], Dialog.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"minHeight\", void 0);\n __decorate([\n Property('100%')\n ], Dialog.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"cssClass\", void 0);\n __decorate([\n Property(1000)\n ], Dialog.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], Dialog.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"allowDragging\", void 0);\n __decorate([\n Collection([{}], ButtonProps)\n ], Dialog.prototype, \"buttons\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"closeOnEscape\", void 0);\n __decorate([\n Complex({}, AnimationSettings)\n ], Dialog.prototype, \"animationSettings\", void 0);\n __decorate([\n Complex({ X: 'center', Y: 'center' }, PositionData)\n ], Dialog.prototype, \"position\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"overlayClick\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"destroyed\", void 0);\n Dialog = __decorate([\n NotifyPropertyChanges\n ], Dialog);\n return Dialog;\n}(Component));\nexport { Dialog };\n/**\n * Base for creating Alert and Confirmation Dialog through util method.\n */\n// eslint-disable-next-line\nexport var DialogUtility;\n(function (DialogUtility) {\n /**\n * An alert dialog box is used to display warning like messages to the users.\n * ```\n * Eg : DialogUtility.alert('Alert message');\n *\n * ```\n */\n /* istanbul ignore next */\n /**\n *\n * @param {AlertDialogArgs} args - specifies the string\n * @returns {Dialog} - returns the dialog element.\n */\n function alert(args) {\n // eslint-disable-next-line\n var dialogComponent;\n var dialogElement = createElement('div', { 'className': DLG_UTIL_ALERT });\n document.body.appendChild(dialogElement);\n var alertDialogObj;\n var okButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n alertDialogObj = createDialog({ content: args,\n position: { X: 'center', Y: 'top' },\n isModal: true, header: DLG_UTIL_DEFAULT_TITLE,\n buttons: okButtonModel }, dialogElement);\n }\n else {\n alertDialogObj = createDialog(alertOptions(args), dialogElement);\n }\n alertDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(alertDialogObj);\n }\n alertDialogObj.destroy();\n if (alertDialogObj.element.classList.contains('e-dlg-modal')) {\n alertDialogObj.element.parentElement.remove();\n alertDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n alertDialogObj.element.remove();\n }\n };\n return alertDialogObj;\n }\n DialogUtility.alert = alert;\n /**\n * A confirm dialog displays a specified message along with ‘OK’ and ‘Cancel’ button.\n * ```\n * Eg : DialogUtility.confirm('Confirm dialog message');\n *\n * ```\n */\n /* istanbul ignore next */\n /**\n *\n * @param {ConfirmDialogArgs} args - specifies the args\n * @returns {Dialog} - returns te element\n */\n function confirm(args) {\n // eslint-disable-next-line\n var dialogComponent;\n var dialogElement = createElement('div', { 'className': DLG_UTIL_CONFIRM });\n document.body.appendChild(dialogElement);\n var confirmDialogObj;\n var okCancelButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }, {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n confirmDialogObj = createDialog({ position: { X: 'center', Y: 'top' }, content: args, isModal: true,\n header: DLG_UTIL_DEFAULT_TITLE, buttons: okCancelButtonModel\n }, dialogElement);\n }\n else {\n confirmDialogObj = createDialog(confirmOptions(args), dialogElement);\n }\n confirmDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(confirmDialogObj);\n }\n confirmDialogObj.destroy();\n if (confirmDialogObj.element.classList.contains('e-dlg-modal')) {\n confirmDialogObj.element.parentElement.remove();\n confirmDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n confirmDialogObj.element.remove();\n }\n };\n return confirmDialogObj;\n }\n DialogUtility.confirm = confirm;\n // eslint-disable-next-line\n function createDialog(options, element) {\n var dialogObject = new Dialog(options);\n dialogObject.appendTo(element);\n return dialogObject;\n }\n // eslint-disable-next-line\n function alertOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setAlertButtonModel(options, option);\n return options;\n }\n // eslint-disable-next-line\n function confirmOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setConfirmButtonModel(options, option);\n return options;\n }\n // eslint-disable-next-line\n function formOptions(options, option) {\n options.header = !isNullOrUndefined(option.title) ? option.title : null;\n options.content = !isNullOrUndefined(option.content) ? option.content : '';\n options.isModal = !isNullOrUndefined(option.isModal) ? option.isModal : true;\n options.showCloseIcon = !isNullOrUndefined(option.showCloseIcon) ? option.showCloseIcon : false;\n options.allowDragging = !isNullOrUndefined(option.isDraggable) ? option.isDraggable : false;\n options.closeOnEscape = !isNullOrUndefined(option.closeOnEscape) ? option.closeOnEscape : false;\n options.position = !isNullOrUndefined(option.position) ? option.position : { X: 'center', Y: 'top' };\n options.animationSettings = !isNullOrUndefined(option.animationSettings) ? option.animationSettings :\n { effect: 'Fade', duration: 400, delay: 0 };\n options.cssClass = !isNullOrUndefined(option.cssClass) ? option.cssClass : '';\n options.zIndex = !isNullOrUndefined(option.zIndex) ? option.zIndex : 1000;\n options.open = !isNullOrUndefined(option.open) ? option.open : null;\n options.width = !isNullOrUndefined(option.width) ? option.width : 'auto';\n options.height = !isNullOrUndefined(option.height) ? option.height : 'auto';\n return options;\n }\n // eslint-disable-next-line\n function setAlertButtonModel(options, option) {\n var alertButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, alertButtonModel[0]);\n }\n else {\n options.buttons = alertButtonModel;\n }\n return options;\n }\n // eslint-disable-next-line\n function setConfirmButtonModel(options, option) {\n var okButtonModel = {\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n };\n var cancelButtonModel = {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n };\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, okButtonModel);\n }\n else {\n options.buttons[0] = okButtonModel;\n }\n if (!isNullOrUndefined(option.cancelButton)) {\n options.buttons[1] = formButtonModel(options.buttons[1], option.cancelButton, cancelButtonModel);\n }\n else {\n options.buttons[1] = cancelButtonModel;\n }\n return options;\n }\n // eslint-disable-next-line\n function formButtonModel(buttonModel, option, buttonPropModel) {\n var buttonProps = buttonPropModel;\n if (!isNullOrUndefined(option.text)) {\n buttonProps.buttonModel.content = option.text;\n }\n if (!isNullOrUndefined(option.icon)) {\n buttonProps.buttonModel.iconCss = option.icon;\n }\n if (!isNullOrUndefined(option.cssClass)) {\n buttonProps.buttonModel.cssClass = option.cssClass;\n }\n if (!isNullOrUndefined(option.click)) {\n buttonProps.click = option.click;\n }\n if (!isNullOrUndefined(option.isFlat)) {\n buttonProps.isFlat = option.isFlat;\n }\n return buttonProps;\n }\n})(DialogUtility || (DialogUtility = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { setStyleAttribute, addClass, removeClass, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { calculatePosition, calculateRelativeBasedPosition } from '../common/position';\nimport { Animation, Property, Event, Component } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { flip, fit, isCollide, destroy as collisionDestroy } from '../common/collision';\n/**\n * Specifies the offset position values.\n */\nvar PositionData = /** @class */ (function (_super) {\n __extends(PositionData, _super);\n function PositionData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('left')\n ], PositionData.prototype, \"X\", void 0);\n __decorate([\n Property('top')\n ], PositionData.prototype, \"Y\", void 0);\n return PositionData;\n}(ChildProperty));\nexport { PositionData };\n// don't use space in classNames\nvar CLASSNAMES = {\n ROOT: 'e-popup',\n RTL: 'e-rtl',\n OPEN: 'e-popup-open',\n CLOSE: 'e-popup-close'\n};\n/**\n * Represents the Popup Component\n * ```html\n *
    \n *
    Popup Content
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar Popup = /** @class */ (function (_super) {\n __extends(Popup, _super);\n function Popup(element, options) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Called internally if any of the property value changed.\n *\n * @param {PopupModel} newProp - specifies the new property\n * @param {PopupModel} oldProp - specifies the old property\n * @private\n * @returns {void}\n */\n Popup.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'zIndex':\n setStyleAttribute(this.element, { 'zIndex': newProp.zIndex });\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'position':\n case 'relateTo':\n this.refreshPosition();\n break;\n case 'offsetX':\n // eslint-disable-next-line\n var x = newProp.offsetX - oldProp.offsetX;\n this.element.style.left = (parseInt(this.element.style.left, 10) + (x)).toString() + 'px';\n break;\n case 'offsetY':\n // eslint-disable-next-line\n var y = newProp.offsetY - oldProp.offsetY;\n this.element.style.top = (parseInt(this.element.style.top, 10) + (y)).toString() + 'px';\n break;\n case 'content':\n this.setContent();\n break;\n case 'actionOnScroll':\n if (newProp.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n else {\n this.unwireScrollEvents();\n }\n break;\n }\n }\n };\n /**\n * gets the Component module name.\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.getModuleName = function () {\n return 'popup';\n };\n /**\n * To resolve if any collision occurs.\n *\n * @returns {void}\n */\n Popup.prototype.resolveCollision = function () {\n this.checkCollision();\n };\n /**\n * gets the persisted state properties of the Component.\n *\n * @returns {void}\n */\n Popup.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To destroy the control.\n *\n * @returns {void}\n */\n Popup.prototype.destroy = function () {\n if (this.element.classList.contains('e-popup-open')) {\n this.unwireEvents();\n }\n this.element.classList.remove(CLASSNAMES.ROOT, CLASSNAMES.RTL, CLASSNAMES.OPEN, CLASSNAMES.CLOSE);\n this.content = null;\n this.relateTo = null;\n collisionDestroy();\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.render = function () {\n this.element.classList.add(CLASSNAMES.ROOT);\n var styles = {};\n if (this.zIndex !== 1000) {\n styles.zIndex = this.zIndex;\n }\n if (this.width !== 'auto') {\n styles.width = formatUnit(this.width);\n }\n if (this.height !== 'auto') {\n styles.height = formatUnit(this.height);\n }\n setStyleAttribute(this.element, styles);\n this.fixedParent = false;\n this.setEnableRtl();\n this.setContent();\n };\n Popup.prototype.wireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.add(window, 'orientationchange', this.orientationOnChange, this);\n }\n if (this.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n };\n Popup.prototype.wireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollRefresh, this);\n }\n }\n };\n Popup.prototype.unwireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.remove(window, 'orientationchange', this.orientationOnChange);\n }\n if (this.actionOnScroll !== 'none') {\n this.unwireScrollEvents();\n }\n };\n Popup.prototype.unwireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollRefresh);\n }\n }\n };\n Popup.prototype.getRelateToElement = function () {\n var relateToElement = this.relateTo === '' || isNullOrUndefined(this.relateTo) ?\n document.body : this.relateTo;\n this.setProperties({ relateTo: relateToElement }, true);\n return ((typeof this.relateTo) === 'string') ?\n document.querySelector(this.relateTo) : this.relateTo;\n };\n Popup.prototype.scrollRefresh = function (e) {\n if (this.actionOnScroll === 'reposition') {\n if (!isNullOrUndefined(this.element) && !(this.element.offsetParent === e.target ||\n (this.element.offsetParent && this.element.offsetParent.tagName === 'BODY' &&\n e.target.parentElement == null))) {\n this.refreshPosition();\n }\n }\n else if (this.actionOnScroll === 'hide') {\n this.hide();\n }\n if (this.actionOnScroll !== 'none') {\n if (this.getRelateToElement()) {\n var targetVisible = this.isElementOnViewport(this.getRelateToElement(), e.target);\n if (!targetVisible && !this.targetInvisibleStatus) {\n this.trigger('targetExitViewport');\n this.targetInvisibleStatus = true;\n }\n else if (targetVisible) {\n this.targetInvisibleStatus = false;\n }\n }\n }\n };\n /**\n * This method is to get the element visibility on viewport when scroll\n * the page. This method will returns true even though 1 px of element\n * part is in visible.\n *\n * @param {HTMLElement} relateToElement - specifies the element\n * @param {HTMLElement} scrollElement - specifies the scroll element\n * @returns {boolean} - retruns the boolean\n */\n // eslint-disable-next-line\n Popup.prototype.isElementOnViewport = function (relateToElement, scrollElement) {\n var scrollParents = this.getScrollableParent(relateToElement);\n for (var parent_3 = 0; parent_3 < scrollParents.length; parent_3++) {\n if (this.isElementVisible(relateToElement, scrollParents[parent_3])) {\n continue;\n }\n else {\n return false;\n }\n }\n return true;\n };\n Popup.prototype.isElementVisible = function (relateToElement, scrollElement) {\n var rect = this.checkGetBoundingClientRect(relateToElement);\n if (!rect.height || !rect.width) {\n return false;\n }\n if (!isNullOrUndefined(this.checkGetBoundingClientRect(scrollElement))) {\n var parent_4 = scrollElement.getBoundingClientRect();\n return !(rect.bottom < parent_4.top) &&\n (!(rect.bottom > parent_4.bottom) &&\n (!(rect.right > parent_4.right) &&\n !(rect.left < parent_4.left)));\n }\n else {\n var win = window;\n var windowView = {\n top: win.scrollY,\n left: win.scrollX,\n right: win.scrollX + win.outerWidth,\n bottom: win.scrollY + win.outerHeight\n };\n var off = calculatePosition(relateToElement);\n var ele = {\n top: off.top,\n left: off.left,\n right: off.left + rect.width,\n bottom: off.top + rect.height\n };\n var elementView = {\n top: windowView.bottom - ele.top,\n left: windowView.right - ele.left,\n bottom: ele.bottom - windowView.top,\n right: ele.right - windowView.left\n };\n return elementView.top > 0\n && elementView.left > 0\n && elementView.right > 0\n && elementView.bottom > 0;\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.preRender = function () {\n //There is no event handler\n };\n Popup.prototype.setEnableRtl = function () {\n this.reposition();\n // eslint-disable-next-line\n this.enableRtl ? this.element.classList.add(CLASSNAMES.RTL) : this.element.classList.remove(CLASSNAMES.RTL);\n };\n Popup.prototype.setContent = function () {\n if (!isNullOrUndefined(this.content)) {\n this.element.innerHTML = '';\n if (typeof (this.content) === 'string') {\n this.element.textContent = this.content;\n }\n else {\n var relateToElem = this.getRelateToElement();\n // eslint-disable-next-line\n var props = this.content.props;\n if (!relateToElem.classList.contains('e-dropdown-btn') || isNullOrUndefined(props)) {\n this.element.appendChild(this.content);\n }\n }\n }\n };\n Popup.prototype.orientationOnChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.refreshPosition();\n }, 200);\n };\n // eslint-disable-next-line\n /**\n * Based on the `relative` element and `offset` values, `Popup` element position will refreshed.\n *\n * @returns {void}\n */\n Popup.prototype.refreshPosition = function (target, collision) {\n if (!isNullOrUndefined(target)) {\n this.checkFixedParent(target);\n }\n this.reposition();\n if (!collision) {\n this.checkCollision();\n }\n };\n Popup.prototype.reposition = function () {\n var pos;\n var position;\n var relateToElement = this.getRelateToElement();\n if (typeof this.position.X === 'number' && typeof this.position.Y === 'number') {\n pos = { left: this.position.X, top: this.position.Y };\n }\n else if ((typeof this.position.X === 'string' && typeof this.position.Y === 'number') ||\n (typeof this.position.X === 'number' && typeof this.position.Y === 'string')) {\n var parentDisplay = void 0;\n var display = this.element.style.display;\n this.element.style.display = 'block';\n if (this.element.classList.contains('e-dlg-modal')) {\n parentDisplay = this.element.parentElement.style.display;\n this.element.parentElement.style.display = 'block';\n }\n position = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY);\n if (typeof this.position.X === 'string') {\n pos = { left: position.left, top: this.position.Y };\n }\n else {\n pos = { left: this.position.X, top: position.top };\n }\n this.element.style.display = display;\n if (this.element.classList.contains('e-dlg-modal')) {\n this.element.parentElement.style.display = parentDisplay;\n }\n }\n else if (relateToElement) {\n var height = this.element.clientHeight;\n var display = this.element.style.display;\n this.element.style.display = 'block';\n pos = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY, height);\n this.element.style.display = display;\n }\n else {\n pos = { left: 0, top: 0 };\n }\n if (!isNullOrUndefined(pos)) {\n this.element.style.left = pos.left + 'px';\n this.element.style.top = pos.top + 'px';\n }\n };\n Popup.prototype.checkGetBoundingClientRect = function (ele) {\n var eleRect;\n try {\n eleRect = ele.getBoundingClientRect();\n return eleRect;\n }\n catch (error) {\n return null;\n }\n };\n Popup.prototype.getAnchorPosition = function (anchorEle, ele, position, offsetX, offsetY, height) {\n if (height === void 0) { height = 0; }\n var eleRect = this.checkGetBoundingClientRect(ele);\n var anchorRect = this.checkGetBoundingClientRect(anchorEle);\n if (isNullOrUndefined(eleRect) || isNullOrUndefined(anchorRect)) {\n return null;\n }\n var anchor = anchorEle;\n var anchorPos = { left: 0, top: 0 };\n if (ele.offsetParent && ele.offsetParent.tagName === 'BODY' && anchorEle.tagName === 'BODY') {\n anchorPos = calculatePosition(anchorEle);\n }\n else {\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName !== 'BODY')) {\n ele = ele.parentElement;\n }\n anchorPos = calculateRelativeBasedPosition(anchor, ele);\n }\n switch (position.X) {\n default:\n case 'left':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth / 2 - eleRect.width / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width / 2 - eleRect.width / 2);\n }\n else {\n anchorPos.left += (anchorRect.width / 2);\n }\n break;\n case 'right':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth - eleRect.width);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width - eleRect.width);\n }\n else {\n anchorPos.left += (anchorRect.width);\n }\n break;\n }\n switch (position.Y) {\n default:\n case 'top':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight / 2 - eleRect.height / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.top += (anchorRect.height / 2 - eleRect.height / 2);\n }\n else {\n anchorPos.top += (anchorRect.height / 2);\n }\n break;\n case 'bottom':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight - eleRect.height);\n }\n else if (this.targetType === 'container' && !ele.classList.contains('e-dialog')) {\n anchorPos.top += (anchorRect.height - eleRect.height);\n }\n else if (this.targetType === 'container' && ele.classList.contains('e-dialog')) {\n anchorPos.top += (anchorRect.height - height);\n }\n else {\n anchorPos.top += (anchorRect.height);\n }\n break;\n }\n anchorPos.left += offsetX;\n anchorPos.top += offsetY;\n return anchorPos;\n };\n Popup.prototype.callFlip = function (param) {\n var relateToElement = this.getRelateToElement();\n flip(this.element, relateToElement, this.offsetX, this.offsetY, this.position.X, this.position.Y, this.viewPortElement, param, this.fixedParent);\n };\n Popup.prototype.callFit = function (param) {\n if (isCollide(this.element, this.viewPortElement).length !== 0) {\n if (isNullOrUndefined(this.viewPortElement)) {\n var data = fit(this.element, this.viewPortElement, param);\n if (param.X) {\n this.element.style.left = data.left + 'px';\n }\n if (param.Y) {\n this.element.style.top = data.top + 'px';\n }\n }\n else {\n var elementRect = this.checkGetBoundingClientRect(this.element);\n var viewPortRect = this.checkGetBoundingClientRect(this.viewPortElement);\n if (isNullOrUndefined(elementRect) || isNullOrUndefined(viewPortRect)) {\n return null;\n }\n if (param && param.Y === true) {\n if (viewPortRect.top > elementRect.top) {\n this.element.style.top = '0px';\n }\n else if (viewPortRect.bottom < elementRect.bottom) {\n this.element.style.top = parseInt(this.element.style.top, 10) - (elementRect.bottom - viewPortRect.bottom) + 'px';\n }\n }\n if (param && param.X === true) {\n if (viewPortRect.right < elementRect.right) {\n this.element.style.left = parseInt(this.element.style.left, 10) - (elementRect.right - viewPortRect.right) + 'px';\n }\n else if (viewPortRect.left > elementRect.left) {\n this.element.style.left = parseInt(this.element.style.left, 10) + (viewPortRect.left - elementRect.left) + 'px';\n }\n }\n }\n }\n };\n Popup.prototype.checkCollision = function () {\n var horz = this.collision.X;\n var vert = this.collision.Y;\n if (horz === 'none' && vert === 'none') {\n return;\n }\n if (horz === 'flip' && vert === 'flip') {\n this.callFlip({ X: true, Y: true });\n }\n else if (horz === 'fit' && vert === 'fit') {\n this.callFit({ X: true, Y: true });\n }\n else {\n if (horz === 'flip') {\n this.callFlip({ X: true, Y: false });\n }\n else if (vert === 'flip') {\n this.callFlip({ Y: true, X: false });\n }\n if (horz === 'fit') {\n this.callFit({ X: true, Y: false });\n }\n else if (vert === 'fit') {\n this.callFit({ X: false, Y: true });\n }\n }\n };\n /**\n * Shows the popup element from screen.\n *\n * @returns {void}\n * @param {AnimationModel} animationOptions - specifies the model\n * @param { HTMLElement } relativeElement - To calculate the zIndex value dynamically.\n */\n Popup.prototype.show = function (animationOptions, relativeElement) {\n var _this = this;\n var relateToElement = this.getRelateToElement();\n if (relateToElement.classList.contains('e-filemanager')) {\n this.fmDialogContainer = this.element.getElementsByClassName('e-file-select-wrap')[0];\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.fmDialogContainer) && Browser.isIos) {\n this.fmDialogContainer.style.display = 'block';\n }\n if (this.zIndex === 1000 || !isNullOrUndefined(relativeElement)) {\n var zIndexElement = (isNullOrUndefined(relativeElement)) ? this.element : relativeElement;\n this.zIndex = getZindexPartial(zIndexElement);\n setStyleAttribute(this.element, { 'zIndex': this.zIndex });\n }\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.showAnimation;\n if (this.collision.X !== 'none' || this.collision.Y !== 'none') {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.checkCollision();\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n }\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.begin = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.CLOSE);\n addClass([_this.element], CLASSNAMES.OPEN);\n }\n };\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n _this.trigger('open');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.trigger('open');\n }\n };\n /**\n * Hides the popup element from screen.\n *\n * @param {AnimationModel} animationOptions - To give the animation options.\n * @returns {void}\n */\n Popup.prototype.hide = function (animationOptions) {\n var _this = this;\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.hideAnimation;\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.OPEN);\n addClass([_this.element], CLASSNAMES.CLOSE);\n _this.trigger('close');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n this.trigger('close');\n }\n this.unwireEvents();\n };\n /**\n * Gets scrollable parent elements for the given element.\n *\n * @returns {void}\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n */\n Popup.prototype.getScrollableParent = function (element) {\n this.checkFixedParent(element);\n return getScrollableParent(element, this.fixedParent);\n };\n Popup.prototype.checkFixedParent = function (element) {\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if ((parentStyle.position === 'fixed' || parentStyle.position === 'sticky') && !isNullOrUndefined(this.element) && this.element.offsetParent &&\n this.element.offsetParent.tagName === 'BODY' && getComputedStyle(this.element.offsetParent).overflow !== 'hidden') {\n this.element.style.top = window.scrollY > parseInt(this.element.style.top, 10) ?\n formatUnit(window.scrollY - parseInt(this.element.style.top, 10))\n : formatUnit(parseInt(this.element.style.top, 10) - window.scrollY);\n this.element.style.position = 'fixed';\n this.fixedParent = true;\n }\n parent = parent.parentElement;\n if (!isNullOrUndefined(this.element) && isNullOrUndefined(this.element.offsetParent) && parentStyle.position === 'fixed'\n && this.element.style.position === 'fixed') {\n this.fixedParent = true;\n }\n }\n };\n __decorate([\n Property('auto')\n ], Popup.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Popup.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"content\", void 0);\n __decorate([\n Property('container')\n ], Popup.prototype, \"targetType\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"viewPortElement\", void 0);\n __decorate([\n Property({ X: 'none', Y: 'none' })\n ], Popup.prototype, \"collision\", void 0);\n __decorate([\n Property('')\n ], Popup.prototype, \"relateTo\", void 0);\n __decorate([\n Complex({}, PositionData)\n ], Popup.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetY\", void 0);\n __decorate([\n Property(1000)\n ], Popup.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], Popup.prototype, \"enableRtl\", void 0);\n __decorate([\n Property('reposition')\n ], Popup.prototype, \"actionOnScroll\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"showAnimation\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"hideAnimation\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"targetExitViewport\", void 0);\n Popup = __decorate([\n NotifyPropertyChanges\n ], Popup);\n return Popup;\n}(Component));\nexport { Popup };\n/**\n * Gets scrollable parent elements for the given element.\n *\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n * @param {boolean} fixedParent - specifies the parent element\n * @private\n * @returns {void}\n */\nexport function getScrollableParent(element, fixedParent) {\n var eleStyle = getComputedStyle(element);\n var scrollParents = [];\n var overflowRegex = /(auto|scroll)/;\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (!(eleStyle.position === 'absolute' && parentStyle.position === 'static')\n && overflowRegex.test(parentStyle.overflow + parentStyle.overflowY + parentStyle.overflowX)) {\n scrollParents.push(parent);\n }\n parent = parent.parentElement;\n }\n if (!fixedParent) {\n scrollParents.push(document);\n }\n return scrollParents;\n}\n/**\n * Gets the maximum z-index of the given element.\n *\n * @returns {void}\n * @param { HTMLElement } element - Specify the element to get the maximum z-index of it.\n * @private\n */\nexport function getZindexPartial(element) {\n // upto body traversal\n var parent = element.parentElement;\n var parentZindex = [];\n while (parent) {\n if (parent.tagName !== 'BODY') {\n var index = document.defaultView.getComputedStyle(parent, null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(parent, null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n parentZindex.push(index);\n }\n parent = parent.parentElement;\n }\n else {\n break;\n }\n }\n var childrenZindex = [];\n for (var i = 0; i < document.body.children.length; i++) {\n if (!element.isEqualNode(document.body.children[i])) {\n var index = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n childrenZindex.push(index);\n }\n }\n }\n childrenZindex.push('999');\n var siblingsZindex = [];\n if (!isNullOrUndefined(element.parentElement) && element.parentElement.tagName !== 'BODY') {\n var childNodes = [].slice.call(element.parentElement.children);\n for (var i = 0; i < childNodes.length; i++) {\n if (!element.isEqualNode(childNodes[i])) {\n var index = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n siblingsZindex.push(index);\n }\n }\n }\n }\n var finalValue = parentZindex.concat(childrenZindex, siblingsZindex);\n // eslint-disable-next-line\n var currentZindexValue = Math.max.apply(Math, finalValue) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n/**\n * Gets the maximum z-index of the page.\n *\n * @returns {void}\n * @param { HTMLElement } tagName - Specify the tagName to get the maximum z-index of it.\n * @private\n */\nexport function getMaxZindex(tagName) {\n if (tagName === void 0) { tagName = ['*']; }\n var maxZindex = [];\n for (var i = 0; i < tagName.length; i++) {\n var elements = document.getElementsByTagName(tagName[i]);\n for (var i_1 = 0; i_1 < elements.length; i_1++) {\n var index = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n maxZindex.push(index);\n }\n }\n }\n // eslint-disable-next-line\n var currentZindexValue = Math.max.apply(Math, maxZindex) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n","import { isNullOrUndefined, classList, createElement, Browser } from '@syncfusion/ej2-base';\nvar globalTimeOut = {};\nvar DEFT_MAT_WIDTH = 30;\nvar DEFT_MAT3_WIDTH = 30;\nvar DEFT_FAB_WIDTH = 30;\nvar DEFT_FLUENT_WIDTH = 30;\nvar DEFT_BOOT_WIDTH = 30;\nvar DEFT_BOOT4_WIDTH = 36;\nvar DEFT_BOOT5_WIDTH = 36;\nvar CLS_SHOWSPIN = 'e-spin-show';\nvar CLS_HIDESPIN = 'e-spin-hide';\nvar CLS_MATERIALSPIN = 'e-spin-material';\nvar CLS_MATERIAL3SPIN = 'e-spin-material3';\nvar CLS_FABRICSPIN = 'e-spin-fabric';\nvar CLS_FLUENTSPIN = 'e-spin-fluent';\nvar CLS_TAILWINDSPIN = 'e-spin-tailwind';\nvar CLS_BOOTSPIN = 'e-spin-bootstrap';\nvar CLS_BOOT4SPIN = 'e-spin-bootstrap4';\nvar CLS_BOOT5SPIN = 'e-spin-bootstrap5';\nvar CLS_HIGHCONTRASTSPIN = 'e-spin-high-contrast';\nvar CLS_SPINWRAP = 'e-spinner-pane';\nvar CLS_SPININWRAP = 'e-spinner-inner';\nvar CLS_SPINCIRCLE = 'e-path-circle';\nvar CLS_SPINARC = 'e-path-arc';\nvar CLS_SPINLABEL = 'e-spin-label';\nvar CLS_SPINTEMPLATE = 'e-spin-template';\nvar spinTemplate = null;\nvar spinCSSClass = null;\n// eslint-disable-next-line\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : blazorSpinner({ action: \"Create\", options: {target: targetElement}, type: \"\" });\n * ```\n *\n * @param {string} action - specifies the string\n * @param {CreateArgs} options - specifies the args\n * @param {string} target - specifies the target\n * @param {string} type - specifes the type\n * @returns {void}\n * @private\n */\nexport function Spinner(action, options, target, type) {\n switch (action) {\n case 'Create':\n /* eslint-disable */\n var element = document.querySelector(options.target);\n var args = { type: type, target: element, cssClass: options.cssClass,\n label: options.label, width: options.width };\n /* eslint-enable */\n createSpinner(args);\n break;\n case 'Show':\n showSpinner(document.querySelector(target));\n break;\n case 'Hide':\n hideSpinner(document.querySelector(target));\n break;\n case 'Set':\n // eslint-disable-next-line\n var setArgs = { cssClass: options.cssClass, type: type };\n setSpinner(setArgs);\n break;\n }\n}\n/**\n * Create a spinner for the specified target element.\n * ```\n * E.g : createSpinner({ target: targetElement, width: '34px', label: 'Loading..' });\n * ```\n *\n * @param {SpinnerArgs} args - specifies the args\n * @param {CreateElementArgs} internalCreateElement - specifis the element args\n * @returns {void}\n * @private\n */\nexport function createSpinner(args, internalCreateElement) {\n var _a;\n if (!args.target) {\n return;\n }\n var radius;\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n // eslint-disable-next-line\n var container = create_spinner_container(args.target, makeElement);\n if (!isNullOrUndefined(args.cssClass)) {\n var classNames = args.cssClass.split(' ').filter(function (className) { return className.trim() !== ''; });\n (_a = container.wrap.classList).add.apply(_a, classNames);\n }\n if (!isNullOrUndefined(args.template) || !isNullOrUndefined(spinTemplate)) {\n var template = !isNullOrUndefined(args.template) ? args.template : spinTemplate;\n container.wrap.classList.add(CLS_SPINTEMPLATE);\n replaceContent(container.wrap, template, spinCSSClass);\n }\n else {\n var theme = !isNullOrUndefined(args.type) ? args.type : getTheme(container.wrap);\n var width = !isNullOrUndefined(args.width) ? args.width : undefined;\n radius = calculateRadius(width, theme);\n setTheme(theme, container.wrap, radius, makeElement);\n if (!isNullOrUndefined(args.label)) {\n createLabel(container.inner_wrap, args.label, makeElement);\n }\n }\n container.wrap.classList.add(CLS_HIDESPIN);\n container = null;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} label - specifies the string\n * @param {createElementParams} makeElement - specifies the element\n * @returns {HTMLElement} - returns the element\n */\nfunction createLabel(container, label, makeElement) {\n var labelEle = makeElement('div', {});\n labelEle.classList.add(CLS_SPINLABEL);\n labelEle.innerHTML = label;\n container.appendChild(labelEle);\n return labelEle;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createMaterialSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Material', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIALSPIN);\n mat_calculate_attributes(radius, container, 'Material', CLS_MATERIALSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createMaterial3Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Material3', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIAL3SPIN);\n mat_calculate_attributes(radius, container, 'Material3', CLS_MATERIAL3SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrap4Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap4', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT4SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap4', CLS_BOOT4SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrap5Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap5', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT5SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap5', CLS_BOOT5SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} uniqueID - specifies the id.\n * @param {number} radius - specifies the radius\n * @returns {void}\n */\nfunction startMatAnimate(container, uniqueID, radius) {\n var globalObject = {};\n var timeOutVar = 0;\n globalTimeOut[\"\" + uniqueID].timeOut = 0;\n globalObject[\"\" + uniqueID] = globalVariables(uniqueID, radius, 0, 0);\n // eslint-disable-next-line\n var spinnerInfo = { uniqueID: uniqueID, container: container, globalInfo: globalObject, timeOutVar: timeOutVar };\n animateMaterial(spinnerInfo);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createFabricSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fabric', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FABRICSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FABRICSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createFluentSinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fluent', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FLUENTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FLUENTSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createTailwindSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Tailwind', radius: radius };\n create_fabric_element(container, uniqueID, CLS_TAILWINDSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_TAILWINDSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createHighContrastSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'HighContrast', radius: radius };\n create_fabric_element(container, uniqueID, CLS_HIGHCONTRASTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_HIGHCONTRASTSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @returns {string} - returns the string\n */\nfunction getTheme(container) {\n var theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n}\n/**\n *\n * @param {string} theme - specifies the theme\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction setTheme(theme, container, radius, makeElement) {\n var innerContainer = container.querySelector('.' + CLS_SPININWRAP);\n var svg = innerContainer.querySelector('svg');\n if (!isNullOrUndefined(svg)) {\n innerContainer.removeChild(svg);\n }\n switch (theme) {\n case 'Material':\n createMaterialSpinner(innerContainer, radius, makeElement);\n break;\n case 'Material3':\n createMaterial3Spinner(innerContainer, radius, makeElement);\n break;\n case 'Fabric':\n createFabricSpinner(innerContainer, radius, makeElement);\n break;\n case 'Fluent':\n createFluentSinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap':\n createBootstrapSpinner(innerContainer, radius, makeElement);\n break;\n case 'HighContrast':\n createHighContrastSpinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap4':\n createBootstrap4Spinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap5':\n createBootstrap5Spinner(innerContainer, radius, makeElement);\n break;\n case 'Tailwind':\n case 'Tailwind-dark':\n createTailwindSpinner(innerContainer, radius, makeElement);\n break;\n }\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrapSpinner(innerContainer, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap', radius: radius };\n create_bootstrap_element(innerContainer, uniqueID, makeElement);\n boot_calculate_attributes(innerContainer, radius);\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {string} uniqueID - specifies the id\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_bootstrap_element(innerContainer, uniqueID, makeElement) {\n var svgBoot = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var viewBoxValue = 64;\n var trans = 32;\n var defaultRadius = 2;\n svgBoot.setAttribute('id', uniqueID);\n svgBoot.setAttribute('class', CLS_BOOTSPIN);\n svgBoot.setAttribute('viewBox', '0 0 ' + viewBoxValue + ' ' + viewBoxValue);\n innerContainer.insertBefore(svgBoot, innerContainer.firstChild);\n for (var item = 0; item <= 7; item++) {\n var bootCircle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n bootCircle.setAttribute('class', CLS_SPINCIRCLE + '_' + item);\n bootCircle.setAttribute('r', defaultRadius + '');\n bootCircle.setAttribute('transform', 'translate(' + trans + ',' + trans + ')');\n svgBoot.appendChild(bootCircle);\n }\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {number} radius - specifies the radius\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction boot_calculate_attributes(innerContainer, radius) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var x = 0;\n var y = 0;\n var rad = 24;\n svg.style.width = svg.style.height = radius + 'px';\n var startArc = 90;\n for (var item = 0; item <= 7; item++) {\n var start = defineArcPoints(x, y, rad, startArc);\n var circleEle = svg.querySelector('.' + CLS_SPINCIRCLE + '_' + item);\n circleEle.setAttribute('cx', start.x + '');\n circleEle.setAttribute('cy', start.y + '');\n startArc = startArc >= 360 ? 0 : startArc;\n startArc = startArc + 45;\n }\n}\n/**\n *\n * @param {number} begin - specifies the number\n * @param {number} stop - specifirs the number\n * @returns {number[]} - returns the array of number\n */\nfunction generateSeries(begin, stop) {\n var series = [];\n var start = begin;\n var end = stop;\n // eslint-disable-next-line\n var increment = false, count = 1;\n formSeries(start);\n /**\n *\n * @param {number} i - specifies the number\n * @returns {void}\n */\n function formSeries(i) {\n series.push(i);\n if (i !== end || count === 1) {\n if (i <= start && i > 1 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n else if (i === 1) {\n i = 7;\n i = parseFloat((i + 0.2).toFixed(2));\n increment = true;\n }\n else if (i < 8 && increment) {\n i = parseFloat((i + 0.2).toFixed(2));\n if (i === 8) {\n increment = false;\n }\n }\n else if (i <= 8 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n ++count;\n formSeries(i);\n }\n }\n return series;\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @returns {void}\n */\nfunction animateBootstrap(innerContainer) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var id = svg.getAttribute('id');\n for (var i = 1; i <= 8; i++) {\n var circleEle = (innerContainer.getElementsByClassName('e-path-circle_' +\n (i === 8 ? 0 : i))[0]);\n rotation(circleEle, i, i, generateSeries(i, i), id);\n }\n /**\n *\n * @param {SVGCircleElement} circle - specifies the circl element\n * @param {number} start - specifies the number\n * @param {number} end - specifies the end number\n * @param {number} series - specifies the series\n * @param {string} id - specifies the id\n * @returns {void}\n */\n function rotation(circle, start, end, series, id) {\n var count = 0;\n boot_animate(start);\n // eslint-disable-next-line\n function boot_animate(radius) {\n if (globalTimeOut[\"\" + id].isAnimate) {\n ++count;\n circle.setAttribute('r', radius + '');\n if (count >= series.length) {\n count = 0;\n }\n // eslint-disable-next-line\n globalTimeOut[id].timeOut = setTimeout(boot_animate.bind(null, series[count]), 18);\n }\n }\n }\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} template - specifies the template\n * @param {string} cssClass - specifies the css class.\n * @returns {void}\n */\nfunction replaceContent(container, template, cssClass) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var inner = container.querySelector('.e-spinner-inner');\n inner.innerHTML = template;\n}\n/**\n *\n * @param {string} width - specifies the width\n * @param {string} theme - specifies the string\n * @returns {number} - returns the number\n */\nfunction calculateRadius(width, theme) {\n var defaultSize;\n switch (theme) {\n case 'Material':\n defaultSize = DEFT_MAT_WIDTH;\n break;\n case 'Material3':\n defaultSize = DEFT_MAT3_WIDTH;\n break;\n case 'Fabric':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Tailwind':\n case 'Tailwind-dark':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Fluent':\n defaultSize = DEFT_FLUENT_WIDTH;\n break;\n case 'Bootstrap4':\n defaultSize = DEFT_BOOT4_WIDTH;\n break;\n case 'Bootstrap5':\n defaultSize = DEFT_BOOT5_WIDTH;\n break;\n default:\n defaultSize = DEFT_BOOT_WIDTH;\n }\n width = width ? parseFloat(width + '') : defaultSize;\n return theme === 'Bootstrap' ? width : width / 2;\n}\n/**\n *\n * @param {string} id - specifies the id\n * @param {number} radius - specifies the radius\n * @param {number} count - specifies the number count\n * @param {number} previousId - specifies the previous id\n * @returns {GlobalVariables} - returns the variables\n */\nfunction globalVariables(id, radius, count, previousId) {\n return {\n radius: radius,\n count: count,\n previousId: previousId\n };\n}\n/**\n * @returns {string} - returns the string\n */\n// eslint-disable-next-line\nfunction random_generator() {\n var random = '';\n var combine = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n for (var i = 0; i < 5; i++) {\n random += combine.charAt(Math.floor(Math.random() * combine.length));\n }\n return random;\n}\n/**\n *\n * @param {HTMLElement} innerCon - specifies the element\n * @param {string} uniqueID - specifies the unique id\n * @param {string} themeClass - specifies the string\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_fabric_element(innerCon, uniqueID, themeClass, makeElement) {\n var svgFabric = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgFabric.setAttribute('id', uniqueID);\n svgFabric.setAttribute('class', themeClass);\n var fabricCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n var fabricCircleArc = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCircleArc.setAttribute('class', CLS_SPINARC);\n innerCon.insertBefore(svgFabric, innerCon.firstChild);\n svgFabric.appendChild(fabricCirclePath);\n svgFabric.appendChild(fabricCircleArc);\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {string} uniqueID - specifies the unique id\n * @param {createElementParams} makeElement - specifies the element\n * @param {string} cls - specifies the string\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_material_element(innerContainer, uniqueID, makeElement, cls) {\n var svgMaterial = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var matCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n svgMaterial.setAttribute('class', cls);\n svgMaterial.setAttribute('id', uniqueID);\n matCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n innerContainer.insertBefore(svgMaterial, innerContainer.firstChild);\n svgMaterial.appendChild(matCirclePath);\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_spinner_container(target, makeElement) {\n var spinnerContainer = makeElement('div', {});\n var spinnerInnerContainer = makeElement('div', {});\n spinnerContainer.classList.add(CLS_SPINWRAP);\n spinnerInnerContainer.classList.add(CLS_SPININWRAP);\n spinnerInnerContainer.setAttribute('aria-disabled', 'true');\n target.appendChild(spinnerContainer);\n spinnerContainer.appendChild(spinnerInnerContainer);\n // eslint-disable-next-line\n return { wrap: spinnerContainer, inner_wrap: spinnerInnerContainer };\n}\n/**\n *\n * @param {SpinnerInfo} spinnerInfo - specifies the spinner\n * @returns {void}\n */\nfunction animateMaterial(spinnerInfo) {\n var start = 1;\n var end = 149;\n var duration = 1333;\n var max = 75;\n createCircle(start, end, easeAnimation, duration, spinnerInfo.globalInfo[spinnerInfo.uniqueID].count, max, spinnerInfo);\n spinnerInfo.globalInfo[spinnerInfo.uniqueID].count = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].count % 4;\n}\n/**\n *\n * @param {number} start - specifies the number\n * @param {number} end - specifies the end number\n * @param {Function} easing - specifies the function\n * @param {number} duration - specifies the duration\n * @param {number} count - specifies the count\n * @param {number} max - specifies the max number\n * @param {SpinnerInfo} spinnerInfo - specifies the spinner info\n * @returns {void}\n */\nfunction createCircle(start, end, easing, duration, count, max, spinnerInfo) {\n var id = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId;\n var startTime = new Date().getTime();\n var change = end - start;\n var diameter = getSize((spinnerInfo.globalInfo[spinnerInfo.uniqueID].radius * 2) + '');\n var strokeSize = getStrokeSize(diameter);\n var rotate = -90 * (spinnerInfo.globalInfo[spinnerInfo.uniqueID].count || 0);\n mat_animation(spinnerInfo);\n // eslint-disable-next-line\n function mat_animation(spinnerInfo) {\n var currentTime = Math.max(0, Math.min(new Date().getTime() - startTime, duration));\n updatePath(easing(currentTime, start, change, duration), spinnerInfo.container);\n if (id === spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId && currentTime < duration) {\n // eslint-disable-next-line\n globalTimeOut[spinnerInfo.uniqueID].timeOut = setTimeout(mat_animation.bind(null, spinnerInfo), 1);\n }\n else {\n animateMaterial(spinnerInfo);\n }\n }\n /**\n *\n * @param {number} value - specifies the number value\n * @param {HTMLElement} container - specifies the container\n * @returns {void}\n */\n function updatePath(value, container) {\n if (!isNullOrUndefined(container.querySelector('svg.e-spin-material')) || !isNullOrUndefined(container.querySelector('svg.e-spin-material3'))) {\n var svg = void 0;\n if (!isNullOrUndefined(container.querySelector('svg.e-spin-material')) && !isNullOrUndefined(container.querySelector('svg.e-spin-material').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-material');\n }\n else if (!isNullOrUndefined(container.querySelector('svg.e-spin-material3')) && !isNullOrUndefined(container.querySelector('svg.e-spin-material3').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-material3');\n }\n if (!isNullOrUndefined(svg)) {\n var path = svg.querySelector('path.e-path-circle');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, value, max) + '');\n path.setAttribute('transform', 'rotate(' + (rotate) + ' ' + diameter / 2 + ' ' + diameter / 2 + ')');\n }\n }\n }\n}\n/**\n *\n * @param {number} radius - specifies the number\n * @param {HTMLElement} container - specifies the element\n * @param {string} type - specifies the string type\n * @param {string} cls - specifies the string\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction mat_calculate_attributes(radius, container, type, cls) {\n var diameter = radius * 2;\n var svg = container.querySelector('svg.' + cls);\n var path = svg.querySelector('path.e-path-circle');\n var strokeSize = getStrokeSize(diameter);\n var transformOrigin = (diameter / 2) + 'px';\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.width = svg.style.height = diameter + 'px';\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n path.setAttribute('d', drawArc(diameter, strokeSize));\n if (type === 'Material' || type === 'Material3') {\n path.setAttribute('stroke-width', strokeSize + '');\n path.setAttribute('stroke-dasharray', ((diameter - strokeSize) * Math.PI * 0.75) + '');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, 1, 75) + '');\n }\n}\n/**\n *\n * @param {string} value - specifies the value\n * @returns {number} - returns the number\n */\nfunction getSize(value) {\n var parsed = parseFloat(value);\n return parsed;\n}\n/**\n *\n * @param {number} diameter - specifies the diameter\n * @param {number} strokeSize - specifies the size\n * @returns {string} - returns the string\n */\nfunction drawArc(diameter, strokeSize) {\n var radius = diameter / 2;\n var offset = strokeSize / 2;\n return 'M' + radius + ',' + offset\n + 'A' + (radius - offset) + ',' + (radius - offset) + ' 0 1 1 ' + offset + ',' + radius;\n}\n/**\n *\n * @param {number} diameter - specifies the number\n * @returns {number} - returns the number\n */\nfunction getStrokeSize(diameter) {\n return 10 / 100 * diameter;\n}\n/**\n *\n * @param {number} diameter - specifies the number\n * @param {number} strokeSize - specifies the stroke size\n * @param {number} value - specifies the value\n * @param {number} max - specifies the max number\n * @returns {number} - returns the number\n */\nfunction getDashOffset(diameter, strokeSize, value, max) {\n return (diameter - strokeSize) * Math.PI * ((3 * (max) / 100) - (value / 100));\n}\n/**\n *\n * @param {number} current - specifies the number\n * @param {number} start - specifies the stroke size\n * @param {number} change - specifies the value\n * @param {number} duration - specifies the max number\n * @returns {number} - returns the number\n */\nfunction easeAnimation(current, start, change, duration) {\n var timestamp = (current /= duration) * current;\n var timecount = timestamp * current;\n return start + change * (6 * timecount * timestamp + -15 * timestamp * timestamp + 10 * timecount);\n}\n/**\n *\n * @param {number} radius - specifies the number\n * @param {HTMLElement} innerConainer - specifies the element\n * @param {string} trgClass - specifies the class\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction fb_calculate_attributes(radius, innerConainer, trgClass) {\n var centerX = radius;\n var centerY = radius;\n var diameter = radius * 2;\n // eslint-disable-next-line\n var startArc = 315, endArc = 45;\n var svg = innerConainer.querySelector('.' + trgClass);\n var circle = svg.querySelector('.e-path-circle');\n var path = svg.querySelector('.e-path-arc');\n var transformOrigin = (diameter / 2) + 'px';\n circle.setAttribute('d', defineCircle(centerX, centerY, radius));\n path.setAttribute('d', defineArc(centerX, centerY, radius, startArc, endArc));\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n svg.style.width = svg.style.height = diameter + 'px';\n}\n/**\n *\n * @param {number} centerX - specifies the number\n * @param {number} centerY - specifies the stroke size\n * @param {number} radius - specifies the value\n * @param {number} angle - specifies the max number\n * @returns {number} - returns the number\n */\nfunction defineArcPoints(centerX, centerY, radius, angle) {\n var radians = (angle - 90) * Math.PI / 180.0;\n return {\n x: centerX + (radius * Math.cos(radians)),\n y: centerY + (radius * Math.sin(radians))\n };\n}\n/**\n *\n * @param {number} x - specifies the number\n * @param {number} y - specifies the stroke size\n * @param {number} radius - specifies the radius\n * @param {number} startArc - specifies the value\n * @param {number} endArc - specifies the max number\n * @returns {number} - returns the number\n */\nfunction defineArc(x, y, radius, startArc, endArc) {\n var start = defineArcPoints(x, y, radius, endArc);\n var end = defineArcPoints(x, y, radius, startArc);\n var d = [\n 'M', start.x, start.y,\n 'A', radius, radius, 0, 0, 0, end.x, end.y\n ].join(' ');\n return d;\n}\n/**\n *\n * @param {number} x - specifies the number\n * @param {number} y - specifies the stroke size\n * @param {number} radius - specifies the value\n * @returns {string} - returns the string\n */\nfunction defineCircle(x, y, radius) {\n var d = [\n 'M', x, y,\n 'm', -radius, 0,\n 'a', radius, radius, 0, 1, 0, radius * 2, 0,\n 'a', radius, radius, 0, 1, 0, -radius * 2, 0\n ].join(' ');\n return d;\n}\n/**\n * Function to show the Spinner.\n *\n * @param {HTMLElement} container - Specify the target of the Spinner.\n * @returns {void}\n * @private\n */\nexport function showSpinner(container) {\n showHideSpinner(container, false);\n container = null;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {boolean} isHide - specifies the boolean\n * @returns {void}\n */\nfunction showHideSpinner(container, isHide) {\n var spinnerWrap;\n if (container) {\n if (container.classList.contains(CLS_SPINWRAP)) {\n spinnerWrap = container;\n }\n else {\n var spinWrapCollection = container.querySelectorAll('.' + CLS_SPINWRAP);\n if (Browser.isIE) {\n for (var i = 0; i < spinWrapCollection.length; i++) {\n // eslint-disable-next-line\n if (spinWrapCollection[i].parentElement && spinWrapCollection[i].parentElement === container) {\n // eslint-disable-next-line\n spinnerWrap = spinWrapCollection[i];\n break;\n }\n }\n }\n else {\n spinnerWrap = Array.from(spinWrapCollection).find(function (wrap) { return wrap.parentElement === container; }) || null;\n }\n }\n }\n if (container && spinnerWrap) {\n var inner = spinnerWrap.querySelector('.' + CLS_SPININWRAP);\n var spinCheck = void 0;\n // eslint-disable-next-line\n spinCheck = isHide ? !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_HIDESPIN) :\n !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_SHOWSPIN);\n if (spinCheck) {\n var svgEle = spinnerWrap.querySelector('svg');\n if (isNullOrUndefined(svgEle)) {\n return;\n }\n var id = svgEle.getAttribute('id');\n globalTimeOut[\"\" + id].isAnimate = !isHide;\n switch (globalTimeOut[\"\" + id].type) {\n case 'Material':\n case 'Material3':\n // eslint-disable-next-line\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : startMatAnimate(inner, id, globalTimeOut[id].radius);\n break;\n case 'Bootstrap':\n // eslint-disable-next-line\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : animateBootstrap(inner);\n break;\n }\n }\n // eslint-disable-next-line\n isHide ? classList(spinnerWrap, [CLS_HIDESPIN], [CLS_SHOWSPIN]) : classList(spinnerWrap, [CLS_SHOWSPIN], [CLS_HIDESPIN]);\n container = null;\n }\n}\n/**\n * Function to hide the Spinner.\n *\n * @param {HTMLElement} container - Specify the target of the Spinner.\n * @returns {void}\n * @private\n */\nexport function hideSpinner(container) {\n showHideSpinner(container, true);\n container = null;\n}\n// eslint-disable-next-line\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : setSpinner({ cssClass: 'custom-css'; type: 'Material' });\n * ```\n *\n * @param {SetSpinnerArgs} args - specifies the args\n * @param {createElementParams} internalCreateElement - specifies the element params\n * @returns {void}\n * @private\n */\nexport function setSpinner(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.template !== undefined) {\n spinTemplate = args.template;\n if (args.template !== undefined) {\n spinCSSClass = args.cssClass;\n }\n }\n var container = document.querySelectorAll('.' + CLS_SPINWRAP);\n for (var index = 0; index < container.length; index++) {\n ensureTemplate(args.template, container[index], args.type, args.cssClass, makeElement);\n }\n}\n/**\n *\n * @param {string} template - specifies the string\n * @param {HTMLElement} container - specifies the container\n * @param {string} theme - specifies the theme\n * @param {string} cssClass - specifies the string class\n * @param {createElementParams} makeEle - specifies the params\n * @returns {void}\n */\nfunction ensureTemplate(template, container, theme, cssClass, makeEle) {\n if (isNullOrUndefined(template) && !container.classList.contains(CLS_SPINTEMPLATE)) {\n replaceTheme(container, theme, cssClass, makeEle);\n if (container.classList.contains(CLS_SHOWSPIN)) {\n container.classList.remove(CLS_SHOWSPIN);\n showSpinner(container);\n }\n else {\n container.classList.remove(CLS_HIDESPIN);\n hideSpinner(container);\n }\n }\n else {\n spinTemplate = template;\n if (!isNullOrUndefined(cssClass)) {\n spinCSSClass = cssClass;\n }\n if (!isNullOrUndefined(spinTemplate)) {\n replaceContent(container, spinTemplate, spinCSSClass);\n }\n }\n}\n/**\n *\n * @param {HTMLElement} container - specifies the container\n * @param {string} theme - specifies the theme\n * @param {string} cssClass - specifies the string class\n * @param {createElementParams} makeEle - specifies the params\n * @returns {void}\n */\nfunction replaceTheme(container, theme, cssClass, makeEle) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var svgElement = container.querySelector('svg');\n if (!isNullOrUndefined(svgElement)) {\n var radius = theme === 'Bootstrap' ? parseFloat(svgElement.style.height) : parseFloat(svgElement.style.height) / 2;\n var classNames = svgElement.getAttribute('class');\n var svgClassList = classNames.split(/\\s/);\n if (svgClassList.indexOf('e-spin-material') >= 0) {\n var id = svgElement.getAttribute('id');\n clearTimeout(globalTimeOut[\"\" + id].timeOut);\n }\n setTheme(theme, container, radius, makeEle);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, Event, append, compile } from '@syncfusion/ej2-base';\nimport { EventHandler, Touch, Browser, Animation as PopupAnimation, animationMode } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getUniqueID, formatUnit, select, selectAll } from '@syncfusion/ej2-base';\nimport { attributes, closest, removeClass, addClass, remove } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Complex, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '../popup/popup';\nimport { calculatePosition } from '../common/position';\nimport { isCollide, fit, destroy as collisionDestroy } from '../common/collision';\nvar TOUCHEND_HIDE_DELAY = 1500;\nvar TAPHOLD_THRESHOLD = 500;\nvar SHOW_POINTER_TIP_GAP = 0;\nvar HIDE_POINTER_TIP_GAP = 8;\nvar MOUSE_TRAIL_GAP = 2;\nvar POINTER_ADJUST = 2;\nvar ROOT = 'e-tooltip';\nvar RTL = 'e-rtl';\nvar DEVICE = 'e-bigger';\nvar ICON = 'e-icons';\nvar CLOSE = 'e-tooltip-close';\nvar TOOLTIP_WRAP = 'e-tooltip-wrap';\nvar CONTENT = 'e-tip-content';\nvar ARROW_TIP = 'e-arrow-tip';\nvar ARROW_TIP_OUTER = 'e-arrow-tip-outer';\nvar ARROW_TIP_INNER = 'e-arrow-tip-inner';\nvar TIP_BOTTOM = 'e-tip-bottom';\nvar TIP_TOP = 'e-tip-top';\nvar TIP_LEFT = 'e-tip-left';\nvar TIP_RIGHT = 'e-tip-right';\nvar POPUP_ROOT = 'e-popup';\nvar POPUP_OPEN = 'e-popup-open';\nvar POPUP_CLOSE = 'e-popup-close';\nvar POPUP_LIB = 'e-lib';\nvar HIDE_POPUP = 'e-hidden';\nvar POPUP_CONTAINER = 'e-tooltip-popup-container';\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ effect: 'FadeIn', duration: 150, delay: 0 })\n ], Animation.prototype, \"open\", void 0);\n __decorate([\n Property({ effect: 'FadeOut', duration: 150, delay: 0 })\n ], Animation.prototype, \"close\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\n/**\n * Represents the Tooltip component that displays a piece of information about the target element on mouse hover.\n * ```html\n *
    Show Tooltip
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /* eslint-enable */\n /**\n * Constructor for creating the Tooltip Component\n *\n * @param {TooltipModel} options - specifies the options for the constructor\n * @param {string| HTMLElement} element - specifies the element for the constructor\n *\n */\n function Tooltip(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseMoveEvent = null;\n _this.mouseMoveTarget = null;\n _this.containerElement = null;\n _this.isBodyContainer = true;\n return _this;\n }\n Tooltip.prototype.initialize = function () {\n this.formatPosition();\n addClass([this.element], ROOT);\n };\n Tooltip.prototype.formatPosition = function () {\n var _a, _b;\n if (this.position.indexOf('Top') === 0 || this.position.indexOf('Bottom') === 0) {\n _a = this.position.split(/(?=[A-Z])/), this.tooltipPositionY = _a[0], this.tooltipPositionX = _a[1];\n }\n else {\n _b = this.position.split(/(?=[A-Z])/), this.tooltipPositionX = _b[0], this.tooltipPositionY = _b[1];\n }\n };\n Tooltip.prototype.renderArrow = function () {\n this.setTipClass(this.position);\n var tip = this.createElement('div', { className: ARROW_TIP + ' ' + this.tipClass });\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_OUTER + ' ' + this.tipClass }));\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_INNER + ' ' + this.tipClass }));\n this.tooltipEle.appendChild(tip);\n };\n Tooltip.prototype.setTipClass = function (position) {\n if (position.indexOf('Right') === 0) {\n this.tipClass = TIP_LEFT;\n }\n else if (position.indexOf('Bottom') === 0) {\n this.tipClass = TIP_TOP;\n }\n else if (position.indexOf('Left') === 0) {\n this.tipClass = TIP_RIGHT;\n }\n else {\n this.tipClass = TIP_BOTTOM;\n }\n };\n Tooltip.prototype.renderPopup = function (target) {\n var elePos = this.mouseTrail ? { top: 0, left: 0 } : this.getTooltipPosition(target);\n this.tooltipEle.classList.remove(POPUP_LIB);\n this.popupObj = new Popup(this.tooltipEle, {\n height: this.height,\n width: this.width,\n position: { X: elePos.left, Y: elePos.top },\n enableRtl: this.enableRtl,\n open: this.openPopupHandler.bind(this),\n close: this.closePopupHandler.bind(this)\n });\n };\n Tooltip.prototype.getScalingFactor = function (target) {\n if (!target) {\n return { x: 1, y: 1 };\n }\n var scalingFactors = { x: 1, y: 1 };\n var elementsWithTransform = target.closest('[style*=\"transform: scale\"]');\n if (elementsWithTransform && elementsWithTransform != this.tooltipEle && elementsWithTransform.contains(this.tooltipEle)) {\n var computedStyle = window.getComputedStyle(elementsWithTransform);\n var transformValue = computedStyle.getPropertyValue(\"transform\");\n var matrixValues = transformValue.match(/matrix\\(([^)]+)\\)/)[1].split(\",\").map(parseFloat);\n scalingFactors.x = matrixValues[0];\n scalingFactors.y = matrixValues[3];\n }\n return scalingFactors;\n };\n Tooltip.prototype.getTooltipPosition = function (target) {\n this.tooltipEle.style.display = 'block';\n var parentWithZoomStyle = this.element.closest('[style*=\"zoom\"]');\n if (parentWithZoomStyle) {\n if (!parentWithZoomStyle.contains(this.tooltipEle)) {\n this.tooltipEle.style.zoom = getComputedStyle(parentWithZoomStyle).zoom;\n }\n }\n var pos = calculatePosition(target, this.tooltipPositionX, this.tooltipPositionY, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n var scalingFactors = this.getScalingFactor(target);\n var offsetPos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var collisionPosition = this.calculateElementPosition(pos, offsetPos);\n var collisionLeft = collisionPosition[0];\n var collisionTop = collisionPosition[1];\n var elePos = this.collisionFlipFit(target, collisionLeft, collisionTop);\n if (!this.isBodyContainer) {\n elePos.top -= this.containerElement.getBoundingClientRect().top;\n }\n elePos.left = elePos.left / scalingFactors.x;\n elePos.top = elePos.top / scalingFactors.y;\n this.tooltipEle.style.display = '';\n return elePos;\n };\n Tooltip.prototype.windowResize = function () {\n this.reposition(this.findTarget());\n };\n Tooltip.prototype.reposition = function (target) {\n if (this.popupObj && target) {\n var elePos = this.getTooltipPosition(target);\n this.popupObj.position = { X: elePos.left, Y: elePos.top };\n this.popupObj.dataBind();\n }\n };\n Tooltip.prototype.openPopupHandler = function () {\n if (!this.mouseTrail && this.needTemplateReposition()) {\n this.reposition(this.findTarget());\n }\n this.trigger('afterOpen', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.closePopupHandler = function () {\n if (this.isReact && !(this.opensOn === 'Click' && typeof (this.content) === 'function')) {\n this.clearTemplate(['content']);\n }\n this.clear();\n this.trigger('afterClose', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.calculateTooltipOffset = function (position, xScalingFactor, yScalingFactor) {\n if (xScalingFactor === void 0) { xScalingFactor = 1; }\n if (yScalingFactor === void 0) { yScalingFactor = 1; }\n var pos = { top: 0, left: 0 };\n var tipWidth, tipHeight, tooltipEleWidth, tooltipEleHeight, arrowEle;\n var tipAdjust, tipHeightAdjust, tipWidthAdjust;\n if (xScalingFactor != 1 || yScalingFactor != 1) {\n var tooltipEleRect = this.tooltipEle.getBoundingClientRect();\n var arrowEleRect = void 0;\n tooltipEleWidth = Math.round(tooltipEleRect.width);\n tooltipEleHeight = Math.round(tooltipEleRect.height);\n arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (arrowEle) {\n arrowEleRect = arrowEle.getBoundingClientRect();\n }\n tipWidth = arrowEle ? Math.round(arrowEleRect.width) : 0;\n tipHeight = arrowEle ? Math.round(arrowEleRect.height) : 0;\n tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (tooltipEleHeight - (this.tooltipEle.clientHeight * yScalingFactor));\n tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (tooltipEleWidth - (this.tooltipEle.clientWidth * xScalingFactor));\n }\n else {\n tooltipEleWidth = this.tooltipEle.offsetWidth;\n tooltipEleHeight = this.tooltipEle.offsetHeight;\n arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n tipWidth = arrowEle ? arrowEle.offsetWidth : 0;\n tipHeight = arrowEle ? arrowEle.offsetHeight : 0;\n tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (this.tooltipEle.offsetHeight - this.tooltipEle.clientHeight);\n tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (this.tooltipEle.offsetWidth - this.tooltipEle.clientWidth);\n }\n if (this.mouseTrail) {\n tipAdjust += MOUSE_TRAIL_GAP;\n }\n switch (position) {\n case 'RightTop':\n pos.left += tipWidth + tipAdjust;\n pos.top -= tooltipEleHeight - tipHeightAdjust;\n break;\n case 'RightCenter':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'RightBottom':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tipHeightAdjust);\n break;\n case 'BottomRight':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n case 'BottomCenter':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n case 'BottomLeft':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'LeftBottom':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tipHeightAdjust);\n break;\n case 'LeftCenter':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'LeftTop':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight - tipHeightAdjust);\n break;\n case 'TopLeft':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'TopRight':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n default:\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n }\n pos.left += this.offsetX;\n pos.top += this.offsetY;\n return pos;\n };\n Tooltip.prototype.updateTipPosition = function (position) {\n var selEle = selectAll('.' + ARROW_TIP + ',.' + ARROW_TIP_OUTER + ',.' + ARROW_TIP_INNER, this.tooltipEle);\n var removeList = [TIP_BOTTOM, TIP_TOP, TIP_LEFT, TIP_RIGHT];\n removeClass(selEle, removeList);\n this.setTipClass(position);\n addClass(selEle, this.tipClass);\n };\n Tooltip.prototype.adjustArrow = function (target, position, tooltipPositionX, tooltipPositionY) {\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (this.showTipPointer === false || arrowEle === null) {\n return;\n }\n this.updateTipPosition(position);\n var leftValue;\n var topValue;\n this.tooltipEle.style.display = 'block';\n var tooltipWidth = this.tooltipEle.clientWidth;\n var tooltipHeight = this.tooltipEle.clientHeight;\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n var tipWidth = arrowEle.offsetWidth;\n var tipHeight = arrowEle.offsetHeight;\n this.tooltipEle.style.display = '';\n if (this.tipClass === TIP_BOTTOM || this.tipClass === TIP_TOP) {\n if (this.tipClass === TIP_BOTTOM) {\n topValue = '99.9%';\n // Arrow icon aligned -2px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 2) + 'px';\n }\n else {\n topValue = -(tipHeight - 1) + 'px';\n // Arrow icon aligned -6px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 6) + 'px';\n }\n if (target) {\n var tipPosExclude = tooltipPositionX !== 'Center' || (tooltipWidth > target.offsetWidth) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionX === 'Left') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n leftValue = (tooltipWidth - tipWidth - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionX === 'Right') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n leftValue = POINTER_ADJUST + 'px';\n }\n else if ((tipPosExclude) && (this.tipPointerPosition === 'End' || this.tipPointerPosition === 'Start')) {\n leftValue = (this.tipPointerPosition === 'End') ? ((target.offsetWidth + ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2)) - (tipWidth / 2)) - POINTER_ADJUST + 'px'\n : ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2) - (tipWidth / 2) + POINTER_ADJUST + 'px';\n }\n else {\n leftValue = ((tooltipWidth / 2) - (tipWidth / 2)) + 'px';\n }\n }\n }\n else {\n if (this.tipClass === TIP_RIGHT) {\n leftValue = '99.9%';\n // Arrow icon aligned -2px left from ArrowOuterTip div\n arrowInnerELe.style.left = '-' + (tipWidth - 2) + 'px';\n }\n else {\n leftValue = -(tipWidth - 1) + 'px';\n // Arrow icon aligned -2px from ArrowOuterTip width\n arrowInnerELe.style.left = (-(tipWidth) + (tipWidth - 2)) + 'px';\n }\n var tipPosExclude = tooltipPositionY !== 'Center' || (tooltipHeight > target.offsetHeight) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionY === 'Top') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n topValue = (tooltipHeight - tipHeight - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionY === 'Bottom') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n topValue = POINTER_ADJUST + 'px';\n }\n else {\n topValue = ((tooltipHeight / 2) - (tipHeight / 2)) + 'px';\n }\n }\n arrowEle.style.top = topValue;\n arrowEle.style.left = leftValue;\n };\n Tooltip.prototype.renderContent = function (target) {\n var tooltipContent = select('.' + CONTENT, this.tooltipEle);\n if (this.cssClass) {\n addClass([this.tooltipEle], this.cssClass.split(' '));\n }\n if (target && !isNullOrUndefined(target.getAttribute('title'))) {\n target.setAttribute('data-content', target.getAttribute('title'));\n target.removeAttribute('title');\n }\n if (!isNullOrUndefined(this.content)) {\n tooltipContent.innerHTML = '';\n if (this.content instanceof HTMLElement) {\n tooltipContent.appendChild(this.content);\n }\n else if (typeof this.content === 'string') {\n if (this.enableHtmlSanitizer) {\n this.setProperties({ content: SanitizeHtmlHelper.sanitize(this.content) }, true);\n }\n if (this.enableHtmlParse) {\n var tempFunction = compile(this.content);\n var tempArr = tempFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent, this.root);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n }\n else {\n tooltipContent['textContent'] = this.content;\n }\n }\n else {\n var templateFunction = compile(this.content);\n var tempArr = templateFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n this.renderReactTemplates();\n }\n }\n else {\n if (target && !isNullOrUndefined(target.getAttribute('data-content'))) {\n tooltipContent.innerHTML = target.getAttribute('data-content');\n }\n }\n };\n Tooltip.prototype.renderCloseIcon = function () {\n if (!this.isSticky) {\n var existingCloseIcon = this.tooltipEle.querySelector('.' + ICON + '.' + CLOSE);\n if (existingCloseIcon) {\n remove(existingCloseIcon);\n }\n return;\n }\n var tipClose = this.createElement('div', { className: ICON + ' ' + CLOSE });\n this.tooltipEle.appendChild(tipClose);\n EventHandler.add(tipClose, Browser.touchStartEvent, this.onStickyClose, this);\n };\n Tooltip.prototype.addDescribedBy = function (target, id) {\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n if (describedby.indexOf(id) < 0) {\n describedby.push(id);\n }\n attributes(target, { 'aria-describedby': describedby.join(' ').trim(), 'data-tooltip-id': id });\n };\n Tooltip.prototype.removeDescribedBy = function (target) {\n var id = target.getAttribute('data-tooltip-id');\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n var index = describedby.indexOf(id);\n if (index !== -1) {\n describedby.splice(index, 1);\n }\n target.removeAttribute('data-tooltip-id');\n var orgdescribedby = describedby.join(' ').trim();\n if (orgdescribedby) {\n target.setAttribute('aria-describedby', orgdescribedby);\n }\n else {\n target.removeAttribute('aria-describedby');\n }\n };\n Tooltip.prototype.tapHoldHandler = function (evt) {\n clearTimeout(this.autoCloseTimer);\n this.targetHover(evt.originalEvent);\n };\n Tooltip.prototype.touchEndHandler = function (e) {\n var _this = this;\n if (this.isSticky) {\n return;\n }\n var close = function () {\n _this.close();\n };\n this.autoCloseTimer = setTimeout(close, TOUCHEND_HIDE_DELAY);\n };\n Tooltip.prototype.targetClick = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target)) {\n return;\n }\n if (target.getAttribute('data-tooltip-id') === null) {\n this.targetHover(e);\n }\n else if (!this.isSticky) {\n this.hideTooltip(this.animation.close, e, target);\n }\n };\n Tooltip.prototype.targetHover = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target) || (target.getAttribute('data-tooltip-id') !== null && this.closeDelay === 0)) {\n return;\n }\n var targetList = [].slice.call(selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document));\n for (var _i = 0, targetList_1 = targetList; _i < targetList_1.length; _i++) {\n var target_1 = targetList_1[_i];\n this.restoreElement(target_1);\n }\n this.showTooltip(target, this.animation.open, e);\n };\n Tooltip.prototype.mouseMoveBeforeOpen = function (e) {\n this.mouseMoveEvent = e;\n };\n Tooltip.prototype.mouseMoveBeforeRemove = function () {\n if (this.mouseMoveTarget) {\n EventHandler.remove(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen);\n }\n };\n Tooltip.prototype.showTooltip = function (target, showAnimation, e) {\n var _this = this;\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n if (this.openDelay && this.mouseTrail) {\n this.mouseMoveBeforeRemove();\n this.mouseMoveTarget = target;\n EventHandler.add(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen, this);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n var observeCallback = function (beforeRenderArgs) {\n _this.beforeRenderCallback(beforeRenderArgs, target, e, showAnimation);\n };\n this.trigger('beforeRender', this.tooltipEventArgs, observeCallback.bind(this));\n };\n Tooltip.prototype.beforeRenderCallback = function (beforeRenderArgs, target, e, showAnimation) {\n if (beforeRenderArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n }\n else {\n this.isHidden = false;\n if (isNullOrUndefined(this.tooltipEle)) {\n this.ctrlId = this.element.getAttribute('id') ?\n getUniqueID(this.element.getAttribute('id')) : getUniqueID('tooltip');\n this.tooltipEle = this.createElement('div', {\n className: TOOLTIP_WRAP + ' ' + POPUP_ROOT + ' ' + POPUP_LIB, attrs: {\n role: 'tooltip', 'aria-hidden': 'false', 'id': this.ctrlId + '_content'\n }, styles: 'width:' +\n formatUnit(this.width) + ';height:' + formatUnit(this.height) + ';position:absolute;'\n });\n this.tooltipBeforeRender(target, this);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n else {\n if (target) {\n this.adjustArrow(target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n this.addDescribedBy(target, this.ctrlId + '_content');\n this.renderContent(target);\n PopupAnimation.stop(this.tooltipEle);\n this.reposition(target);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n }\n }\n };\n Tooltip.prototype.appendContainer = function (ctrlObj) {\n if (typeof this.container == 'string') {\n if (this.container === 'body') {\n this.containerElement = document.body;\n }\n else {\n this.isBodyContainer = false;\n this.containerElement = select(this.container, document);\n }\n }\n else if (this.container instanceof HTMLElement) {\n this.containerElement = this.container;\n this.isBodyContainer = this.containerElement.tagName === 'BODY';\n }\n if (!this.isBodyContainer) {\n addClass([this.containerElement], POPUP_CONTAINER);\n }\n this.containerElement.appendChild(ctrlObj.tooltipEle);\n };\n Tooltip.prototype.tooltipBeforeRender = function (target, ctrlObj) {\n if (target) {\n if (Browser.isDevice) {\n addClass([ctrlObj.tooltipEle], DEVICE);\n }\n if (ctrlObj.width !== 'auto') {\n ctrlObj.tooltipEle.style.maxWidth = formatUnit(ctrlObj.width);\n }\n ctrlObj.tooltipEle.appendChild(ctrlObj.createElement('div', { className: CONTENT }));\n this.appendContainer(ctrlObj);\n removeClass([ctrlObj.tooltipEle], HIDE_POPUP);\n ctrlObj.addDescribedBy(target, ctrlObj.ctrlId + '_content');\n ctrlObj.renderContent(target);\n addClass([ctrlObj.tooltipEle], POPUP_OPEN);\n if (ctrlObj.showTipPointer) {\n ctrlObj.renderArrow();\n }\n ctrlObj.renderCloseIcon();\n ctrlObj.renderPopup(target);\n ctrlObj.adjustArrow(target, ctrlObj.position, ctrlObj.tooltipPositionX, ctrlObj.tooltipPositionY);\n PopupAnimation.stop(ctrlObj.tooltipEle);\n ctrlObj.reposition(target);\n }\n };\n Tooltip.prototype.tooltipAfterRender = function (target, e, showAnimation, ctrlObj) {\n if (target) {\n removeClass([ctrlObj.tooltipEle], POPUP_OPEN);\n addClass([ctrlObj.tooltipEle], POPUP_CLOSE);\n ctrlObj.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: ctrlObj.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n if (ctrlObj.needTemplateReposition() && !ctrlObj.mouseTrail) {\n ctrlObj.tooltipEle.style.display = 'none';\n }\n var observeCallback = function (observedArgs) {\n ctrlObj.beforeOpenCallback(observedArgs, target, showAnimation, e);\n };\n ctrlObj.trigger('beforeOpen', ctrlObj.tooltipEventArgs, observeCallback.bind(ctrlObj));\n }\n };\n Tooltip.prototype.beforeOpenCallback = function (observedArgs, target, showAnimation, e) {\n var _this = this;\n if (observedArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n this.restoreElement(target);\n }\n else {\n var openAnimation_1 = {\n name: (showAnimation.effect === 'None' && animationMode === 'Enable') ? 'FadeIn' : this.animation.open.effect,\n duration: showAnimation.duration,\n delay: showAnimation.delay,\n timingFunction: 'easeOut'\n };\n if (showAnimation.effect === 'None') {\n openAnimation_1 = undefined;\n }\n if (this.openDelay > 0) {\n var show = function () {\n if (_this.mouseTrail) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', _this.onMouseMove, _this);\n }\n if (_this.popupObj) {\n _this.popupObj.show(openAnimation_1, target);\n if (_this.mouseMoveEvent && _this.mouseTrail) {\n _this.onMouseMove(_this.mouseMoveEvent);\n }\n }\n };\n this.showTimer = setTimeout(show, this.openDelay);\n }\n else {\n if (this.popupObj) {\n this.popupObj.show(openAnimation_1, target);\n }\n }\n }\n if (e) {\n this.wireMouseEvents(e, target);\n }\n };\n Tooltip.prototype.needTemplateReposition = function () {\n // eslint-disable-next-line\n var tooltip = this;\n return !isNullOrUndefined(tooltip.viewContainerRef)\n && typeof tooltip.viewContainerRef !== 'string' || this.isReact;\n };\n Tooltip.prototype.checkCollision = function (target, x, y) {\n var elePos = {\n left: x, top: y, position: this.position,\n horizontal: this.tooltipPositionX, vertical: this.tooltipPositionY\n };\n var affectedPos = isCollide(this.tooltipEle, this.checkCollideTarget(), x, y);\n if (affectedPos.length > 0) {\n elePos.horizontal = affectedPos.indexOf('left') >= 0 ? 'Right' : affectedPos.indexOf('right') >= 0 ? 'Left' :\n this.tooltipPositionX;\n elePos.vertical = affectedPos.indexOf('top') >= 0 ? 'Bottom' : affectedPos.indexOf('bottom') >= 0 ? 'Top' :\n this.tooltipPositionY;\n }\n return elePos;\n };\n Tooltip.prototype.calculateElementPosition = function (pos, offsetPos) {\n return [this.isBodyContainer ? pos.left + offsetPos.left :\n (pos.left - this.containerElement.offsetLeft) + offsetPos.left + window.pageXOffset + this.containerElement.scrollLeft,\n this.isBodyContainer ? pos.top + offsetPos.top :\n (pos.top - this.containerElement.offsetTop) + offsetPos.top + window.pageYOffset + this.containerElement.scrollTop];\n };\n Tooltip.prototype.collisionFlipFit = function (target, x, y) {\n var elePos = this.checkCollision(target, x, y);\n var newpos = elePos.position;\n if (this.tooltipPositionY !== elePos.vertical) {\n newpos = ((this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + this.tooltipPositionX : this.tooltipPositionX + elePos.vertical);\n }\n if (this.tooltipPositionX !== elePos.horizontal) {\n if (newpos.indexOf('Left') === 0) {\n elePos.vertical = (newpos === 'LeftTop' || newpos === 'LeftCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Left');\n }\n if (newpos.indexOf('Right') === 0) {\n elePos.vertical = (newpos === 'RightTop' || newpos === 'RightCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Right');\n }\n elePos.horizontal = this.tooltipPositionX;\n }\n this.tooltipEventArgs = {\n type: null, cancel: false, target: target, event: null,\n element: this.tooltipEle, collidedPosition: newpos\n };\n this.trigger('beforeCollision', this.tooltipEventArgs);\n if (this.tooltipEventArgs.cancel) {\n newpos = this.position;\n }\n else {\n var elePosVertical = elePos.vertical;\n var elePosHorizontal = elePos.horizontal;\n if (elePos.position !== newpos) {\n var pos = calculatePosition(target, elePosHorizontal, elePosVertical, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n var scalingFactors = this.getScalingFactor(target);\n var offsetPos = this.calculateTooltipOffset(newpos, scalingFactors.x, scalingFactors.y);\n offsetPos.top -= this.getOffSetPosition('TopBottom', newpos, this.offsetY);\n offsetPos.left -= this.getOffSetPosition('RightLeft', newpos, this.offsetX);\n elePos.position = newpos;\n var elePosition = this.calculateElementPosition(pos, offsetPos);\n elePos.left = elePosition[0];\n elePos.top = elePosition[1];\n }\n else {\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n }\n }\n var eleOffset = { left: elePos.left, top: elePos.top };\n var position = fit(this.tooltipEle, this.checkCollideTarget(), { X: true, Y: this.windowCollision }, eleOffset);\n this.tooltipEle.style.display = 'block';\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (this.showTipPointer && arrowEle != null && (newpos.indexOf('Bottom') === 0 || newpos.indexOf('Top') === 0)) {\n var arrowleft = parseInt(arrowEle.style.left, 10) - (position.left - elePos.left);\n if (arrowleft < 0) {\n arrowleft = 0;\n }\n else if ((arrowleft + arrowEle.offsetWidth) > this.tooltipEle.clientWidth) {\n arrowleft = this.tooltipEle.clientWidth - arrowEle.offsetWidth;\n }\n arrowEle.style.left = arrowleft.toString() + 'px';\n }\n this.tooltipEle.style.display = '';\n eleOffset.left = position.left;\n eleOffset.top = position.top;\n return eleOffset;\n };\n Tooltip.prototype.getOffSetPosition = function (positionString, newPos, offsetType) {\n return ((positionString.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n (positionString.indexOf(newPos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * offsetType) : 0;\n };\n Tooltip.prototype.checkCollideTarget = function () {\n return !this.windowCollision && this.target ? this.element : null;\n };\n Tooltip.prototype.hideTooltip = function (hideAnimation, e, targetElement) {\n var _this = this;\n if (this.closeDelay > 0) {\n clearTimeout(this.hideTimer);\n clearTimeout(this.showTimer);\n var hide = function () {\n if (_this.closeDelay && _this.tooltipEle && _this.isTooltipOpen) {\n return;\n }\n _this.tooltipHide(hideAnimation, e, targetElement);\n };\n this.hideTimer = setTimeout(hide, this.closeDelay);\n }\n else {\n this.tooltipHide(hideAnimation, e, targetElement);\n }\n };\n Tooltip.prototype.tooltipHide = function (hideAnimation, e, targetElement) {\n var _this = this;\n var target;\n if (e) {\n target = this.target ? (targetElement || e.target) : this.element;\n }\n else {\n target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n // this line commented for close the tooltip popup element even the target element destroyed in a page.\n //if (isNullOrUndefined(target)) { return; }\n this.trigger('beforeClose', this.tooltipEventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.mouseMoveBeforeRemove();\n _this.popupHide(hideAnimation, target, e);\n }\n else {\n _this.isHidden = false;\n }\n });\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.popupHide = function (hideAnimation, target, e) {\n if (target && e) {\n this.restoreElement(target);\n }\n this.isHidden = true;\n var closeAnimation = {\n name: (hideAnimation.effect === 'None' && animationMode === 'Enable') ? 'FadeOut' : this.animation.close.effect,\n duration: hideAnimation.duration,\n delay: hideAnimation.delay,\n timingFunction: 'easeIn'\n };\n if (hideAnimation.effect === 'None') {\n closeAnimation = undefined;\n }\n if (this.popupObj) {\n this.popupObj.hide(closeAnimation);\n }\n };\n Tooltip.prototype.restoreElement = function (target) {\n this.unwireMouseEvents(target);\n if (!isNullOrUndefined(target.getAttribute('data-content'))) {\n target.setAttribute('title', target.getAttribute('data-content'));\n target.removeAttribute('data-content');\n }\n this.removeDescribedBy(target);\n };\n Tooltip.prototype.clear = function () {\n var target = this.findTarget();\n if (target) {\n this.restoreElement(target);\n }\n if (this.tooltipEle) {\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n }\n if (this.isHidden) {\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n this.tooltipEle = null;\n this.popupObj = null;\n }\n };\n Tooltip.prototype.tooltipHover = function (e) {\n if (this.tooltipEle) {\n this.isTooltipOpen = true;\n }\n };\n Tooltip.prototype.tooltipMouseOut = function (e) {\n this.isTooltipOpen = false;\n this.hideTooltip(this.animation.close, e, this.findTarget());\n };\n Tooltip.prototype.onMouseOut = function (e) {\n var enteredElement = e.relatedTarget;\n // don't close the tooltip only if it is tooltip content element\n if (enteredElement && !this.mouseTrail) {\n var checkForTooltipElement = closest(enteredElement, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT);\n if (checkForTooltipElement) {\n EventHandler.add(checkForTooltipElement, 'mouseleave', this.tooltipElementMouseOut, this);\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n if (this.closeDelay === 0) {\n this.clear();\n }\n }\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n this.clear();\n }\n };\n Tooltip.prototype.tooltipElementMouseOut = function (e) {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n EventHandler.remove(this.element, 'mouseleave', this.tooltipElementMouseOut);\n this.clear();\n };\n Tooltip.prototype.onStickyClose = function (e) {\n this.close();\n };\n Tooltip.prototype.onMouseMove = function (event) {\n var eventPageX = 0;\n var eventPageY = 0;\n if (event.type.indexOf('touch') > -1) {\n event.preventDefault();\n eventPageX = event.touches[0].pageX;\n eventPageY = event.touches[0].pageY;\n }\n else {\n eventPageX = event.pageX;\n eventPageY = event.pageY;\n }\n PopupAnimation.stop(this.tooltipEle);\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n this.adjustArrow(event.target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n var scalingFactors = this.getScalingFactor(event.target);\n var pos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var x = eventPageX + pos.left + this.offsetX;\n var y = eventPageY + pos.top + this.offsetY;\n var elePos = this.checkCollision(event.target, x, y);\n if (this.tooltipPositionX !== elePos.horizontal || this.tooltipPositionY !== elePos.vertical) {\n var newpos = (this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + elePos.horizontal : elePos.horizontal + elePos.vertical;\n elePos.position = newpos;\n this.adjustArrow(event.target, elePos.position, elePos.horizontal, elePos.vertical);\n var colpos = this.calculateTooltipOffset(elePos.position, scalingFactors.x, scalingFactors.y);\n elePos.left = eventPageX + colpos.left - this.offsetX;\n elePos.top = eventPageY + colpos.top - this.offsetY;\n }\n this.tooltipEle.style.left = elePos.left + 'px';\n this.tooltipEle.style.top = elePos.top + 'px';\n };\n Tooltip.prototype.keyDown = function (event) {\n if (this.tooltipEle && event.keyCode === 27) {\n this.close();\n }\n };\n Tooltip.prototype.touchEnd = function (e) {\n if (this.tooltipEle && closest(e.target, '.' + ROOT) === null && !this.isSticky) {\n this.close();\n }\n };\n Tooltip.prototype.scrollHandler = function (e) {\n if (this.tooltipEle && !this.isSticky) {\n if (!(closest(e.target, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT))\n && !this.isSticky) {\n this.close();\n }\n }\n };\n /**\n * Core method that initializes the control rendering.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.render = function () {\n this.initialize();\n this.wireEvents(this.opensOn);\n this.renderComplete();\n };\n /**\n * Initializes the values of private members.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.preRender = function () {\n this.tipClass = TIP_BOTTOM;\n this.tooltipPositionX = 'Center';\n this.tooltipPositionY = 'Top';\n this.isHidden = true;\n };\n /**\n * Binding events to the Tooltip element.\n *\n * @hidden\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.wireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_1 = triggerList; _i < triggerList_1.length; _i++) {\n var opensOn = triggerList_1[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.wireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.add(this.element, Browser.touchStartEvent, this.targetClick, this);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n this.touchModule = new Touch(this.element, {\n tapHoldThreshold: TAPHOLD_THRESHOLD,\n tapHold: this.tapHoldHandler.bind(this)\n });\n EventHandler.add(this.element, Browser.touchEndEvent, this.touchEndHandler, this);\n }\n else {\n EventHandler.add(this.element, 'mouseover', this.targetHover, this);\n }\n }\n }\n EventHandler.add(document, 'touchend', this.touchEnd, this);\n EventHandler.add(document, 'scroll wheel', this.scrollHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(document, 'keydown', this.keyDown, this);\n };\n Tooltip.prototype.getTriggerList = function (trigger) {\n if (trigger === 'Auto') {\n trigger = (Browser.isDevice) ? 'Hover' : 'Hover Focus';\n }\n return trigger.split(' ');\n };\n Tooltip.prototype.wireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n this.targetsList = targetList;\n for (var _i = 0, targetList_2 = targetList; _i < targetList_2.length; _i++) {\n var target = targetList_2[_i];\n EventHandler.add(target, 'focus', this.targetHover, this);\n }\n }\n else {\n EventHandler.add(this.element, 'focusin', this.targetHover, this);\n }\n };\n Tooltip.prototype.wireMouseEvents = function (e, target) {\n if (this.tooltipEle) {\n if (!this.isSticky) {\n if (e.type === 'focus') {\n EventHandler.add(target, 'blur', this.onMouseOut, this);\n }\n if (e.type === 'focusin') {\n EventHandler.add(target, 'focusout', this.onMouseOut, this);\n }\n if (e.type === 'mouseover') {\n EventHandler.add(target, 'mouseleave', this.onMouseOut, this);\n }\n if (this.closeDelay) {\n EventHandler.add(this.tooltipEle, 'mouseenter', this.tooltipHover, this);\n EventHandler.add(this.tooltipEle, 'mouseleave', this.tooltipMouseOut, this);\n }\n }\n if (this.mouseTrail && this.openDelay === 0) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', this.onMouseMove, this);\n }\n }\n };\n /**\n * Unbinding events from the element on widget destroy.\n *\n * @hidden\n *\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.unwireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_2 = triggerList; _i < triggerList_2.length; _i++) {\n var opensOn = triggerList_2[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.unwireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.targetClick);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n EventHandler.remove(this.element, Browser.touchEndEvent, this.touchEndHandler);\n }\n else {\n EventHandler.remove(this.element, 'mouseover', this.targetHover);\n }\n }\n }\n EventHandler.remove(document, 'touchend', this.touchEnd);\n EventHandler.remove(document, 'scroll wheel', this.scrollHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n EventHandler.remove(document, 'keydown', this.keyDown);\n };\n Tooltip.prototype.unwireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n for (var _i = 0, targetList_3 = targetList; _i < targetList_3.length; _i++) {\n var target = targetList_3[_i];\n EventHandler.remove(target, 'focus', this.targetHover);\n }\n }\n else {\n EventHandler.remove(this.element, 'focusin', this.targetHover);\n }\n };\n Tooltip.prototype.unwireMouseEvents = function (target) {\n if (!this.isSticky) {\n var triggerList = this.getTriggerList(this.opensOn);\n for (var _i = 0, triggerList_3 = triggerList; _i < triggerList_3.length; _i++) {\n var opensOn = triggerList_3[_i];\n if (opensOn === 'Focus') {\n EventHandler.remove(target, 'blur', this.onMouseOut);\n EventHandler.remove(target, 'focusout', this.onMouseOut);\n }\n if (opensOn === 'Hover' && !Browser.isDevice) {\n EventHandler.remove(target, 'mouseleave', this.onMouseOut);\n }\n }\n if (this.closeDelay) {\n EventHandler.remove(target, 'mouseenter', this.tooltipHover);\n EventHandler.remove(target, 'mouseleave', this.tooltipMouseOut);\n }\n }\n if (this.mouseTrail) {\n EventHandler.remove(target, 'mousemove touchstart mouseenter', this.onMouseMove);\n }\n };\n Tooltip.prototype.findTarget = function () {\n var target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n return target;\n };\n /**\n * Core method to return the component name.\n *\n * @private\n *\n * @returns {string} - this method returns module name.\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * Returns the properties to be maintained in the persisted state.\n *\n * @private\n *\n * @returns {string} - this method returns persisted data.\n */\n Tooltip.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Called internally, if any of the property value changed.\n *\n * @private\n *\n * @param {TooltipModel} newProp - this param gives new property values to the method\n * @param {TooltipModel} oldProp - this param gives old property values to the method\n * @returns {void}\n *\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n var targetElement = this.findTarget();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.width = this.tooltipEle.style.maxWidth = formatUnit(newProp.width);\n this.reposition(targetElement);\n }\n break;\n case 'height':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.height = formatUnit(newProp.height);\n this.reposition(targetElement);\n }\n break;\n case 'content':\n if (this.tooltipEle) {\n this.renderContent();\n }\n break;\n case 'opensOn':\n this.unwireEvents(oldProp.opensOn);\n this.wireEvents(newProp.opensOn);\n break;\n case 'position':\n this.formatPosition();\n if (this.tooltipEle && targetElement) {\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n if (arrowInnerELe) {\n arrowInnerELe.style.top = arrowInnerELe.style.left = null;\n }\n this.reposition(targetElement);\n }\n break;\n case 'tipPointerPosition':\n if (this.tooltipEle && targetElement) {\n this.reposition(targetElement);\n }\n break;\n case 'offsetX':\n if (this.tooltipEle) {\n var x = newProp.offsetX - oldProp.offsetX;\n this.tooltipEle.style.left = (parseInt(this.tooltipEle.style.left, 10) + (x)).toString() + 'px';\n }\n break;\n case 'offsetY':\n if (this.tooltipEle) {\n var y = newProp.offsetY - oldProp.offsetY;\n this.tooltipEle.style.top = (parseInt(this.tooltipEle.style.top, 10) + (y)).toString() + 'px';\n }\n break;\n case 'cssClass':\n if (this.tooltipEle) {\n if (oldProp.cssClass) {\n removeClass([this.tooltipEle], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.tooltipEle], newProp.cssClass.split(' '));\n }\n }\n break;\n case 'enableRtl':\n if (this.tooltipEle) {\n if (this.enableRtl) {\n addClass([this.tooltipEle], RTL);\n }\n else {\n removeClass([this.tooltipEle], RTL);\n }\n }\n break;\n case 'isSticky':\n if (this.tooltipEle && targetElement) {\n this.renderCloseIcon();\n this.reposition(targetElement);\n }\n break;\n case 'container':\n if (!isNullOrUndefined(this.containerElement)) {\n removeClass([this.containerElement], POPUP_CONTAINER);\n }\n this.container = newProp.container;\n if (this.tooltipEle && targetElement) {\n this.appendContainer(this);\n this.reposition(targetElement);\n }\n }\n }\n };\n /**\n * It is used to show the Tooltip on the specified target with specific animation settings.\n *\n * @param {HTMLElement} element - Target element where the Tooltip is to be displayed. (It is an optional parameter)\n * @param {TooltipAnimationSettings} animation - Sets the specific animation, while showing the Tooltip on the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.open = function (element, animation) {\n if (isNullOrUndefined(animation)) {\n animation = this.animation.open;\n }\n if (isNullOrUndefined(element)) {\n element = this.element;\n }\n if (element.style.display === 'none') {\n return;\n }\n this.showTooltip(element, animation);\n };\n /**\n * It is used to hide the Tooltip with specific animation effect.\n *\n * @param {TooltipAnimationSettings} animation - Sets the specific animation when hiding Tooltip from the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.close = function (animation) {\n if (!animation) {\n animation = this.animation.close;\n }\n this.hideTooltip(animation);\n };\n /**\n * It is used to refresh the Tooltip content and its position.\n *\n * @param {HTMLElement} target - Target element where the Tooltip content or position needs to be refreshed.\n * @returns {void}\n */\n Tooltip.prototype.refresh = function (target) {\n if (this.tooltipEle) {\n this.renderContent(target);\n }\n if (this.popupObj && target) {\n this.reposition(target);\n }\n if (!isNullOrUndefined(this.targetsList) && !isNullOrUndefined(this.target)) {\n var target_2 = selectAll(this.target, this.element);\n if (target_2.length !== this.targetsList.length) {\n this.unwireEvents(this.opensOn);\n this.wireEvents(this.opensOn);\n }\n }\n };\n /**\n * It is used to destroy the Tooltip component.\n * @method destroy\n * @returns {void}\n * @memberof Tooltip\n */\n Tooltip.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n collisionDestroy();\n removeClass([this.element], ROOT);\n this.unwireEvents(this.opensOn);\n this.unwireMouseEvents(this.element);\n this.tooltipEle = null;\n this.popupObj = null;\n var currentTarget = selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', this.element);\n for (var _i = 0, currentTarget_1 = currentTarget; _i < currentTarget_1.length; _i++) {\n var target = currentTarget_1[_i];\n this.restoreElement(target);\n }\n };\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"height\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property('body')\n ], Tooltip.prototype, \"container\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"target\", void 0);\n __decorate([\n Property('TopCenter')\n ], Tooltip.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetY\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"showTipPointer\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableHtmlParse\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"windowCollision\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"tipPointerPosition\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"opensOn\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"mouseTrail\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isSticky\", void 0);\n __decorate([\n Complex({}, Animation)\n ], Tooltip.prototype, \"animation\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"openDelay\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"closeDelay\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeCollision\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"destroyed\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * React Component Base\n */\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { extend, isNullOrUndefined, setValue, getValue, isObject, onIntlChange } from '@syncfusion/ej2-base';\nvar defaulthtmlkeys = ['alt', 'className', 'disabled', 'form', 'id',\n 'readOnly', 'style', 'tabIndex', 'title', 'type', 'name',\n 'onClick', 'onFocus', 'onBlur'];\nvar delayUpdate = ['accordion', 'tab', 'splitter'];\nvar isColEName = /\\]/;\n// tslint:disable\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar ComponentBase = /** @class */ (function (_super) {\n __extends(ComponentBase, _super);\n function ComponentBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.mountingState = false;\n _this.attrKeys = [];\n _this.cachedTimeOut = 0;\n _this.isAppendCalled = false;\n _this.initRenderCalled = false;\n _this.isReactForeceUpdate = false;\n _this.isReact = true;\n _this.isshouldComponentUpdateCalled = false;\n _this.isCreated = false;\n return _this;\n }\n // Lifecycle methods are changed by React team and so we can deprecate this method and use\n // Reference link:https://reactjs.org/docs/react-component.html#unsafe_componentWillMount\n // tslint:disable-next-line:no-any\n ComponentBase.prototype.componentDidMount = function () {\n this.refreshChild(true);\n this.canDelayUpdate = delayUpdate.indexOf(this.getModuleName()) !== -1;\n // Used timeout to resolve template binding\n // Reference link: https://github.com/facebook/react/issues/10309#issuecomment-318433235\n // tslint:disable-next-line:no-any\n this.renderReactComponent();\n if (this.portals && this.portals.length) {\n this.mountingState = true;\n this.renderReactTemplates();\n this.mountingState = false;\n }\n };\n ComponentBase.prototype.componentDidUpdate = function (prev) {\n if (!this.isshouldComponentUpdateCalled && this.initRenderCalled && !this.isReactForeceUpdate) {\n if (prev !== this.props) {\n this.isshouldComponentUpdateCalled = true;\n this.updateProperties(this.props, false, prev);\n }\n }\n };\n ComponentBase.prototype.renderReactComponent = function () {\n var ele = this.reactElement;\n if (ele && !this.isAppendCalled) {\n this.isAppendCalled = true;\n this.appendTo(ele);\n }\n };\n // Lifecycle methods are changed by React team and so we can deprecate this method and use\n // Reference link:https://reactjs.org/docs/react-component.html#unsafe_componentwillreceiveprops\n // tslint:disable-next-line:no-any\n /**\n * @param {Object} nextProps - Specifies the property value.\n * @returns {boolean} - Returns boolean value.\n * @private\n */\n ComponentBase.prototype.shouldComponentUpdate = function (nextProps) {\n this.isshouldComponentUpdateCalled = true;\n if (!this.initRenderCalled) {\n this.updateProperties(nextProps, true);\n return true;\n }\n if (!this.isAppendCalled) {\n clearTimeout(this.cachedTimeOut);\n this.isAppendCalled = true;\n this.appendTo(this.reactElement);\n }\n this.updateProperties(nextProps);\n return true;\n };\n ComponentBase.prototype.updateProperties = function (nextProps, silent, prev) {\n var _this = this;\n var dProps = extend({}, nextProps);\n var keys = Object.keys(nextProps);\n var prevProps = extend({}, prev || this.props);\n // The statelessTemplates props value is taken from sample level property or default component property.\n var statelessTemplates = !isNullOrUndefined(prevProps['statelessTemplates']) ? prevProps['statelessTemplates'] :\n (!isNullOrUndefined(this['statelessTemplateProps']) ? this['statelessTemplateProps'] : []);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var propkey = keys_1[_i];\n var isClassName = propkey === 'className';\n if (propkey === 'children') {\n continue;\n }\n if (!isClassName && !isNullOrUndefined(this.htmlattributes[\"\" + propkey]) &&\n this.htmlattributes[\"\" + propkey] !== dProps[\"\" + propkey]) {\n this.htmlattributes[\"\" + propkey] = dProps[\"\" + propkey];\n }\n if (this.compareValues(prevProps[\"\" + propkey], nextProps[\"\" + propkey])) {\n delete dProps[\"\" + propkey];\n }\n else if (this.attrKeys.indexOf(propkey) !== -1) {\n if (isClassName) {\n this.clsName = true;\n var propsClsName = prevProps[\"\" + propkey].split(' ');\n for (var i = 0; i < propsClsName.length; i++) {\n this.element.classList.remove(propsClsName[parseInt(i.toString(), 10)]);\n }\n var dpropsClsName = dProps[\"\" + propkey].split(' ');\n for (var j = 0; j < dpropsClsName.length; j++) {\n this.element.classList.add(dpropsClsName[parseInt(j.toString(), 10)]);\n }\n }\n else if (propkey !== 'disabled' && !Object.prototype.hasOwnProperty.call(this.properties, propkey)) {\n delete dProps[\"\" + propkey];\n }\n }\n else if (propkey === 'value' && nextProps[\"\" + propkey] === this[\"\" + propkey]) {\n delete dProps[\"\" + propkey];\n }\n else if (statelessTemplates.indexOf(propkey) > -1 && ((propkey === 'content' && typeof dProps[\"\" + propkey] === 'function') || (nextProps[\"\" + propkey].toString() === this[\"\" + propkey].toString()))) {\n delete dProps[\"\" + propkey];\n }\n }\n if (dProps['children']) {\n delete dProps['children'];\n }\n // tslint:disable-next-line:no-any\n if (this.initRenderCalled && (this.canDelayUpdate || prevProps.delayUpdate)) {\n setTimeout(function () {\n _this.refreshProperties(dProps, nextProps, silent);\n });\n }\n else {\n this.refreshProperties(dProps, nextProps, silent);\n }\n };\n ComponentBase.prototype.refreshProperties = function (dProps, nextProps, silent) {\n var statelessTemplates = !isNullOrUndefined(this.props['statelessTemplates']) ? this.props['statelessTemplates'] : [];\n if (Object.keys(dProps).length) {\n if (!silent) {\n // tslint:disable-next-line:no-any\n this.processComplexTemplate(dProps, this);\n }\n this.setProperties(dProps, silent);\n }\n if (statelessTemplates.indexOf('directiveTemplates') === -1) {\n this.refreshChild(silent, nextProps);\n }\n };\n ComponentBase.prototype.processComplexTemplate = function (curObject, context) {\n var compTemplate = context.complexTemplate;\n if (compTemplate) {\n // eslint-disable-next-line\n for (var prop in compTemplate) {\n var PropVal = compTemplate[\"\" + prop];\n if (curObject[\"\" + prop]) {\n setValue(PropVal, getValue(prop, curObject), curObject);\n }\n }\n }\n };\n ComponentBase.prototype.getDefaultAttributes = function () {\n var _this = this;\n this.isReact = true;\n var propKeys = Object.keys(this.props);\n //let stringValue: string[] = ['autocomplete', 'dropdownlist', 'combobox'];\n var ignoreProps = ['children', 'statelessTemplates', 'immediateRender', 'isLegacyTemplate', 'delayUpdate'];\n // if ((stringValue.indexOf(this.getModuleName()) !== -1) && (!isNullOrUndefined(this.props[\"value\"]))) {\n // this.value = (<{ [key: string]: Object }>this.props)[\"value\"];\n // }\n if (!this.htmlattributes) {\n this.htmlattributes = {};\n }\n this.attrKeys = defaulthtmlkeys.concat(this.controlAttributes || []);\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var prop = propKeys_1[_i];\n if (prop.indexOf('data-') !== -1 || prop.indexOf('aria-') !== -1 || this.attrKeys.indexOf(prop) !== -1 || (Object.keys(this.properties).indexOf(\"\" + prop) === -1 && ignoreProps.indexOf(\"\" + prop) === -1)) {\n if (this.htmlattributes[\"\" + prop] !== this.props[\"\" + prop]) {\n this.htmlattributes[\"\" + prop] = this.props[\"\" + prop];\n }\n }\n }\n if (!this.htmlattributes.ref) {\n /* tslint:disable:no-any */\n this.htmlattributes.ref = function (ele) {\n _this.reactElement = ele;\n };\n var keycompoentns = ['autocomplete', 'combobox', 'dropdownlist', 'dropdowntree', 'multiselect',\n 'listbox', 'colorpicker', 'numerictextbox', 'textbox',\n 'uploader', 'maskedtextbox', 'slider', 'datepicker', 'datetimepicker', 'daterangepicker', 'timepicker', 'checkbox', 'switch', 'radio', 'rating'];\n if (keycompoentns.indexOf(this.getModuleName()) !== -1) {\n this.htmlattributes.key = '' + ComponentBase.reactUid;\n ComponentBase.reactUid++;\n if (this.type && !this.htmlattributes['type']) {\n this.htmlattributes['type'] = this.multiline ? 'hidden' : this.type;\n }\n if (this.name && !this.htmlattributes['name']) {\n this.htmlattributes['name'] = this.name;\n }\n }\n }\n if (this.clsName) {\n var clsList = this.element.classList;\n var className = this.htmlattributes['className'];\n for (var i = 0; i < clsList.length; i++) {\n if ((className.indexOf(clsList[parseInt(i.toString(), 10)]) === -1)) {\n this.htmlattributes['className'] = this.htmlattributes['className'] + ' ' + clsList[parseInt(i.toString(), 10)];\n }\n }\n }\n return this.htmlattributes;\n };\n /* tslint:disable:no-any */\n // eslint-disable-next-line\n ComponentBase.prototype.trigger = function (eventName, eventProp, successHandler) {\n var _this = this;\n if (this.isDestroyed !== true && this.modelObserver) {\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n if ((eventName === 'change' || eventName === 'input')) {\n if (this.props.onChange && eventProp.event) {\n this.props.onChange.call(undefined, {\n syntheticEvent: eventProp.event,\n nativeEvent: { text: eventProp.value },\n value: eventProp.value,\n target: this\n });\n }\n }\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n if (eventName === 'created') {\n setTimeout(function () {\n _this.isCreated = true;\n if (!_this.isDestroyed) {\n _this.modelObserver.notify(eventName, eventProp, successHandler);\n }\n }, 10);\n }\n else {\n this.modelObserver.notify(eventName, eventProp, successHandler);\n }\n this.isProtectedOnChange = prevDetection;\n }\n };\n ComponentBase.prototype.compareValues = function (value1, value2) {\n var typeVal = typeof value1;\n var typeVal2 = typeof value2;\n if (typeVal === typeVal2) {\n if (value1 === value2) {\n return true;\n }\n if ((!isNullOrUndefined(value1) && value1.constructor) !== (!isNullOrUndefined(value2) && value2.constructor)) {\n return false;\n }\n if (value1 instanceof Date ||\n value1 instanceof RegExp ||\n value1 instanceof String ||\n value1 instanceof Number) {\n return value1.toString() === value2.toString();\n }\n if (isObject(value1) || Array.isArray(value1)) {\n var tempVal = value1;\n var tempVal2 = value2;\n if (isObject(tempVal)) {\n tempVal = [value1];\n tempVal2 = [value2];\n }\n return this.compareObjects(tempVal, tempVal2).status;\n }\n if (value1.constructor &&\n value1.constructor.name === value2.constructor.name &&\n (value1.constructor.name === 'Query' ||\n value1.constructor.name === 'DataManager')) {\n if (JSON.stringify(value1) === JSON.stringify(value2)) {\n return true;\n }\n }\n }\n return false;\n };\n // eslint-disable-next-line\n ComponentBase.prototype.compareObjects = function (oldProps, newProps, propName) {\n var status = true;\n var lenSimilarity = (oldProps.length === newProps.length);\n var diffArray = [];\n var templateProps = !isNullOrUndefined(this['templateProps']) ? this['templateProps'] : [];\n if (lenSimilarity) {\n for (var i = 0, len = newProps.length; i < len; i++) {\n var curObj = {};\n var oldProp = oldProps[parseInt(i.toString(), 10)];\n var newProp = newProps[parseInt(i.toString(), 10)];\n var keys = Object.keys(newProp);\n if (keys.length !== 0) {\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n var oldValue = oldProp[\"\" + key];\n var newValue = newProp[\"\" + key];\n if (key === 'items') {\n for (var _j = 0; _j < newValue.length; _j++) {\n if (this.getModuleName() === 'richtexteditor' && typeof (newValue[parseInt(_j.toString(), 10)]) === 'object') {\n return { status: true };\n }\n }\n }\n if (this.getModuleName() === 'grid' && key === 'field') {\n curObj[\"\" + key] = newValue;\n }\n if (!Object.prototype.hasOwnProperty.call(oldProp, key) || !((templateProps.length > 0 && templateProps.indexOf(\"\" + key) === -1 && typeof (newValue) === 'function') ? this.compareValues(oldValue.toString(), newValue.toString()) : this.compareValues(oldValue, newValue))) {\n if (!propName) {\n return { status: false };\n }\n status = false;\n curObj[\"\" + key] = newValue;\n }\n }\n }\n else if (newProps[parseInt(i.toString(), 10)] === oldProps[parseInt(i.toString(), 10)]) {\n status = true;\n }\n else {\n if (!propName) {\n return { status: false };\n }\n status = false;\n }\n if (this.getModuleName() === 'grid' && propName === 'columns' && isNullOrUndefined(curObj['field'])) {\n curObj['field'] = undefined;\n }\n if (Object.keys(curObj).length) {\n diffArray.push({ index: i, value: curObj, key: propName });\n }\n }\n }\n else {\n status = false;\n }\n return { status: status, changedProperties: diffArray };\n };\n ComponentBase.prototype.refreshChild = function (silent, props) {\n if (this.checkInjectedModules) {\n var prevModule = this.getInjectedModules() || [];\n var curModule = this.getInjectedServices() || [];\n for (var _i = 0, curModule_1 = curModule; _i < curModule_1.length; _i++) {\n var mod = curModule_1[_i];\n if (prevModule.indexOf(mod) === -1) {\n prevModule.push(mod);\n }\n }\n this.injectedModules = prevModule;\n }\n if (this.directivekeys) {\n var changedProps = [];\n var key = '';\n var directiveValue = this.validateChildren({}, this.directivekeys, (props || this.props));\n if (directiveValue && Object.keys(directiveValue).length) {\n if (!silent && this.skipRefresh) {\n for (var _a = 0, _b = this.skipRefresh; _a < _b.length; _a++) {\n var fields = _b[_a];\n delete directiveValue[\"\" + fields];\n }\n }\n if (this.prevProperties) {\n var dKeys = Object.keys(this.prevProperties);\n for (var i = 0; i < dKeys.length; i++) {\n key = dKeys[parseInt(i.toString(), 10)];\n if (!Object.prototype.hasOwnProperty.call(directiveValue, key)) {\n continue;\n }\n var compareOutput = this.compareObjects(this.prevProperties[\"\" + key], directiveValue[\"\" + key], key);\n if (compareOutput.status) {\n delete directiveValue[\"\" + key];\n }\n else {\n if (compareOutput.changedProperties.length) {\n changedProps = changedProps.concat(compareOutput.changedProperties);\n }\n var obj = {};\n obj[\"\" + key] = directiveValue[\"\" + key];\n this.prevProperties = extend(this.prevProperties, obj);\n }\n }\n }\n else {\n this.prevProperties = extend({}, directiveValue, {}, true);\n }\n if (changedProps.length) {\n if (this.getModuleName() === 'grid' && key === 'columns') {\n for (var _c1 = 0, allColumns = this.columns; _c1 < allColumns.length; _c1++) {\n var compareField1 = getValue('field', allColumns[parseInt(_c1.toString(), 10)]);\n var compareField2 = getValue(_c1 + '.value.field', changedProps);\n if (compareField1 === compareField2) {\n var propInstance = getValue(changedProps[parseInt(_c1.toString(), 10)].key + '.' + changedProps[parseInt(_c1.toString(), 10)].index, this);\n if (propInstance && propInstance.setProperties) {\n propInstance.setProperties(changedProps[parseInt(_c1.toString(), 10)].value);\n }\n else {\n extend(propInstance, changedProps[parseInt(_c1.toString(), 10)].value);\n }\n }\n else {\n this.setProperties(directiveValue, silent);\n }\n }\n }\n else {\n for (var _c = 0, changedProps_1 = changedProps; _c < changedProps_1.length; _c++) {\n var changes = changedProps_1[_c];\n var propInstance = getValue(changes.key + '.' + changes.index, this);\n if (propInstance && propInstance.setProperties) {\n propInstance.setProperties(changes.value);\n }\n else {\n extend(propInstance, changes.value);\n }\n }\n }\n }\n else {\n this.setProperties(directiveValue, silent);\n }\n }\n }\n };\n ComponentBase.prototype.componentWillUnmount = function () {\n clearTimeout(this.cachedTimeOut);\n var modulesName = ['dropdowntree', 'checkbox'];\n var hasModule = ((!modulesName.indexOf(this.getModuleName())) ? document.body.contains(this.element) : true);\n // tslint:disable-next-line:no-any\n if (this.initRenderCalled && this.isAppendCalled && this.element && hasModule && !this.isDestroyed && this.isCreated) {\n this.destroy();\n }\n onIntlChange.offIntlEvents();\n };\n // tslint:disable:no-any\n // eslint-disable-next-line\n ComponentBase.prototype.appendReactElement = function (element, container) {\n var portal = ReactDOM.createPortal(element, container);\n if (!this.portals) {\n this.portals = [portal];\n }\n else {\n this.portals.push(portal);\n }\n };\n // tslint:disable:no-any\n // eslint-disable-next-line\n ComponentBase.prototype.renderReactTemplates = function (callback) {\n this.isReactForeceUpdate = true;\n if (callback) {\n this.forceUpdate(callback);\n }\n else {\n this.forceUpdate();\n }\n this.isReactForeceUpdate = false;\n };\n // tslint:disable:no-any\n // eslint-disable-next-line\n ComponentBase.prototype.clearTemplate = function (templateNames, index, callback) {\n var _this = this;\n var tempPortal = [];\n if (templateNames && templateNames.length) {\n Array.prototype.forEach.call(templateNames, function (propName) {\n var propIndexCount = 0;\n _this.portals.forEach(function (portal) {\n if (portal.propName === propName) {\n tempPortal.push(propIndexCount);\n propIndexCount++;\n }\n });\n if (!isNullOrUndefined(index) && _this.portals[index] && _this.portals[index].propName === propName) {\n _this.portals.splice(index, 1);\n }\n else {\n for (var i = 0; i < _this.portals.length; i++) {\n if (_this.portals[parseInt(i.toString(), 10)].propName === propName) {\n _this.portals.splice(i, 1);\n i--;\n }\n }\n }\n });\n }\n else {\n this.portals = [];\n }\n this.renderReactTemplates(callback);\n };\n /* tslint:disable:no-any */\n ComponentBase.prototype.validateChildren = function (childCache, mapper, props) {\n var flag = false;\n var childs = React.Children.toArray(props.children);\n for (var _i = 0, childs_1 = childs; _i < childs_1.length; _i++) {\n var child = childs_1[_i];\n var ifield = this.getChildType(child);\n var key = mapper[\"\" + ifield];\n if (ifield && mapper) {\n // tslint:disable\n var childProps = this.getChildProps(React.Children.toArray(child.props.children), key);\n if (childProps.length) {\n flag = true;\n // tslint:disable\n childCache[child.type.propertyName || ifield] = childProps;\n }\n }\n }\n if (flag) {\n return childCache;\n }\n return null;\n };\n // tslint:disable:no-any\n ComponentBase.prototype.getChildType = function (child) {\n if (child.type && child.type.isDirective) {\n return child.type.moduleName || '';\n }\n return '';\n };\n ComponentBase.prototype.getChildProps = function (subChild, matcher) {\n var ret = [];\n for (var _i = 0, subChild_1 = subChild; _i < subChild_1.length; _i++) {\n var child = subChild_1[_i];\n var accessProp = false;\n var key = void 0;\n if (typeof matcher === 'string') {\n accessProp = true;\n key = matcher;\n }\n else {\n key = Object.keys(matcher)[0];\n }\n var prop = child.props;\n // tslint:disable-next-line:no-any\n var field = this.getChildType(child);\n if (field === key) {\n if (accessProp || !prop.children) {\n // tslint:disable\n var cacheVal = extend({}, prop, {}, true);\n // tslint:disable\n this.processComplexTemplate(cacheVal, child.type);\n ret.push(cacheVal);\n }\n else {\n var cachedValue = this.validateChildren(extend({}, prop), matcher[\"\" + key], prop) || prop;\n if (cachedValue['children']) {\n delete cachedValue['children'];\n }\n // tslint:disable\n this.processComplexTemplate(cachedValue, child.type);\n ret.push(cachedValue);\n }\n }\n }\n return ret;\n };\n // tslint:disable:no-any\n ComponentBase.prototype.getInjectedServices = function () {\n var childs = React.Children.toArray(this.props.children);\n for (var _i = 0, childs_2 = childs; _i < childs_2.length; _i++) {\n var child = childs_2[_i];\n /* tslint:disable:no-any */\n if (child.type && child.type.isService) {\n return child.props.services;\n }\n }\n return [];\n };\n /**\n * @private\n */\n ComponentBase.reactUid = 1;\n return ComponentBase;\n}(React.Component));\nexport { ComponentBase };\n/* tslint:enable:no-any */\n","// eslint-disable-next-line\nexport function applyMixins(derivedClass, baseClass) {\n // tslint:disable:typedef\n baseClass.forEach(function (baseClass) {\n Object.getOwnPropertyNames(baseClass.prototype).forEach(function (name) {\n if (name !== 'isMounted' && name !== 'replaceState' && name !== 'render') {\n derivedClass.prototype[\"\" + name] = baseClass.prototype[\"\" + name];\n }\n });\n });\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\n/**\n * Directory base\n */\nvar ComplexBase = /** @class */ (function (_super) {\n __extends(ComplexBase, _super);\n function ComplexBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ComplexBase.prototype.render = function () {\n return null;\n };\n ComplexBase.isDirective = true;\n return ComplexBase;\n}(React.PureComponent));\nexport { ComplexBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Dependency injection\n */\nimport * as React from 'react';\nvar Inject = /** @class */ (function (_super) {\n __extends(Inject, _super);\n function Inject() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // eslint-disable-next-line\n Inject.prototype.render = function () {\n return null;\n };\n Inject.isService = true;\n return Inject;\n}(React.PureComponent));\nexport { Inject };\n","/**\n * Template compiler for react\n */\nimport { setTemplateEngine, getTemplateEngine, extend } from '@syncfusion/ej2-base';\nimport * as ReactDOM from 'react-dom';\nimport * as React from 'react';\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar stringCompiler = getTemplateEngine();\n// eslint-disable-next-line\nexport function compile(templateElement, helper) {\n if (typeof templateElement === 'string' || (templateElement.prototype && templateElement.prototype.CSPTemplate && typeof templateElement === 'function')) {\n return stringCompiler(templateElement, helper);\n }\n else {\n return function (data, component, prop, element) {\n var actTemplate = templateElement;\n var actData = data;\n if (typeof actTemplate === 'object') {\n actTemplate = templateElement.template;\n actData = extend({}, data, templateElement.data || {});\n }\n var cEle;\n if (element) {\n cEle = element;\n }\n else {\n cEle = document.createElement('div');\n }\n var rele = React.createElement(actTemplate, actData);\n var portal = ReactDOM.createPortal(rele, cEle);\n portal.propName = prop;\n if (!component.portals) {\n component.portals = [portal];\n }\n else {\n component.portals.push(portal);\n }\n if (!element) {\n return [cEle];\n }\n };\n }\n}\nsetTemplateEngine({ compile: compile });\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `ButtonComponent` represents the react Button Component.\n * ```ts\n * \n * ```\n */\nvar ButtonComponent = /** @class */ (function (_super) {\n __extends(ButtonComponent, _super);\n function ButtonComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n ButtonComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('button', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return ButtonComponent;\n}(Button));\nexport { ButtonComponent };\napplyMixins(ButtonComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { 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 = true;\n _this.statelessTemplateProps = [\"headerTemplate\", \"valueTemplate\", \"itemTemplate\"];\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n DropDownListComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return DropDownListComponent;\n}(DropDownList));\nexport { DropDownListComponent };\napplyMixins(DropDownListComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React TextBox Component\n * ```html\n * \n * ```\n */\nvar TextBoxComponent = /** @class */ (function (_super) {\n __extends(TextBoxComponent, _super);\n function TextBoxComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n TextBoxComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return TextBoxComponent;\n}(TextBox));\nexport { TextBoxComponent };\napplyMixins(TextBoxComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React Dialog Component\n * ```html\n * \n * ```\n */\nvar DialogComponent = /** @class */ (function (_super) {\n __extends(DialogComponent, _super);\n function DialogComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = { 'buttons': 'dialogButton' };\n _this.statelessTemplateProps = [\"content\"];\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n DialogComponent.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 DialogComponent;\n}(Dialog));\nexport { DialogComponent };\napplyMixins(DialogComponent, [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 { Tooltip } from '@syncfusion/ej2-popups';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React Tooltip component that displays a piece of information about the target element on mouse hover.\n * ```html\n * Show Tooltip\n * ```\n */\nvar TooltipComponent = /** @class */ (function (_super) {\n __extends(TooltipComponent, _super);\n function TooltipComponent(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 = false;\n _this.portals = [];\n return _this;\n }\n TooltipComponent.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 TooltipComponent;\n}(Tooltip));\nexport { TooltipComponent };\napplyMixins(TooltipComponent, [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, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { addClass, getUniqueID, rippleEffect, getComponent } from '@syncfusion/ej2-base';\nimport { attributes, Component, closest, select, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { classList, removeClass } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { upDownKeyHandler } from './../common/common';\nimport { getModel, Item, setBlankIconStyle } from './../common/common';\nvar classNames = {\n DISABLED: 'e-disabled',\n FOCUS: 'e-focused',\n ICON: 'e-menu-icon',\n ITEM: 'e-item',\n POPUP: 'e-dropdown-popup',\n RTL: 'e-rtl',\n SEPARATOR: 'e-separator',\n VERTICAL: 'e-vertical'\n};\n/**\n * DropDownButton component is used to toggle contextual overlays for displaying list of action items.\n * It can contain both text and images.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DropDownButton = /** @class */ (function (_super) {\n __extends(DropDownButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DropDownButtonModel} options - Specifies dropdown button model\n * @param {string|HTMLButtonElement} element - Specifies element\n * @hidden\n */\n function DropDownButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isPopupCreated = true;\n return _this;\n }\n DropDownButton.prototype.preRender = function () {\n /** */\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n DropDownButton.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @returns {void}\n */\n DropDownButton.prototype.toggle = function () {\n if (this.canOpen()) {\n this.openPopUp();\n }\n else if (this.createPopupOnClick && !this.isPopupCreated) {\n this.createPopup();\n this.openPopUp();\n }\n else {\n this.closePopup();\n }\n };\n /**\n * Initialize the Component rendering\n *\n * @returns {void}\n * @private\n */\n DropDownButton.prototype.render = function () {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n };\n /**\n * Adds a new item to the menu. By default, new item appends to the list as the last item,\n * but you can insert based on the text parameter.\n *\n * @param { ItemModel[] } items - Specifies an array of JSON data.\n * @param { string } text - Specifies the text to insert the newly added item in the menu.\n * @returns {void}.\n */\n DropDownButton.prototype.addItems = function (items, text) {\n var newItem;\n var idx = this.items.length;\n for (var j = 0, len = this.items.length; j < len; j++) {\n if (text === this.items[j].text) {\n idx = j;\n break;\n }\n }\n for (var i = items.length - 1; i >= 0; i--) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newItem = new Item(this, 'items', items[i], true);\n this.items.splice(idx, 0, newItem);\n }\n if (!this.canOpen()) {\n this.createItems();\n }\n };\n /**\n * Removes the items from the menu.\n *\n * @param { string[] } items - Specifies an array of string to remove the items.\n * @param { string } isUniqueId - Set `true` if specified items is a collection of unique id.\n * @returns {void}.\n */\n DropDownButton.prototype.removeItems = function (items, isUniqueId) {\n var refresh = false;\n for (var i = 0, len = items.length; i < len; i++) {\n for (var j = 0, len_1 = this.items.length; j < len_1; j++) {\n if (items[i] === (isUniqueId ? this.items[j].id : this.items[j].text)) {\n this.items.splice(j, 1);\n refresh = true;\n break;\n }\n }\n }\n if (refresh && this.getULElement()) {\n this.createItems();\n }\n };\n DropDownButton.prototype.createPopup = function () {\n var _a;\n var div = this.createElement('div', {\n className: classNames.POPUP,\n id: this.element.id + '-popup'\n });\n document.body.appendChild(div);\n this.dropDown = new Popup(div, {\n relateTo: this.element,\n collision: { X: 'fit', Y: 'flip' },\n position: { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n content: this.target ? this.getTargetElement() : '',\n enableRtl: this.enableRtl\n });\n this.dropDown.element.setAttribute('role', 'dialog');\n this.dropDown.element.setAttribute('aria-label', 'dropdown menu');\n if (!isNullOrUndefined(this.popupContent)) {\n this.popupContent.style.display = '';\n }\n if (this.dropDown.element.style.position === 'fixed') {\n this.dropDown.refreshPosition(this.element);\n }\n this.dropDown.hide();\n attributes(this.element, (_a = {},\n _a['aria-haspopup'] = this.items.length || this.target ? 'true' : 'false',\n _a['aria-expanded'] = 'false',\n _a['type'] = 'button',\n _a));\n if (this.cssClass) {\n addClass([div], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.isPopupCreated = true;\n };\n DropDownButton.prototype.getTargetElement = function () {\n if (this.createPopupOnClick && !this.isColorPicker() && !isNullOrUndefined(this.popupContent)) {\n return this.popupContent;\n }\n return typeof (this.target) === 'string' ? select(this.target) : this.target;\n };\n DropDownButton.prototype.createItems = function (appendItems) {\n var items = this.items;\n var showIcon = this.hasIcon(this.items, 'iconCss');\n var span;\n var item;\n var li;\n var eventArgs;\n var ul = this.getULElement();\n if (ul) {\n ul.innerHTML = '';\n }\n else {\n ul = this.createElement('ul', {\n attrs: { 'role': 'menu', 'tabindex': '0' }\n });\n }\n for (var i = 0; i < items.length; i++) {\n item = items[i];\n var tempItem = item.text;\n li = this.createElement('li', {\n innerHTML: item.url ? '' : tempItem,\n className: item.separator ? classNames.ITEM + ' ' + classNames.SEPARATOR : classNames.ITEM,\n attrs: item.separator ? { 'role': 'separator', 'tabindex': '-1', 'aria-label': 'separator', 'aria-hidden': 'true' } : { 'role': 'menuitem', 'tabindex': '-1', 'aria-label': tempItem },\n id: item.id ? item.id : getUniqueID('e-' + this.getModuleName() + '-item')\n });\n if (this.enableHtmlSanitizer) {\n li.textContent = item.url ? '' : tempItem;\n }\n else {\n li.innerHTML = item.url ? '' : tempItem;\n }\n if (item.url) {\n li.appendChild(this.createAnchor(item));\n li.classList.add('e-url');\n }\n if (item.iconCss) {\n span = this.createElement('span', { className: classNames.ICON + ' ' + item.iconCss });\n if (item.url) {\n li.childNodes[0].appendChild(span);\n }\n else {\n li.insertBefore(span, li.childNodes[0]);\n }\n }\n else {\n if (showIcon && !item.separator) {\n li.classList.add('e-blank-icon');\n }\n }\n var beforeDisabled = item.disabled;\n if (item.disabled) {\n li.classList.add('e-disabled');\n }\n eventArgs = { item: item, element: li };\n this.trigger('beforeItemRender', eventArgs);\n var afterDisabled = eventArgs.item.disabled;\n if (beforeDisabled !== afterDisabled) {\n if (eventArgs.item.disabled) {\n li.classList.add('e-disabled');\n }\n else {\n li.classList.remove('e-disabled');\n }\n }\n ul.appendChild(li);\n }\n if (appendItems) {\n this.getPopUpElement().appendChild(ul);\n }\n if (showIcon) {\n setBlankIconStyle(this.getPopUpElement());\n }\n };\n DropDownButton.prototype.hasIcon = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][\"\" + field]) {\n return true;\n }\n }\n return false;\n };\n DropDownButton.prototype.createAnchor = function (item) {\n var tempItem = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(item.text) : item.text;\n return this.createElement('a', { className: 'e-menu-text e-menu-url', innerHTML: tempItem, attrs: { 'href': item.url } });\n };\n DropDownButton.prototype.initialize = function () {\n this.button = new Button({\n iconCss: this.iconCss, iconPosition: this.iconPosition, cssClass: this.cssClass, content: this.content,\n disabled: this.disabled, enableRtl: this.enableRtl, enablePersistence: this.enablePersistence\n });\n this.button.createElement = this.createElement;\n this.button.appendTo(this.element);\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.appendArrowSpan();\n this.setActiveElem([this.element]);\n this.element.setAttribute('tabindex', '0');\n this.element.setAttribute('aria-label', this.element.textContent ? this.element.textContent : 'dropdownbutton');\n if ((this.target && !this.isColorPicker() && !this.createPopupOnClick) || !this.createPopupOnClick) {\n this.createPopup();\n }\n else {\n this.isPopupCreated = false;\n if (this.target && !this.isColorPicker() && this.createPopupOnClick) {\n this.popupContent = this.getTargetElement();\n this.popupContent.style.display = 'none';\n }\n }\n };\n DropDownButton.prototype.isColorPicker = function () {\n if (!this.element) {\n return false;\n }\n var prevElem = this.element.previousSibling;\n if (prevElem && prevElem.classList && prevElem.classList.contains('e-split-colorpicker')) {\n return true;\n }\n return false;\n };\n DropDownButton.prototype.appendArrowSpan = function () {\n this.element.appendChild(this.createElement('span', {\n className: 'e-btn-icon e-icons ' + 'e-icon-' + (this.cssClass.indexOf(classNames.VERTICAL) > -1\n ? 'bottom' : 'right') + ' e-caret'\n }));\n };\n DropDownButton.prototype.setActiveElem = function (elem) {\n this.activeElem = elem;\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n DropDownButton.prototype.getModuleName = function () {\n return 'dropdown-btn';\n };\n DropDownButton.prototype.canOpen = function () {\n var val = false;\n if (this.isPopupCreated) {\n val = this.getPopUpElement().classList.contains('e-popup-close');\n }\n return val;\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n DropDownButton.prototype.destroy = function () {\n var _this = this;\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'dropdown-btn') {\n var classList_1;\n if (this.element.querySelector('span.e-caret')) {\n detach(this.element.querySelector('span.e-caret'));\n }\n if (this.cssClass) {\n classList_1 = this.cssClass.split(' ');\n }\n this.button.destroy();\n if (classList_1) {\n removeClass([this.element], classList_1);\n }\n removeClass(this.activeElem, ['e-active']);\n var attrList = this.element.getAttribute('class') ? ['aria-haspopup', 'aria-expanded', 'aria-owns', 'type']\n : ['aria-haspopup', 'aria-expanded', 'aria-owns', 'type', 'class'];\n attrList.forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n this.popupUnWireEvents();\n this.destroyPopup();\n this.isPopupCreated = false;\n if (!this.disabled) {\n this.unWireEvents();\n }\n }\n };\n DropDownButton.prototype.destroyPopup = function () {\n if (this.isPopupCreated) {\n this.dropDown.destroy();\n if (this.getPopUpElement()) {\n var popupEle = document.getElementById(this.getPopUpElement().id);\n if (popupEle) {\n removeClass([popupEle], ['e-popup-open', 'e-popup-close']);\n detach(popupEle);\n }\n }\n EventHandler.remove(this.getPopUpElement(), 'click', this.clickHandler);\n EventHandler.remove(this.getPopUpElement(), 'keydown', this.keyBoardHandler);\n if (this.isPopupCreated && this.dropDown) {\n this.dropDown.element = null;\n this.dropDown = undefined;\n }\n }\n this.isPopupCreated = false;\n };\n DropDownButton.prototype.getPopUpElement = function () {\n var val = null;\n if (!this.dropDown && this.activeElem[0].classList.contains('e-split-btn')) {\n var dropDownBtn = getComponent(this.activeElem[1], 'dropdown-btn');\n if (dropDownBtn) {\n this.dropDown = dropDownBtn.dropDown;\n }\n }\n if (this.dropDown) {\n val = this.dropDown.element;\n }\n return val;\n };\n DropDownButton.prototype.getULElement = function () {\n var val = null;\n if (this.getPopUpElement()) {\n val = this.getPopUpElement().children[0];\n }\n return val;\n };\n DropDownButton.prototype.wireEvents = function () {\n this.delegateMousedownHandler = this.mousedownHandler.bind(this);\n if (!this.createPopupOnClick) {\n EventHandler.add(document, 'mousedown touchstart', this.delegateMousedownHandler, this);\n }\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyBoardHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n };\n DropDownButton.prototype.windowResize = function () {\n if (!this.canOpen() && this.dropDown) {\n this.dropDown.refreshPosition(this.element);\n }\n };\n DropDownButton.prototype.popupWireEvents = function () {\n if (!this.delegateMousedownHandler) {\n this.delegateMousedownHandler = this.mousedownHandler.bind(this);\n }\n var popupElement = this.getPopUpElement();\n if (this.createPopupOnClick) {\n EventHandler.add(document, 'mousedown touchstart', this.delegateMousedownHandler, this);\n }\n if (popupElement) {\n EventHandler.add(popupElement, 'click', this.clickHandler, this);\n EventHandler.add(popupElement, 'keydown', this.keyBoardHandler, this);\n if (this.closeActionEvents) {\n EventHandler.add(popupElement, this.closeActionEvents, this.focusoutHandler, this);\n }\n }\n this.rippleFn = rippleEffect(popupElement, { selector: '.' + classNames.ITEM });\n };\n DropDownButton.prototype.popupUnWireEvents = function () {\n var popupElement = this.getPopUpElement();\n if (this.createPopupOnClick) {\n EventHandler.remove(document, 'mousedown touchstart', this.delegateMousedownHandler);\n }\n if (popupElement && popupElement.parentElement) {\n EventHandler.remove(popupElement, 'click', this.clickHandler);\n EventHandler.remove(popupElement, 'keydown', this.keyBoardHandler);\n if (this.closeActionEvents) {\n EventHandler.remove(popupElement, this.closeActionEvents, this.focusoutHandler);\n }\n }\n if (isRippleEnabled && this.rippleFn) {\n this.rippleFn();\n }\n };\n /**\n * Handles the keyboard interactions.\n *\n * @param {KeyboardEventArgs} e - Specifies keyboard event args.\n * @returns {void}\n * @hidden\n */\n DropDownButton.prototype.keyBoardHandler = function (e) {\n if (e.target === this.element && (e.keyCode === 9 || (!e.altKey && e.keyCode === 40) || e.keyCode === 38)) {\n return;\n }\n switch (e.keyCode) {\n case 38:\n case 40:\n if (e.altKey && (e.keyCode === 38 || e.keyCode === 40)) {\n this.keyEventHandler(e);\n }\n else {\n this.upDownKeyHandler(e);\n }\n break;\n case 9:\n case 13:\n case 27:\n case 32:\n this.keyEventHandler(e);\n break;\n }\n };\n DropDownButton.prototype.upDownKeyHandler = function (e) {\n if (this.target && (e.keyCode === 38 || e.keyCode === 40)) {\n return;\n }\n e.preventDefault();\n upDownKeyHandler(this.getULElement(), e.keyCode);\n };\n DropDownButton.prototype.keyEventHandler = function (e) {\n if (this.target && (e.keyCode === 13 || e.keyCode === 9)) {\n return;\n }\n if (e.keyCode === 13 && this.activeElem[0].classList.contains('e-split-btn')) {\n this.triggerSelect(e);\n this.activeElem[0].focus();\n return;\n }\n if (e.target && e.target.className.indexOf('e-edit-template') > -1 && e.keyCode === 32) {\n return;\n }\n if (e.keyCode !== 9) {\n e.preventDefault();\n }\n if (e.keyCode === 27 || e.keyCode === 38 || e.keyCode === 9) {\n if (!this.canOpen()) {\n this.closePopup(e, this.element);\n }\n }\n else {\n this.clickHandler(e);\n }\n };\n DropDownButton.prototype.getLI = function (elem) {\n return elem.tagName === 'LI' ? elem : closest(elem, 'li');\n };\n DropDownButton.prototype.mousedownHandler = function (e) {\n var trgt = e.target;\n if (this.dropDown && !this.canOpen() && !(closest(trgt, '[id=\"' + this.getPopUpElement().id + '\"]')\n || closest(trgt, '[id=\"' + this.element.id + '\"]'))) {\n this.closePopup(e);\n }\n };\n DropDownButton.prototype.focusoutHandler = function (e) {\n if (this.isPopupCreated && !this.canOpen()) {\n var liTarget = e.relatedTarget;\n if (liTarget && liTarget.className.indexOf('e-item') > -1) {\n var li = this.getLI(liTarget);\n if (li) {\n var liIdx = Array.prototype.indexOf.call(this.getULElement().children, li);\n var item = this.items[liIdx];\n if (item) {\n var selectEventArgs = { element: li, item: item, event: e };\n this.trigger('select', selectEventArgs);\n }\n }\n }\n this.closePopup(e);\n }\n };\n DropDownButton.prototype.clickHandler = function (e) {\n var trgt = e.target;\n if (closest(trgt, '[id=\"' + this.element.id + '\"]')) {\n if (!this.createPopupOnClick || (this.target && this.target !== '' && !this.isColorPicker() && !this.createPopupOnClick)) {\n if (this.getPopUpElement().classList.contains('e-popup-close')) {\n this.openPopUp(e);\n }\n else {\n this.closePopup(e);\n }\n }\n else if (this.isPopupCreated) {\n this.closePopup(e, this.activeElem[0]);\n }\n else {\n this.createPopup();\n this.openPopUp(e);\n }\n }\n else {\n if (closest(trgt, '[id=\"' + this.getPopUpElement().id + '\"]')) {\n var li = this.getLI(e.target);\n if (li) {\n this.triggerSelect(e);\n this.closePopup(e, this.activeElem[0]);\n }\n }\n }\n };\n DropDownButton.prototype.triggerSelect = function (e) {\n var eventArgs;\n var liIdx;\n var item;\n var li = this.getLI(e.target);\n if (li) {\n liIdx = Array.prototype.indexOf.call(this.getULElement().children, li);\n item = this.items[liIdx];\n if (item) {\n eventArgs = { element: li, item: item, event: e };\n this.trigger('select', eventArgs);\n }\n }\n };\n DropDownButton.prototype.openPopUp = function (e) {\n var _this = this;\n if (e === void 0) { e = null; }\n var isReact = false;\n var popupElem = this.getPopUpElement();\n if (!this.target) {\n this.createItems(true);\n }\n else {\n if (this.activeElem.length > 1) {\n var splitButton = getComponent(this.activeElem[0], 'split-btn');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (splitButton.isReact && popupElem.childNodes.length < 1) {\n isReact = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n splitButton.appendReactElement(this.getTargetElement(), this.getPopUpElement());\n this.renderReactTemplates();\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && popupElem.childNodes.length < 1) {\n isReact = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.appendReactElement(this.getTargetElement(), this.getPopUpElement());\n this.renderReactTemplates();\n }\n }\n }\n var ul = this.getULElement();\n this.popupWireEvents();\n var beforeOpenArgs = { element: ul, items: this.items, event: e, cancel: false };\n this.trigger('beforeOpen', beforeOpenArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var ul_1 = _this.getULElement();\n _this.dropDown.show(null, _this.element);\n addClass([_this.element], 'e-active');\n _this.element.setAttribute('aria-expanded', 'true');\n _this.element.setAttribute('aria-owns', _this.getPopUpElement().id);\n if (ul_1) {\n ul_1.focus();\n }\n if (_this.enableRtl && ul_1.parentElement.style.left !== '0px') {\n var wrapperWidth = void 0;\n if (_this.element.parentElement && _this.element.parentElement.classList.contains('e-split-btn-wrapper')) {\n wrapperWidth = _this.element.parentElement.offsetWidth;\n }\n else {\n wrapperWidth = _this.element.offsetWidth;\n }\n var popupRect = ul_1.parentElement.offsetWidth - wrapperWidth;\n var popupLeft = parseFloat(ul_1.parentElement.style.left) - popupRect;\n if (popupLeft < 0) {\n popupLeft = 0;\n }\n ul_1.parentElement.style.left = popupLeft + \"px\";\n }\n var openArgs = { element: ul_1, items: _this.items };\n _this.trigger('open', openArgs);\n }\n });\n };\n DropDownButton.prototype.closePopup = function (e, focusEle) {\n var _this = this;\n if (e === void 0) { e = null; }\n var ul = this.getULElement();\n var beforeCloseArgs = { element: ul, items: this.items, event: e, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var popupElement = _this.getPopUpElement();\n if (popupElement) {\n EventHandler.remove(popupElement, 'keydown', _this.keyBoardHandler);\n }\n _this.popupUnWireEvents();\n var ul_2 = _this.getULElement();\n var selectedLi = void 0;\n if (ul_2) {\n selectedLi = ul_2.querySelector('.e-selected');\n }\n if (selectedLi) {\n selectedLi.classList.remove('e-selected');\n }\n _this.dropDown.hide();\n removeClass(_this.activeElem, 'e-active');\n _this.element.setAttribute('aria-expanded', 'false');\n _this.element.removeAttribute('aria-owns');\n if (focusEle) {\n focusEle.focus();\n }\n var closeArgs = { element: ul_2, items: _this.items };\n _this.trigger('close', closeArgs);\n if (!_this.target && ul_2) {\n detach(ul_2);\n }\n if (!_this.target || _this.isColorPicker() || (_this.target && !_this.isColorPicker())) {\n if (_this.createPopupOnClick) {\n _this.destroyPopup();\n }\n }\n }\n else {\n if (ul) {\n ul.focus();\n }\n }\n });\n };\n DropDownButton.prototype.unWireEvents = function () {\n if (!this.createPopupOnClick) {\n EventHandler.remove(document, 'mousedown touchstart', this.delegateMousedownHandler);\n }\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keydown', this.keyBoardHandler);\n if (this.isPopupCreated) {\n EventHandler.remove(this.getPopUpElement(), 'click', this.clickHandler);\n EventHandler.remove(this.getPopUpElement(), 'keydown', this.keyBoardHandler);\n }\n EventHandler.remove(window, 'resize', this.windowResize);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DropDownButtonModel} newProp - Specifies new properties\n * @param {DropDownButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n DropDownButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var btnModel = ['content', 'cssClass', 'iconCss', 'iconPosition', 'disabled', 'enableRtl'];\n this.button.setProperties(getModel(newProp, btnModel));\n var popupElement;\n if (this.isPopupCreated) {\n popupElement = this.getPopUpElement();\n this.dropDown.setProperties(getModel(newProp, ['enableRtl']));\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (!this.element.querySelector('span.e-caret')) {\n this.appendArrowSpan();\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.unWireEvents();\n if (this.isPopupCreated && !this.canOpen()) {\n this.closePopup();\n }\n }\n else {\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (newProp.cssClass.indexOf(classNames.VERTICAL) > -1 || oldProp.cssClass.indexOf(classNames.VERTICAL) > -1) {\n if (!this.element.querySelector('span.e-caret')) {\n this.appendArrowSpan();\n }\n var arrowSpan = this.element.querySelector('span.e-caret');\n newProp.cssClass.indexOf(classNames.VERTICAL) > -1 ? classList(arrowSpan, ['e-icon-bottom'], ['e-icon-right'])\n : classList(arrowSpan, ['e-icon-right'], ['e-icon-bottom']);\n }\n if (this.isPopupCreated) {\n if (oldProp.cssClass) {\n removeClass([popupElement], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([popupElement], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n }\n break;\n case 'target':\n this.dropDown.content = this.getTargetElement();\n this.dropDown.dataBind();\n break;\n case 'items':\n if (this.isPopupCreated && this.getULElement()) {\n this.createItems();\n }\n break;\n case 'createPopupOnClick':\n if (newProp.createPopupOnClick) {\n this.destroyPopup();\n }\n else {\n this.createPopup();\n }\n break;\n }\n }\n };\n /**\n * Sets the focus to DropDownButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n DropDownButton.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], DropDownButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property('Left')\n ], DropDownButton.prototype, \"iconPosition\", void 0);\n __decorate([\n Property(true)\n ], DropDownButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Collection([], Item)\n ], DropDownButton.prototype, \"items\", void 0);\n __decorate([\n Property(false)\n ], DropDownButton.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"created\", void 0);\n DropDownButton = __decorate([\n NotifyPropertyChanges\n ], DropDownButton);\n return DropDownButton;\n}(Component));\nexport { DropDownButton };\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3;\n\nfunction isModifiedEvent(event: LimitedMouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport function shouldProcessLinkClick(\n event: LimitedMouseEvent,\n target?: string\n) {\n return (\n event.button === 0 && // Ignore everything but left clicks\n (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n );\n}\n\nexport type ParamKeyValuePair = [string, string];\n\nexport type URLSearchParamsInit =\n | string\n | ParamKeyValuePair[]\n | Record\n | URLSearchParams;\n\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nexport function createSearchParams(\n init: URLSearchParamsInit = \"\"\n): URLSearchParams {\n return new URLSearchParams(\n typeof init === \"string\" ||\n Array.isArray(init) ||\n init instanceof URLSearchParams\n ? init\n : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(\n Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n );\n }, [] as ParamKeyValuePair[])\n );\n}\n\nexport function getSearchParamsForLocation(\n locationSearch: string,\n defaultSearchParams: URLSearchParams | null\n) {\n let searchParams = createSearchParams(locationSearch);\n\n if (defaultSearchParams) {\n // Use `defaultSearchParams.forEach(...)` here instead of iterating of\n // `defaultSearchParams.keys()` to work-around a bug in Firefox related to\n // web extensions. Relevant Bugzilla tickets:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1414602\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1023984\n defaultSearchParams.forEach((_, key) => {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n });\n }\n\n return searchParams;\n}\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\nexport type SubmitTarget =\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | JsonValue\n | null;\n\n// One-time check for submitter support\nlet _formDataSupportsSubmitter: boolean | null = null;\n\nfunction isFormDataSubmitterSupported() {\n if (_formDataSupportsSubmitter === null) {\n try {\n new FormData(\n document.createElement(\"form\"),\n // @ts-expect-error if FormData supports the submitter parameter, this will throw\n 0\n );\n _formDataSupportsSubmitter = false;\n } catch (e) {\n _formDataSupportsSubmitter = true;\n }\n }\n return _formDataSupportsSubmitter;\n}\n\nexport interface SubmitOptions {\n /**\n * The HTTP method used to submit the form. Overrides `
    `.\n * Defaults to \"GET\".\n */\n method?: HTMLFormMethod;\n\n /**\n * The action URL path used to submit the form. Overrides ``.\n * Defaults to the path of the current route.\n */\n action?: string;\n\n /**\n * The encoding used to submit the form. Overrides ``.\n * Defaults to \"application/x-www-form-urlencoded\".\n */\n encType?: FormEncType;\n\n /**\n * Indicate a specific fetcherKey to use when using navigate=false\n */\n fetcherKey?: string;\n\n /**\n * navigate=false will use a fetcher instead of a navigation\n */\n navigate?: boolean;\n\n /**\n * Set `true` to replace the current entry in the browser's history stack\n * instead of creating a new one (i.e. stay on \"the same page\"). Defaults\n * to `false`.\n */\n replace?: boolean;\n\n /**\n * State object to add to the history stack entry for this navigation\n */\n state?: any;\n\n /**\n * Determines whether the form action is relative to the route hierarchy or\n * the pathname. Use this if you want to opt out of navigating the route\n * hierarchy and want to instead route based on /-delimited URL segments\n */\n relative?: RelativeRoutingType;\n\n /**\n * In browser-based environments, prevent resetting scroll after this\n * navigation when using the component\n */\n preventScrollReset?: boolean;\n\n /**\n * Enable flushSync for this navigation's state updates\n */\n unstable_flushSync?: boolean;\n\n /**\n * Enable view transitions on this submission navigation\n */\n unstable_viewTransition?: boolean;\n}\n\nconst supportedFormEncTypes: Set = new Set([\n \"application/x-www-form-urlencoded\",\n \"multipart/form-data\",\n \"text/plain\",\n]);\n\nfunction getFormEncType(encType: string | null) {\n if (encType != null && !supportedFormEncTypes.has(encType as FormEncType)) {\n warning(\n false,\n `\"${encType}\" is not a valid \\`encType\\` for \\`\\`/\\`\\` ` +\n `and will default to \"${defaultEncType}\"`\n );\n\n return null;\n }\n return encType;\n}\n\nexport function getFormSubmissionInfo(\n target: SubmitTarget,\n basename: string\n): {\n action: string | null;\n method: string;\n encType: string;\n formData: FormData | undefined;\n body: any;\n} {\n let method: string;\n let action: string | null;\n let encType: string;\n let formData: FormData | undefined;\n let body: any;\n\n if (isFormElement(target)) {\n // When grabbing the action from the element, it will have had the basename\n // prefixed to ensure non-JS scenarios work, so strip it since we'll\n // re-prefix in the router\n let attr = target.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n method = target.getAttribute(\"method\") || defaultMethod;\n encType = getFormEncType(target.getAttribute(\"enctype\")) || defaultEncType;\n\n formData = new FormData(target);\n } else if (\n isButtonElement(target) ||\n (isInputElement(target) &&\n (target.type === \"submit\" || target.type === \"image\"))\n ) {\n let form = target.form;\n\n if (form == null) {\n throw new Error(\n `Cannot submit a